{"version":3,"sources":["webpack:///./VueApp/common/components/dropdown/DropdownItem.vue?9dcd","webpack:///VueApp/common/components/dropdown/DropdownItem.vue","webpack:///./VueApp/common/components/dropdown/DropdownItem.vue?e798","webpack:///./VueApp/common/components/dropdown/DropdownItem.vue","webpack:///./node_modules/bootstrap-vue/esm/constants/events.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/bootstrap-vue/esm/utils/config-set.js","webpack:///./node_modules/bootstrap-vue/esm/utils/plugins.js","webpack:///./VueApp/common/components/dropdown/DropdownItem.vue?4ea4","webpack:///./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/constants/popper.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item-button.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-divider.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-form.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/scrollspy/scrollspy.class.js","webpack:///./node_modules/bootstrap-vue/esm/directives/scrollspy/scrollspy.js","webpack:///./node_modules/bootstrap-vue/esm/directives/scrollspy/index.js","webpack:///./node_modules/bootstrap-vue/esm/directives/modal/modal.js","webpack:///./node_modules/bootstrap-vue/esm/components/modal/index.js","webpack:///./node_modules/bootstrap-vue/esm/utils/warn.js","webpack:///./node_modules/bootstrap-vue/esm/utils/html.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/id.js","webpack:///./node_modules/bootstrap-vue/esm/utils/math.js","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./VueApp/common/utils/util.js","webpack:///./VueApp/common/api/eshop/shopping/basket.js","webpack:///./VueApp/common/api/eshop/ordering/payments.js","webpack:///./VueApp/common/api/eshop/ordering/shipping.js","webpack:///./VueApp/cart/store/cartModule.js","webpack:///./VueApp/common/store/index.js","webpack:///./node_modules/vue-sidebar-menu/dist/vue-sidebar-menu.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./VueApp/common/utils/event-bus.js","webpack:///./node_modules/bootstrap-vue/esm/components/button/button-close.js","webpack:///./VueApp/common/services/configService.js","webpack:///./VueApp/common/components/SquareButton.vue?4d88","webpack:///./VueApp/common/components/CartIcon.vue?021c","webpack:///./VueApp/common/components/dropdown/index.vue?522f","webpack:///./VueApp/common/components/cart/CartDropdown.vue?8e6f","webpack:///./VueApp/layout/components/CartMenu.vue?8cfd","webpack:///./VueApp/layout/components/CrosSellingModal.vue?3fb8","webpack:///./VueApp/layout/components/EshopSidebarMenu.vue?8794","webpack:///./VueApp/layout/components/MobileMenu.vue?6c24","webpack:///./node_modules/lazysizes/plugins/parent-fit/ls.parent-fit.js","webpack:///./node_modules/bootstrap-vue/esm/utils/transporter.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/listen-on-document.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/listen-on-window.js","webpack:///./node_modules/bootstrap-vue/esm/utils/get-scope-id.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/scoped-style-attrs.js","webpack:///./node_modules/bootstrap-vue/esm/components/modal/helpers/modal-manager.js","webpack:///./node_modules/bootstrap-vue/esm/components/modal/helpers/bv-modal-event.class.js","webpack:///./node_modules/bootstrap-vue/esm/components/modal/modal.js","webpack:///./VueApp/layout/components/CartMenu.vue?9b03","webpack:///./VueApp/common/components/SquareButton.vue?6bc3","webpack:///VueApp/common/components/SquareButton.vue","webpack:///./VueApp/common/components/SquareButton.vue?c02c","webpack:///./VueApp/common/components/SquareButton.vue","webpack:///./VueApp/common/components/CartIcon.vue?10ac","webpack:///VueApp/common/components/CartIcon.vue","webpack:///./VueApp/common/components/CartIcon.vue?fcc0","webpack:///./VueApp/common/components/CartIcon.vue","webpack:///./VueApp/common/components/dropdown/index.vue?14b1","webpack:///./VueApp/common/components/dropdown/index.vue?400c","webpack:///VueApp/common/components/dropdown/index.vue","webpack:///./VueApp/common/components/dropdown/index.vue","webpack:///./VueApp/common/components/cart/CartDropdown.vue?08a0","webpack:///./VueApp/common/components/cart/CartDropdown.vue?0a13","webpack:///VueApp/common/components/cart/CartDropdown.vue","webpack:///./VueApp/common/components/cart/CartDropdown.vue","webpack:///./VueApp/layout/components/CartMenu.vue?8a1b","webpack:///VueApp/layout/components/CartMenu.vue","webpack:///./VueApp/layout/components/CartMenu.vue","webpack:///./VueApp/layout/components/CrosSellingModal.vue?0a1c","webpack:///./VueApp/layout/components/CrosSellingModal.vue?31ea","webpack:///VueApp/layout/components/CrosSellingModal.vue","webpack:///./VueApp/layout/components/CrosSellingModal.vue","webpack:///./VueApp/layout/components/EshopSidebarMenu.vue?a3f3","webpack:///./node_modules/ramda/es/internal/_isPlaceholder.js","webpack:///./node_modules/ramda/es/internal/_curry1.js","webpack:///./node_modules/ramda/es/internal/_arity.js","webpack:///./node_modules/ramda/es/internal/_curry2.js","webpack:///./node_modules/ramda/es/curryN.js","webpack:///./node_modules/ramda/es/internal/_curryN.js","webpack:///./node_modules/ramda/es/curry.js","webpack:///./VueApp/common/utils/tree.js","webpack:///./VueApp/layout/components/EshopSidebarMenu.vue?b216","webpack:///VueApp/layout/components/EshopSidebarMenu.vue","webpack:///./VueApp/layout/components/EshopSidebarMenu.vue","webpack:///./VueApp/layout/components/MobileMenu.vue?efdc","webpack:///./VueApp/common/components/accordionMenu/MenuItem.vue?1831","webpack:///VueApp/common/components/accordionMenu/MenuItem.vue","webpack:///./VueApp/common/components/accordionMenu/MenuItem.vue?58bb","webpack:///./VueApp/common/components/accordionMenu/MenuItem.vue","webpack:///./VueApp/layout/components/MobileMenu.vue?3e11","webpack:///VueApp/layout/components/MobileMenu.vue","webpack:///./VueApp/layout/components/MobileMenu.vue","webpack:///./VueApp/layout/components.js","webpack:///./VueApp/common/components/layout/layout.js","webpack:///./VueApp/layout/store/pageLayoutModule.js","webpack:///./VueApp/layout/app.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/utils/observe-dom.js","webpack:///./node_modules/bootstrap-vue/esm/utils/bv-event.class.js","webpack:///./node_modules/vee-validate/dist/locale/cs.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/listen-on-root.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./VueApp/common/utils/ajax.js","webpack:///./node_modules/bootstrap-vue/esm/components/modal/helpers/bv-modal.js","webpack:///./node_modules/vue-click-outside/index.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","class","item","separator","style","cssStyle","attrs","tag","to","route","nativeOn","click","$event","onClick","icon","_e","_v","_s","L","text","_withStripped","name","props","type","Object","required","String","default","methods","e","preventDefault","component","options","__file","EVENT_OPTIONS_PASSIVE","passive","EVENT_OPTIONS_NO_CAPTURE","capture","window","factory","lazySizes","document","Date","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","init","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","documentElement","supportPicture","HTMLPictureElement","addEventListener","bind","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","prototype","hasClass","ele","cls","RegExp","test","addClass","setAttribute","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","getComputedStyle","getWidth","parent","width","offsetWidth","_lazysizesWidth","parentNode","rAF","firstFns","secondFns","fns","run","runFns","length","running","waiting","shift","rafBatch","queue","apply","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","debounce","func","timeout","timestamp","later","last","now","loader","regImg","regIframe","supportScroll","navigator","userAgent","currentExpand","isLoading","lowRuns","resetPreloading","target","isVisible","isBodyHidden","body","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","i","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","innerWidth","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","resetPreloadingTimer","call","getElementsByTagName","getAttribute","contentWindow","location","changeIframeSrc","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","module","exports","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","key","NAME","PROP_NAME","BvConfig","Constructor","TypeError","_classCallCheck","$_config","$_cachedBreakpoints","protoProps","staticProps","get","value","defaults","_this","config","undefined","configKeys","cmpName","cmpConfig","breakpoints","some","b","warn","concat","Vue","setConfig","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","checkMultipleVueWarned","MULTIPLE_VUE_WARNING","checkMultipleVue","join","_ref","components","directives","plugins","install","installed","registerComponents","registerDirectives","registerPlugins","pluginFactory","extend","plugin","use","registerComponent","def","registerDirective","directive","data","listenForClickOut","watch","newValue","oldValue","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","mounted","beforeDestroy","isClickOut","$el","clickOutHandler","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ROOT_EVENT_SHOWN","ROOT_EVENT_HIDDEN","SELECTOR_ITEM","map","selector","dropup","Boolean","dropright","dropleft","offset","Number","noFlip","popperOpts","boundary","mixins","id","provide","bvDropdown","inject","bvNavbar","disabled","visibleChangePrevented","computed","inNavbar","toggler","toggle","$refs","directionClass","boundaryClass","evtName","bvEvt","cancelable","vueTarget","menu","relatedTarget","componentId","safeId","emitEvent","$off","focusToggler","showMenu","hideMenu","created","$_popper","deactivated","whileOpenListen","destroyPopper","$emit","$root","split","createPopper","$nextTick","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","placement","popperConfig","modifiers","flip","enabled","boundariesElement","preventOverflow","isOpen","method","rootCloseListener","vm","show","_this2","hide","refocus","$once","_evt","keyCode","indexOf","onMousedown","propagation","onKeydown","onEsc","focusNext","onSplitClick","hideHandler","up","_this3","items","getItems","index","focusItem","find","_this4","html","variant","size","block","menuClass","toggleTag","toggleText","toggleClass","noCaret","splitHref","splitTo","splitVariant","splitClass","splitButtonType","validator","array","lazy","role","BDropdown","dropdown","dropdownClasses","menuClasses","toggleClasses","h","commonProps","$buttonChildren","normalizeSlot","buttonContentDomProps","hasNormalizedSlot","$split","btnProps","href","domProps","on","ref","$toggle","mousedown","keydown","$menu","tabindex","BDropdownItem","inheritAttrs","linkClass","computedAttrs","bvAttrs","closeDropdown","active","$props","activeClass","buttonClass","BDropdownItemButton","BDropdownHeader","functional","children","$attrs","BDropdownDivider","BDropdownForm","formClass","$listeners","BDropdownText","textClass","header","headerTag","headerVariant","headerClasses","ariaDescribedby","BDropdownGroup","slots","scopedSlots","$slots","$scopedSlots","headerId","adb","ariaDescribedBy","identity","DropdownPlugin","BDd","BDdItem","BDropdownItemBtn","BDdItemButton","BDdItemBtn","BDdHeader","BDdDivider","BDdForm","BDdText","BDdGroup","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN_ITEMS","Default","DefaultType","TransitionEndEvents","ScrollSpy","$scroller","$selector","$offsets","$targets","$activeTarget","$scrollHeight","$resizeTimeout","$scrollerObserver","$targetsObserver","$config","updateConfig","unlisten","constructor","componentName","configTypes","property","expectedTypes","valueType","match","toLowerCase","_isVue","Name","self","listen","scroller","getScroller","tagName","setObservers","handleEvent","disconnect","attributeFilter","characterData","process","refresh","autoMethod","methodFn","offsetBase","getScrollTop","getScrollHeight","link","sort","a","reduce","memo","scrollTop","scrollHeight","maxScroll","getOffsetHeight","activate","clear","pageYOffset","math","height","_this5","links","setActiveState","parentElement","sibling","previousElementSibling","_this6","BV_SCROLLSPY","onlyDigitsRE","offsetRE","bindings","vnode","arg","mod","k","context","VBScrollspy","inserted","update","componentUpdated","unbind","dispose","removeScrollspy","VBScrollspyPlugin","PROPERTY","_ref$modifiers","reverse","trigger","oldProp","handler","binding","currentTarget","VBModal","updated","ModalPlugin","BModal","BVModalPlugin","message","console","warnNotClient","warnNoPromiseSupport","warnNoMutationObserverSupport","stripTags","htmlOrText","innerHTML","textContent","localId_","suffix","_uid","mathMin","Math","min","mathMax","max","mathCeil","abs","ceil","mathFloor","floor","mathRound","pow","round","isTextInput","includes","isCheckboxOrRadioInput","getDataAttribute","isNaN$1","isNaN","isNullOrUndefined","values","every","isEqual","lhs","rhs","flags","isArray","isObject","getForm","form","getPath","path","wait","token","cancelled","appendRule","rule","rules","normalizeRules","assign","prev","curr","params","parsedRule","slice","parseRule","createError","Error","isCallable","className","classList","contains","status","remove","toArray","arrayLike","from","ensureArray","isEmptyArray","others","idTemplate","findIndex","predicate","idx","isBuiltInComponent","componentOptions","deepParseInt","input","parseInt","merge","obj$1","fillRulesFromElement","multiple","pattern","regex","maxLength","minLength","isDateInput","timeFormat","step","collection","arr","defineNonReactive","LOCALE","Dictionary","dictionary","container","prototypeAccessors","locale","set","hasLocale","setDateFormat","format","dateFormat","getDateFormat","getMessage","hasMessage","messages","_getDefaultMessage","getFieldMessage","field","dict","custom","_default","en","fallback","hasAttribute","setMessage","attribute","drivers","currentDriver","DictionaryResolver","_checkDriverName","driver","setDriver","implementation","getDriver","ErrorBag","errorBag","vmId","Symbol","iterator","this$1","next","done","error","_normalizeError","scope","regenerate","msg","splice","all","matchesScope","matchesVM","any","collect","isSingleField","groupErrors","errors","_makeCandidateFilters","isPrimary","isAlt","collected","primary","alt","count","firstById","first","_match","firstRule","has","firstByRule","firstNot","removeById","condition","matches","matchesRule","matchesName","pop","parts","parseSelector","isLast","currentConfig","errorBagName","fieldsBagName","classes","classNames","events","fastExit","aria","validity","mode","useConstraintAttrs","i18n","i18nRootKey","resolveConfig","ctx","selfConfig","getConfig","newConf","findModel","model","d","extractVNodes","extractChildren","nodes","node","candidates","findModelConfig","Ctor","mergeVNodeListeners","eventName","prevHandler","addVNodeListener","listeners","addComponentNodeListener","addNativeNodeListener","getInputEventName","createRenderless","Resolver","generate","resolveModel","resolveName","disable","bails","continues","resolveScope","expression","componentInstance","getter","resolveGetter","resolveEvents","resolveDelay","resolveRules","immediate","initial","persist","initialValue","resolveInitialValue","getCtorConfig","normalized","globalDelay","$options","getScope","watchable","previousPath","reducer","hasPath","boundGetter","els","checked","checkbox","elm","files","opt","selected","RULES","RuleContainer","staticAccessors","validate","paramNames","isImmediate","isRequireRule","computesRequired","isTargetRule","hasTarget","ruleName","getParamNames","getOptions","getValidatorMethod","isEvent","Event","srcElement","normalizeEvents","evts","supportsPassive","cb","DEFAULT_OPTIONS","targetOf","touched","untouched","valid","invalid","pristine","dirty","Field","forceRequired","_cacheId","_delay","validated","pending","changed","ctorConfig","prototypeAccessors$1","isRequired","isDisabled","alias","rejectsFalse","$validator","Promise","resolve","_alias","_bails","_veeValidateId","waitFor","pendingPromise","_waitingFor","isWaitingFor","promise","delayConfig","updateDependencies","addActionListeners","resetFlag","then","addValueListeners","updateClasses","updateAriaAttrs","reset","_cancellationToken","flag","updateCustomValidity","setFlags","negated","dependencies","fields","r","ref$1","$watch","$vnode","unwatch","watchers","w","isReset","applyClasses","onBlur","inputEvent","onInput","blurEvent","removeEventListener","checkValueChanged","_determineInputEvent","_determineEventList","defaultInputEvent","_resolveField","watchCtxVm","debouncedFn","_addComponentEventListener","_addHTMLEventListener","$on","addListener","applyAriaAttrs","setCustomValidity","FieldBag","itemsById","prototypeAccessors$2","matcher","findById","m","mapper","ScopedValidator","base","_base","_paused","prototypeAccessors$3","f","acc","val","localize","attach","opts","attachOpts","pause","resume","detach","verify","validateAll","validateScopes","VALIDATOR","getValidator","mixin","$__veeInject","$parent","$_veeValidate","injections","requested","util","defineReactive","findField","fieldOptions","Validator","validations","pluginContainer","_createFields","paused","$vee","prototypeAccessors$4","staticAccessors$1","hasChanged","create","_guardExtend","mergedOpts","_merge","lang","fieldOpts","oldFieldMatcher","oldField","_validate","result","uid","fieldDescriptor","silent","matched","_handleFieldNotFound","validationPromise","_handleValidationResults","providedValues","results","t","targetRules","targetKey","ruleMap","failedRules","_getDateFormat","date_format","_formatErrorMessage","targetName","_getFieldDisplayName","_getLocalizedParams","_convertParamObjectToArray","paramName","_convertParamArrayToObj","_test","reject","isDate","allValid","_createFieldError","fieldScope","fieldName","fullName","matchers","allErrors","_shouldSkip","_shouldBail","requireRules","ruleOptions","promises","isExitEarly","v","normalizeValue","I18nDictionary","rootKey","prototypeAccessors$5","getDateTimeFormat","setDateTimeFormat","dataOptions","te","fallbackLocale","localeKey","clone","normalizeFormat","mergeLocaleMessage","pendingPlugins","pluginInstance","modes","aggressive","eager","VeeValidate$1","_Vue","configure","_validator","_initVM","_initI18n","prototypeAccessors$6","i18nDriver","staticAccessors$2","setI18nDriver","setMode","Rules","detectPassiveSupport","onLocaleChanged","after","alpha","alpha_dash","alpha_num","alpha_spaces","before","between","confirmed","credit_card","date_between","decimal","decimals","digits","dimensions","email","excluded","ext","image","included","integer","ip","ip_or_fqdn","max_value","mimes","min_value","numeric","required_if","log","toFixed","url","toInteger","dirtyNumber","NaN","number","VeeValidate","getTimezoneOffsetInMilliseconds","dirtyDate","date","getTime","baseTimezoneOffset","getTimezoneOffset","setSeconds","patterns","dateTimeDelimeter","plainTime","timeZoneDelimeter","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","argument","dirtyOptions","additionalDigits","RangeError","toString","dateStrings","splitDateString","parseYearResult","parseYear","year","restDateString","parseDate","time","parseTime","parseTimezone","dateString","timeString","substr","exec","patternYYY","patternYYYYY","yearString","centuryString","month","week","setUTCFullYear","validateDate","dayOfYear","isLeapYear","isLeapYearIndex","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","hours","minutes","validateTime","parseFloat","seconds","timezoneString","absoluteOffset","validateTimezone","isoWeekYear","diff","getUTCDay","setUTCDate","getUTCDate","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","addMilliseconds","dirtyAmount","amount","isValid","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","hasOwnProperty","findKey","valueCallback","rest","locale$1","formatDistance","addSuffix","comparison","formatRelative","baseDate","ordinalNumber","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","defaulFormattingWidth","parsePattern","parseResult","weekStartsOn","firstWeekContainsDate","startOfUTCISOWeek","setUTCHours","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","dayPeriodEnum","formatters","G","y","signedYear","addLeadingZeros","unit","Y","signedWeekYear","weekYear","R","u","Q","getUTCMonth","q","M","I","isoWeek","dayOfMonth","D","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","localDayOfWeek","c","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","B","H","K","getUTCMinutes","s","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","X","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","originalDate","T","targetLength","sign","output","dirtyDelimeter","delimeter","absOffset","dateLongFormatter","timeLongFormatter","longFormatters","p","P","dateTimeFormat","datePattern","timePattern","subMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","cleanEscapedString","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual$1","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH$1","DAYS_IN_MONTH_LEAP_YEAR$1","isLeapYearIndex$1","parsers","priority","parse","isTwoDigitYear","normalizedTwoDigitYear","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","wholeWeekDays","setUTCISODay","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","formattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","dateToSystemTimezone","convertedDate","setFullYear","setHours","cleanEscapedString$1","parseDate$1","format$1","parsed","dirtyDateString","dirtyFormatString","dirtyBaseDate","formatString","subFnOptions","setters","tokens","awareOfUnicodeTokens","firstCharacter","parser","uniquePrioritySetters","setter","setterArray","utcDate","dirtyFormatStr","formatStr","formatterOptions","substring","longFormatter","formatter","targetValue","inclusion","cs","da","de","es","fa","fr","it","lt","nl","hu","pl","pt","ru","sk","sr","sv","tr","uk","ar","az","alphaSpaces","alphanumeric","alphaDash","loc","alpha$1","validate$1","validate$2","validate$3","validate$5","unwrapExports","__esModule","createCommonjsModule","assertString_1","_typeof","invalidType","isCreditCard","str","_assertString","sanitized","creditCard","digit","tmpNum","shouldDouble","sum","_interopRequireDefault","inclusivity","minDate","maxDate","dateVal","validate$a","parsedValue","validate$b","strVal","imageRegex","images","file","URL","webkitURL","Image","onerror","createObjectURL","validateImage","merge_1","isByteLength_1","encodeURI","isFQDN_1","default_fqdn_options","allow_trailing_dot","require_tld","tld","part","_i","allow_underscores","isFQDN","isIP_1","isIP","version","ipv4Maybe","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","ipv6Block","isEmail","default_email_options","require_display_name","allow_display_name","display_email","displayName","domain","user","lower_domain","domain_specific_validation","username","_isByteLength","_user_parts","gmailUserPart","_isFQDN","allow_ip_domain","_isIP","startsWith","endsWith","noBracketdomain","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","exclude","objectWithoutProperties","emailStr","validatorOptions","validate$e","extensions","is","is_not","compare","validate$o","validate$p","validate$r","validate$s","testValue","strValue","validate$u","invalidateFalse","otherFieldVal","nSize","isURL","protocol","auth","host","hostname","port","port_str","ipv6","default_url_options","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","require_host","disallow_auth","ipv6_match","wrapped_ipv6","host_whitelist","checkHost","host_blacklist","isRegExp","freeze","combine","mapScope","deep","isScope","PROVIDER_COUNTER","ValidationProvider","$_veeObserver","refs","subscribe","vid","unsubscribe","Function","slim","oldVal","_needsValidation","initialized","isDeactivated","fieldDeps","depName","watchCrossFieldDep","withHooks","providers","_veeWatchers","normalizedEvents","computeModeSetting","_inputEventName","names","registerField","createValidationCtx","slot","addListeners","activated","syncValue","normalizeValue$1","_pendingValidation","validateSilent","applyResult","updateRenderingContextRefs","onRenderUpdate","validateNow","_ignoreImmediate","shouldValidate","createCommonHandlers","onValidate","$veeHandler","$veeDebounce","flagMergingStrategy","OBSERVER_COUNTER","ValidationObserver","observers","persistedStore","thenable","success","provider","errs","obsErrors","subscriber","kind","restoreProviderState","removeProvider","o","obs","$delete","state","mapFields","normalize","withValidation","ctxToProps","hoc","vctx","abp","childContainers","flattenContainerTreee","argus","localization","AppConfigService","defaultLocalizationSourceName","floorDecimals","srcType","copy","copyIsArray","getRouterObjByName","routers","routerObj","toDefaultPage","notHandle","redirect","trimEndChars","endStr","trimStartChars","startStr","_radnomString","bits","random","uuid","paramArray","param","addToBasket","payload","Ajax","post","getBasket","itemId","delete","updateQuantity","put","setQuantity","productId","quantity","basketItemId","setPayment","setShipping","trashBasket","createOrder","orderData","getAll","getAllGrid","namespaced","paymnetMethods","shippingMethods","couponCode","couponRuleName","isActive","isProductPriceIncludeTax","taxAmount","subTotal","subTotalWithDiscount","orderTotalNoTax","orderTotal","userId","lastAddedItem","payment","price","shipping","getters","shippingId","paymentId","paymentPrice","shippingPrice","getBasketItemsCount","getBasketItems","orderSubTotal","orderTotalTax","actions","commit","dispatch","BasketApi","response","removeItem","paymentMethod","shippingMethod","addItemToBasket","loadShippingMethods","ShippingAPI","loadPaymentMethods","PaymentAPI","mutations","SET_SHIPPING_METHODS","SET_PAYMENT_METHODS","paymentMethods","SET_SHIPPING","SET_PAYMENT","REMOVE_ITEM","SET_LAST_ADDED_ITEM","sate","SET_BASKET","basket","SET_QUANTITY","Vuex","store","Store","isSideBarMenuOpen","SHOW_LOADER","TOGGLE_SIDEBAR_MENU","modules","cartModule","CartModule","l","toStringTag","prefix","delimiter","optional","repeat","partial","asterisk","compile","tokensToFunction","tokensToRegExp","g","C","charCodeAt","toUpperCase","pretty","encodeURIComponent","JSON","stringify","sensitive","strict","end","staticRenderFns","_compiled","_scopeId","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","isRouterLink","$router","external","$nuxt","_b","_t","badge","SidebarMenuLink","SidebarMenuIcon","SidebarMenuBadge","level","isCollapsed","isMobileItem","mobileItem","activeShow","showChild","showOneChild","rtl","disableHover","mobileItemStyle","exactActive","itemShow","itemHover","isFirstLevel","itemHasChild","emitActiveShow","itemLinkClass","hover","itemLinkAttributes","isItemHidden","hiddenOnCollapse","child","$route","initState","emitItemUpdate","destroyed","isLinkActive","matchRoute","isChildActive","isAliasActive","isLinkExactActive","matchExactRoute","fullPath","pathname","search","hash","exactPath","clickEvent","emitItemClick","emitMobileItem","itemEl","initActiveState","initShowState","mouseOverEvent","stopPropagation","mouseOutEvent","expandEnter","expandAfterEnter","expandBeforeLeave","display","title","mouseover","mouseout","appear","enter","afterEnter","beforeLeave","_l","SidebarMenuItem","collapsed","widthCollapsed","theme","relative","hideToggle","mobileItemPos","mobileItemHeight","mobileItemTimeout","parentHeight","parentWidth","parentOffsetTop","parentOffsetLeft","sidebarWidth","sidebarClass","position","direction","background","onMouseLeave","unsetMobileItem","onMouseEnter","onToggleClick","onActiveShow","onItemClick","setMobileItem","initParentOffsets","clientTop","clientLeft","onItemUpdate","mouseleave","mouseenter","global","noGlobal","getProto","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","nodeType","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","doc","script","createElement","head","appendChild","removeChild","toType","jQuery","isArrayLike","jquery","num","pushStack","elems","ret","prevObject","each","callback","eq","even","grep","_elem","odd","j","isPlainObject","expando","isReady","noop","proto","isEmptyObject","globalEval","makeArray","inArray","second","invert","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","select","outermostContext","sortInput","hasDuplicate","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","dir","childNodes","seed","nid","groups","newSelector","newContext","ownerDocument","getElementById","qsa","testContext","toSelector","qsaError","removeAttribute","cache","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","unshift","expr","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","firstChild","nodeValue","selectors","createPseudo","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","setFilters","unmatched","elemLang","activeElement","hasFocus","tabIndex","selectedIndex","_matchIndexes","radio","password","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","contents","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","createOptions","firing","memory","fired","locked","firingIndex","once","stopOnFalse","empty","lock","fireWith","Deferred","tuples","always","deferred","pipe","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","readyException","readyList","completed","catch","readyWait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","td","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","origFn","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopImmediatePropagation","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","originalEvent","load","noBubble","beforeunload","returnValue","isDefaultPrevented","timeStamp","isSimulated","altKey","bubbles","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","focus","blur","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","insertBefore","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","swap","old","rboxStyle","curCSS","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","margin","padding","border","expanded","propHooks","percent","eased","duration","pos","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","curValue","clazz","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","statusText","finalText","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageXOffset","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","delegate","undelegate","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","$","noConflict","EventBus","ariaLabel","textVariant","BButtonClose","componentData","appConfigJson","require","regDescriptors","regCssFit","regCssObject","parentFit","getParent","parentSel","getFit","tmpMatch","parentObj","fontFamily","fit","_lazysizesParentFit","_lazysizesParentContainer","objectFit","getImageRatio","media","ratio","_lsMedia","matchMedia","calculateSize","displayRatio","imageRatio","retWidth","fitObj","fitElem","BTransporterTargetSingle","abstract","updatedNodes","BTransporterSingle","unmountTarget","mountTarget","$_defaultFn","$_target","beforeMount","updateTarget","getContainer","propsData","defaultFn","$destroy","PROP","listenDocument","listenOnDocument","listenOffDocument","listenWindow","listenOnWindow","listenOffWindow","scopedStyleAttrs","scopeId","Selector","modalManager","modals","baseZIndex","scrollbarWidth","isBodyOverflowing","modalCount","modalsAreOpen","newCount","oldCount","getScrollbarWidth","checkScrollbar","setScrollbar","resetScrollbar","newVal","updateModals","registerModal","modal","unregisterModal","_isBeingDestroyed","_isDestroyed","resetModal","getBaseZIndex","zIndex","isTop","_getBCR","_paddingChangedForModal","_marginChangedForModal","actualPadding","paddingRight","actualMargin","marginRight","_get","receiver","Reflect","_getPrototypeOf","_superPropBase","desc","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_BvEvent","subClass","superClass","_inherits","BvModalEvent","_super","eventInit","OBSERVER_CONFIG","centered","scrollable","buttonSize","noStacking","noFade","noCloseOnBackdrop","noCloseOnEsc","noEnforceFocus","ignoreEnforceFocusSelector","titleHtml","titleTag","titleClass","titleSrOnly","headerBgVariant","headerBorderVariant","headerTextVariant","headerCloseVariant","headerClass","bodyBgVariant","bodyTextVariant","modalClass","dialogClass","contentClass","bodyClass","footerBgVariant","footerBorderVariant","footerTextVariant","footerClass","hideHeader","hideFooter","hideHeaderClose","hideBackdrop","okOnly","okDisabled","cancelDisabled","returnFocus","headerCloseContent","headerCloseLabel","cancelTitle","cancelTitleHtml","okTitle","okTitleHtml","cancelVariant","okVariant","busy","static","autoFocusButton","isHidden","isTransitioning","isShow","isBlock","isOpening","isClosing","ignoreBackdropClick","isModalOverflowing","return_focus","modalId","modalOuterId","modalHeaderId","modalBodyId","modalTitleId","modalContentId","modalFooterId","modalBackdropId","modalClasses","fade","modalStyles","sbWidth","paddingLeft","dialogClasses","_ref2","titleClasses","bodyClasses","_ref3","footerClasses","_ref4","modalOuterStyle","slotScope","ok","onOk","cancel","onCancel","close","onClose","computeIgnoreEnforceFocusSelector","computedModalAttrs","$_observer","listenOnRoot","showHandler","toggleHandler","modalListener","setObserver","checkModalOverflow","updateModel","buildEvent","getActiveElement","showEvt","doShow","hideEvt","triggerEl","listenOnRootOnce","onBeforeEnter","setResizeEvent","onEnter","onAfterEnter","setEnforceFocus","focusFirst","onBeforeLeave","onLeave","onAfterLeave","returnFocusTo","bvModalEvt","emitOnRoot","onDialogMousedown","onceModalMouseup","onClickOut","focusHandler","tabables","_this$$refs","bottomTrap","topTrap","preventScroll","autoFocus","makeModal","$header","$modalHeader","$closeButton","$body","$footer","$modalFooter","$cancelButton","$modalContent","$tabTrapTop","$tabTrapBottom","$modalDialog","$modal","enterClass","enterToClass","enterActiveClass","leaveClass","leaveActiveClass","leaveToClass","beforeEnter","leave","afterLeave","$backdrop","_u","color","basketitemsCount","basketitems","handleCartClick","isRouter","isDark","fontColor","showBadge","notification","notificationCount","iconSize","viewBox","xmlns","itemsCount","colorOfBadge","rawName","toggleDropdown","isDropped","isEmpty","_m","productSlug","productPictureUrl","productName","productPrice","onBasketItemDelete","basketItemsCount","trashCart","BIcon","BIconXCircle","reload","basketItems","$store","lastAddedBasketItem","apiBaseUrl","mobileMenu","_isPlaceholder","_curry1","f1","_arity","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","_curry2","f2","_a","_curryN","received","combined","argsIdx","combinedIdx","hasChildren","Tree","curry","reducerFn","mapFn","newNode","SidebarMenu","onResize","popupItem","mobileBtnSidebarMenu","transformedCatalogTreeMenu","transformCatalogTree","catalogNav","transformedMainNavTreeMenu","transformTree","mainMenu","tree","isOnMobile","pageLayoutModule","pageModel","mainNav","menuConfig","menuItem","isFolder","MenuItem","CartMenu","CrossSellingModal","EshopSidebarMenu","scrollBtn","querySelector","behavior","scrollY","passiveSupported","DIRECTION","isRTL","touchClick","touchStartData","onTouchstart","touch","onTouchEnd","distance","sqrt","preventTouchClick","categories","suggestions","outsideClick","setSuggestion","callNow","mobileSearch","CNavLinks","currentItem","onMouseenter","onMouseleave","onGlobalTouchClick","onTouchClick","CMenu","CIndicator","onTransitionend","onGlobalClick","unsetCurrentItem","targetItem","hasSubmenu","setCurrentItem","openSubmenu","closeSubmenu","submenu","submenuTop","viewportHeight","containerWidth","megamenuWidth","itemPosition","megamenuPosition","submenuInstance","getSubmenu","menuTop","itemTop","maxHeight","paddingY","submenuHeight","propertyName","dropdownTop","closeImmediately","CDepartments","linksWrapper","fixedBy","fixedHeight","outerHeight","onButtonClick","startHeight","documentHeight","contentRect","endHeight","containerTop","departmentsElement","departments","nav","departmentsMode","stuck","shown","scrollDistance","scrollPosition","positionWhenToFix","positionWhenToStick","closeAllSubmenus","onScroll","scrollDelta","onMediaChange","navPanelTop","navPanelBottom","departmentsBottom","mobileHeader","mobileHeaderPanel","SET_PAGE_MODEL","CzechVeeValidateLocale","registerModule","pageLayout","$mount","gtag","itemData","brand","category","vRegisterForm","observer","vNewsLetterForm","loginForm","newsletterForm","validationResult","FormData","inline","novalidate","BForm","mutation","Node","TEXT_NODE","addedNodes","removedNodes","BvEvent","Defaults","_this$$root","_len","isBrowser","timeoutDuration","longerTimeoutBrowsers","called","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","modifier","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","_extends","getClientRect","offsets","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","refRect","rects","sortedAreas","area","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","setupEventListeners","updateBound","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","_requesting","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","splitRegex","ops","op","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","isVertical","shiftOffsets","transformProp","popperStyles","transform","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Popper","Utils","PopperUtils","axios","withCredentials","baseURL","interceptors","request","getToken","common","utils","getCookieValue","multiTenancy","getTenantIdCookie","respon","details","$swal","confirmButtonText","_arrayLikeToArray","arr2","BASE_PROPS","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","defaultResolver","propsToSlots","msgBoxContent","filterOptions","BMsgBox","extends","handleDestroy","asyncMsgBox","resolver","msgBox","resolved","makeMsgBox","BvModal","_root","_this$_root","_this$_root2","_len2","_key2","isServer","vNode","$isServer","composedPath","isPopup","__vueClickOutside__","clickHandler"],"mappings":"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","file":"js/layout.js","sourcesContent":["var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"RouterLink\",\n {\n staticClass: \"dropdown__item\",\n class: { \"has-separator\": _vm.item.separator },\n style: _vm.item.cssStyle,\n attrs: { tag: _vm.tag, to: _vm.item.route ? _vm.item.route : {} },\n nativeOn: {\n click: function($event) {\n return _vm.onClick($event)\n }\n }\n },\n [\n _vm.item.icon ? _c(\"i\", { class: _vm.item.icon }) : _vm._e(),\n _vm._v(\"\\n \" + _vm._s(_vm.L(_vm.item.text)) + \"\\n\")\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n {{ L(item.text) }}\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropdownItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropdownItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DropdownItem.vue?vue&type=template&id=b7da6232&scoped=true&\"\nimport script from \"./DropdownItem.vue?vue&type=script&lang=js&\"\nexport * from \"./DropdownItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DropdownItem.vue?vue&type=style&index=0&id=b7da6232&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b7da6232\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b7da6232')) {\n api.createRecord('b7da6232', component.options)\n } else {\n api.reload('b7da6232', component.options)\n }\n module.hot.accept(\"./DropdownItem.vue?vue&type=template&id=b7da6232&scoped=true&\", function () {\n api.rerender('b7da6232', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/common/components/dropdown/DropdownItem.vue\"\nexport default component.exports","export var EVENT_OPTIONS_PASSIVE = {\n passive: true\n};\nexport var EVENT_OPTIONS_NO_CAPTURE = {\n passive: true,\n capture: false\n};","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport OurVue from './vue';\nimport cloneDeep from './clone-deep';\nimport { getRaw } from './get';\nimport { isArray, isPlainObject, isString, isUndefined } from './inspect';\nimport { getOwnPropertyNames, hasOwnProperty } from './object';\nimport { warn } from './warn';\nimport DEFAULTS from './config-defaults'; // --- Constants ---\n\nvar NAME = 'BvConfig';\nvar PROP_NAME = '$bvConfig'; // Config manager class\n\nvar BvConfig = /*#__PURE__*/function () {\n function BvConfig() {\n _classCallCheck(this, BvConfig);\n\n // TODO: pre-populate with default config values (needs updated tests)\n // this.$_config = cloneDeep(DEFAULTS)\n this.$_config = {};\n this.$_cachedBreakpoints = null;\n }\n /* istanbul ignore next */\n\n\n _createClass(BvConfig, [{\n key: \"getDefaults\",\n // Returns the defaults\n\n /* istanbul ignore next */\n value: function getDefaults()\n /* istanbul ignore next */\n {\n return this.defaults;\n } // Method to merge in user config parameters\n\n }, {\n key: \"setConfig\",\n value: function setConfig() {\n var _this = this;\n\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!isPlainObject(config)) {\n /* istanbul ignore next */\n return;\n }\n\n var configKeys = getOwnPropertyNames(config);\n configKeys.forEach(function (cmpName) {\n /* istanbul ignore next */\n if (!hasOwnProperty(DEFAULTS, cmpName)) {\n warn(\"Unknown config property \\\"\".concat(cmpName, \"\\\"\"), NAME);\n return;\n }\n\n var cmpConfig = config[cmpName];\n\n if (cmpName === 'breakpoints') {\n // Special case for breakpoints\n var breakpoints = config.breakpoints;\n /* istanbul ignore if */\n\n if (!isArray(breakpoints) || breakpoints.length < 2 || breakpoints.some(function (b) {\n return !isString(b) || b.length === 0;\n })) {\n warn('\"breakpoints\" must be an array of at least 2 breakpoint names', NAME);\n } else {\n _this.$_config.breakpoints = cloneDeep(breakpoints);\n }\n } else if (isPlainObject(cmpConfig)) {\n // Component prop defaults\n var props = getOwnPropertyNames(cmpConfig);\n props.forEach(function (prop) {\n /* istanbul ignore if */\n if (!hasOwnProperty(DEFAULTS[cmpName], prop)) {\n warn(\"Unknown config property \\\"\".concat(cmpName, \".\").concat(prop, \"\\\"\"), NAME);\n } else {\n // TODO: If we pre-populate the config with defaults, we can skip this line\n _this.$_config[cmpName] = _this.$_config[cmpName] || {};\n\n if (!isUndefined(cmpConfig[prop])) {\n _this.$_config[cmpName][prop] = cloneDeep(cmpConfig[prop]);\n }\n }\n });\n }\n });\n } // Clear the config. For testing purposes only\n\n }, {\n key: \"resetConfig\",\n value: function resetConfig() {\n this.$_config = {};\n } // Returns a deep copy of the user config\n\n }, {\n key: \"getConfig\",\n value: function getConfig() {\n return cloneDeep(this.$_config);\n }\n }, {\n key: \"getConfigValue\",\n value: function getConfigValue(key) {\n // First we try the user config, and if key not found we fall back to default value\n // NOTE: If we deep clone DEFAULTS into config, then we can skip the fallback for get\n return cloneDeep(getRaw(this.$_config, key, getRaw(DEFAULTS, key)));\n }\n }, {\n key: \"defaults\",\n\n /* istanbul ignore next */\n get: function get()\n /* istanbul ignore next */\n {\n return DEFAULTS;\n }\n }], [{\n key: \"Defaults\",\n get: function get()\n /* istanbul ignore next */\n {\n return DEFAULTS;\n }\n }]);\n\n return BvConfig;\n}(); // Method for applying a global config\n\n\nexport var setConfig = function setConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var Vue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OurVue;\n // Ensure we have a $bvConfig Object on the Vue prototype.\n // We set on Vue and OurVue just in case consumer has not set an alias of `vue`.\n Vue.prototype[PROP_NAME] = OurVue.prototype[PROP_NAME] = Vue.prototype[PROP_NAME] || OurVue.prototype[PROP_NAME] || new BvConfig(); // Apply the config values\n\n Vue.prototype[PROP_NAME].setConfig(config);\n}; // Method for resetting the user config. Exported for testing purposes only.\n\nexport var resetConfig = function resetConfig() {\n if (OurVue.prototype[PROP_NAME] && OurVue.prototype[PROP_NAME].resetConfig) {\n OurVue.prototype[PROP_NAME].resetConfig();\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport OurVue from './vue';\nimport { setConfig } from './config-set';\nimport { hasWindowSupport, isJSDOM } from './env';\nimport { warn } from './warn';\n/**\n * Checks if there are multiple instances of Vue, and warns (once) about possible issues.\n * @param {object} Vue\n */\n\nexport var checkMultipleVue = function () {\n var checkMultipleVueWarned = false;\n var MULTIPLE_VUE_WARNING = ['Multiple instances of Vue detected!', 'You may need to set up an alias for Vue in your bundler config.', 'See: https://bootstrap-vue.org/docs#using-module-bundlers'].join('\\n');\n return function (Vue) {\n /* istanbul ignore next */\n if (!checkMultipleVueWarned && OurVue !== Vue && !isJSDOM) {\n warn(MULTIPLE_VUE_WARNING);\n }\n\n checkMultipleVueWarned = true;\n };\n}();\n/**\n * Plugin install factory function.\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\n\nexport var installFactory = function installFactory() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n components = _ref.components,\n directives = _ref.directives,\n plugins = _ref.plugins;\n\n var install = function install(Vue) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (install.installed) {\n /* istanbul ignore next */\n return;\n }\n\n install.installed = true;\n checkMultipleVue(Vue);\n setConfig(config, Vue);\n registerComponents(Vue, components);\n registerDirectives(Vue, directives);\n registerPlugins(Vue, plugins);\n };\n\n install.installed = false;\n return install;\n};\n/**\n * Plugin install factory function (no plugin config option).\n * @param {object} { components, directives }\n * @returns {function} plugin install function\n */\n\nexport var installFactoryNoConfig = function installFactoryNoConfig() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n components = _ref2.components,\n directives = _ref2.directives,\n plugins = _ref2.plugins;\n\n var install = function install(Vue) {\n if (install.installed) {\n /* istanbul ignore next */\n return;\n }\n\n install.installed = true;\n checkMultipleVue(Vue);\n registerComponents(Vue, components);\n registerDirectives(Vue, directives);\n registerPlugins(Vue, plugins);\n };\n\n install.installed = false;\n return install;\n};\n/**\n * Plugin object factory function.\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\n\nexport var pluginFactory = function pluginFactory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _objectSpread(_objectSpread({}, extend), {}, {\n install: installFactory(options)\n });\n};\n/**\n * Plugin object factory function (no config option).\n * @param {object} { components, directives, plugins }\n * @returns {object} plugin install object\n */\n\nexport var pluginFactoryNoConfig = function pluginFactoryNoConfig() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _objectSpread(_objectSpread({}, extend), {}, {\n install: installFactoryNoConfig(options)\n });\n};\n/**\n * Load a group of plugins.\n * @param {object} Vue\n * @param {object} Plugin definitions\n */\n\nexport var registerPlugins = function registerPlugins(Vue) {\n var plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var plugin in plugins) {\n if (plugin && plugins[plugin]) {\n Vue.use(plugins[plugin]);\n }\n }\n};\n/**\n * Load a component.\n * @param {object} Vue\n * @param {string} Component name\n * @param {object} Component definition\n */\n\nexport var registerComponent = function registerComponent(Vue, name, def) {\n if (Vue && name && def) {\n Vue.component(name, def);\n }\n};\n/**\n * Load a group of components.\n * @param {object} Vue\n * @param {object} Object of component definitions\n */\n\nexport var registerComponents = function registerComponents(Vue) {\n var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var component in components) {\n registerComponent(Vue, component, components[component]);\n }\n};\n/**\n * Load a directive.\n * @param {object} Vue\n * @param {string} Directive name\n * @param {object} Directive definition\n */\n\nexport var registerDirective = function registerDirective(Vue, name, def) {\n if (Vue && name && def) {\n // Ensure that any leading V is removed from the\n // name, as Vue adds it automatically\n Vue.directive(name.replace(/^VB/, 'B'), def);\n }\n};\n/**\n * Load a group of directives.\n * @param {object} Vue\n * @param {object} Object of directive definitions\n */\n\nexport var registerDirectives = function registerDirectives(Vue) {\n var directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n for (var directive in directives) {\n registerDirective(Vue, directive, directives[directive]);\n }\n};\n/**\n * Install plugin if window.Vue available\n * @param {object} Plugin definition\n */\n\nexport var vueUse = function vueUse(VuePlugin) {\n /* istanbul ignore next */\n if (hasWindowSupport && window.Vue) {\n window.Vue.use(VuePlugin);\n }\n /* istanbul ignore next */\n\n\n if (hasWindowSupport && VuePlugin.NAME) {\n window[VuePlugin.NAME] = VuePlugin;\n }\n};","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--3-0!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropdownItem.vue?vue&type=style&index=0&id=b7da6232&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--3-0!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DropdownItem.vue?vue&type=style&index=0&id=b7da6232&scoped=true&lang=scss&\"","import { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport default {\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click';\n }\n\n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(evt) {\n return !contains(this.$el, evt.target);\n },\n _clickOutHandler: function _clickOutHandler(evt) {\n if (this.clickOutHandler && this.isClickOut(evt)) {\n this.clickOutHandler(evt);\n }\n }\n }\n};","import { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport default {\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(evt) {\n if (this.focusInHandler) {\n this.focusInHandler(evt);\n }\n }\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Popper from 'popper.js';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep } from '../utils/object';\nimport { HTMLElement } from '../utils/safe-types';\nimport { warn } from '../utils/warn';\nimport clickOutMixin from './click-out';\nimport focusInMixin from './focus-in';\nimport idMixin from './id'; // --- Constants ---\n// Root dropdown event names\n\nvar ROOT_EVENT_PREFIX = 'bv::dropdown::';\nvar ROOT_EVENT_SHOWN = \"\".concat(ROOT_EVENT_PREFIX, \"shown\");\nvar ROOT_EVENT_HIDDEN = \"\".concat(ROOT_EVENT_PREFIX, \"hidden\"); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n}).join(', '); // --- Utility methods ---\n// Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var commonProps = {\n dropup: {\n // place on top if possible\n type: Boolean,\n default: false\n },\n dropright: {\n // place right if possible\n type: Boolean,\n default: false\n },\n dropleft: {\n // place left if possible\n type: Boolean,\n default: false\n },\n right: {\n // Right align menu (default is left align)\n type: Boolean,\n default: false\n },\n offset: {\n // Number of pixels to offset menu, or a CSS unit value (i.e. `1px`, `1rem`, etc.)\n type: [Number, String],\n default: 0\n },\n noFlip: {\n // Disable auto-flipping of menu from bottom <=> top\n type: Boolean,\n default: false\n },\n popperOpts: {\n type: Object,\n default: function _default() {}\n },\n boundary: {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n type: [String, HTMLElement],\n default: 'scrollParent'\n }\n}; // @vue/component\n\nexport default {\n mixins: [idMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n inject: {\n bvNavbar: {\n default: null\n }\n },\n props: _objectSpread(_objectSpread({}, commonProps), {}, {\n disabled: {\n type: Boolean,\n default: false\n }\n }),\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n inNavbar: function inNavbar() {\n return !isNull(this.bvNavbar);\n },\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n },\n boundaryClass: function boundaryClass() {\n // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n // boundaries when boundary is anything other than `scrollParent`\n // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var evtName = newValue ? 'show' : 'hide';\n var bvEvt = new BvEvent(evtName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvt);\n\n if (bvEvt.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n\n this.$off('hidden', this.focusToggler);\n return;\n }\n\n if (evtName === 'show') {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_popper = null;\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated()\n /* istanbul ignore next: not easy to test */\n {\n // In case we are inside a ``\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvt) {\n var type = bvEvt.type;\n this.$emit(type, bvEvt);\n this.$root.$emit(\"\".concat(ROOT_EVENT_PREFIX).concat(type), bvEvt);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in ``\n\n\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('Popper.js not found. Falling back to CSS positioning', NAME_DROPDOWN);\n } else {\n // For dropup with alignment we use the parent element as popper container\n var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n el = el.$el || el; // Instantiate Popper.js\n\n this.createPopper(el);\n }\n } // Ensure other menus are closed\n\n\n this.$root.$emit(ROOT_EVENT_SHOWN, this); // Enable listeners\n\n this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit('shown');\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.$root.$emit(ROOT_EVENT_HIDDEN, this);\n this.$emit('hidden');\n this.destroyPopper();\n },\n createPopper: function createPopper(element) {\n this.destroyPopper();\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n // Ensure popper event listeners are removed cleanly\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n // Instructs popper to re-computes the dropdown position\n // useful if the content changes size\n updatePopper: function updatePopper()\n /* istanbul ignore next: not easy to test */\n {\n try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n getPopperConfig: function getPopperConfig() {\n var placement = PLACEMENT_BOTTOM_START;\n\n if (this.dropup) {\n placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n } else if (this.dropright) {\n placement = PLACEMENT_RIGHT_START;\n } else if (this.dropleft) {\n placement = PLACEMENT_LEFT_START;\n } else if (this.right) {\n placement = PLACEMENT_BOTTOM_END;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n var boundariesElement = this.boundary;\n\n if (boundariesElement) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: boundariesElement\n };\n }\n\n return mergeDeep(popperConfig, this.popperOpts || {});\n },\n // Turn listeners on/off while open\n whileOpenListen: function whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n\n this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n\n var method = isOpen ? '$on' : '$off';\n this.$root[method](ROOT_EVENT_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n show: function show() {\n var _this2 = this;\n\n // Public method to show dropdown\n if (this.disabled) {\n return;\n } // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n _this2.visible = true;\n });\n },\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // Public method to hide dropdown\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once('hidden', this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(evt) {\n evt = evt || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n var _evt = evt,\n type = _evt.type,\n keyCode = _evt.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_DOWN].indexOf(keyCode) !== -1)) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit('toggle', evt);\n stopEvent(evt); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Mousedown handler for the toggle\n\n /* istanbul ignore next */\n onMousedown: function onMousedown(evt)\n /* istanbul ignore next */\n {\n // We prevent the 'mousedown' event for the toggle to stop the\n // 'focusin' event from being fired\n // The event would otherwise be picked up by the global 'focusin'\n // listener and there is no cross-browser solution to detect it\n // relates to the toggle click\n // The 'click' event will still be fired and we handle closing\n // other dropdowns there too\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n stopEvent(evt, {\n propagation: false\n });\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(evt) {\n var keyCode = evt.keyCode;\n\n if (keyCode === CODE_ESC) {\n // Close on ESC\n this.onEsc(evt);\n } else if (keyCode === CODE_DOWN) {\n // Down Arrow\n this.focusNext(evt, false);\n } else if (keyCode === CODE_UP) {\n // Up Arrow\n this.focusNext(evt, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(evt) {\n if (this.visible) {\n this.visible = false;\n stopEvent(evt); // Return focus to original trigger button\n\n this.$once('hidden', this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(evt) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit('click', evt);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(evt) {\n var target = evt.target;\n\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.hide();\n }\n },\n // Document click-out listener\n clickOutHandler: function clickOutHandler(evt) {\n this.hideHandler(evt);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(evt) {\n this.hideHandler(evt);\n },\n // Keyboard nav\n focusNext: function focusNext(evt, up) {\n var _this3 = this;\n\n // Ignore key up/down on form elements\n var target = evt.target;\n\n if (!this.visible || evt && closest(SELECTOR_FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n stopEvent(evt);\n this.$nextTick(function () {\n var items = _this3.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this3.focusItem(index, items);\n });\n },\n focusItem: function focusItem(index, items) {\n var el = items.find(function (el, i) {\n return i === index;\n });\n attemptFocus(el);\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(SELECTOR_ITEM, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this4 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this4.toggler);\n });\n }\n }\n};","export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN } from '../../constants/components';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slot-names';\nimport Vue from '../../utils/vue';\nimport { arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { htmlOrText } from '../../utils/html';\nimport { toString } from '../../utils/string';\nimport dropdownMixin from '../../mixins/dropdown';\nimport idMixin from '../../mixins/id';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button'; // --- Props ---\n\nexport var props = {\n text: {\n type: String // default: null\n\n },\n html: {\n type: String // default: null\n\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME_DROPDOWN, 'variant');\n }\n },\n size: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME_DROPDOWN, 'size');\n }\n },\n block: {\n type: Boolean,\n default: false\n },\n menuClass: {\n type: [String, Array, Object] // default: null\n\n },\n toggleTag: {\n type: String,\n default: 'button'\n },\n toggleText: {\n // This really should be toggleLabel\n type: String,\n default: function _default() {\n return getComponentConfig(NAME_DROPDOWN, 'toggleText');\n }\n },\n toggleClass: {\n type: [String, Array, Object] // default: null\n\n },\n noCaret: {\n type: Boolean,\n default: false\n },\n split: {\n type: Boolean,\n default: false\n },\n splitHref: {\n type: String // default: undefined\n\n },\n splitTo: {\n type: [String, Object] // default: undefined\n\n },\n splitVariant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME_DROPDOWN, 'splitVariant');\n }\n },\n splitClass: {\n type: [String, Array, Object] // default: null\n\n },\n splitButtonType: {\n type: String,\n default: 'button',\n validator: function validator(value) {\n return arrayIncludes(['button', 'submit', 'reset'], value);\n }\n },\n lazy: {\n // If true, only render menu contents when open\n type: Boolean,\n default: false\n },\n role: {\n type: String,\n default: 'menu'\n }\n}; // --- Main component ---\n// @vue/component\n\nexport var BDropdown = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n computed: {\n dropdownClasses: function dropdownClasses() {\n var block = this.block,\n split = this.split;\n return [this.directionClass, this.boundaryClass, {\n show: this.visible,\n // The 'btn-group' class is required in `split` mode for button alignment\n // It needs also to be applied when `block` is disabled to allow multiple\n // dropdowns to be aligned one line\n 'btn-group': split || !block,\n // When `block` is enabled and we are in `split` mode the 'd-flex' class\n // needs to be applied to allow the buttons to stretch to full width\n 'd-flex': block && split\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n var split = this.split;\n return [this.toggleClass, {\n 'dropdown-toggle-split': split,\n 'dropdown-toggle-no-caret': this.noCaret && !split\n }];\n }\n },\n render: function render(h) {\n var visible = this.visible,\n variant = this.variant,\n size = this.size,\n block = this.block,\n disabled = this.disabled,\n split = this.split,\n role = this.role,\n hide = this.hide,\n toggle = this.toggle;\n var commonProps = {\n variant: variant,\n size: size,\n block: block,\n disabled: disabled\n };\n var buttonContentSlotName = 'button-content';\n var $buttonChildren = this.normalizeSlot(buttonContentSlotName);\n var buttonContentDomProps = this.hasNormalizedSlot(buttonContentSlotName) ? {} : htmlOrText(this.html, this.text);\n var $split = h();\n\n if (split) {\n var splitTo = this.splitTo,\n splitHref = this.splitHref,\n splitButtonType = this.splitButtonType;\n\n var btnProps = _objectSpread(_objectSpread({}, commonProps), {}, {\n variant: this.splitVariant || variant\n }); // We add these as needed due to issues with\n // defined property with `undefined`/`null` values\n\n\n if (splitTo) {\n btnProps.to = splitTo;\n } else if (splitHref) {\n btnProps.href = splitHref;\n } else if (splitButtonType) {\n btnProps.type = splitButtonType;\n }\n\n $split = h(BButton, {\n class: this.splitClass,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n props: btnProps,\n domProps: buttonContentDomProps,\n on: {\n click: this.onSplitClick\n },\n ref: 'button'\n }, $buttonChildren); // Overwrite button content for the toggle when in `split` mode\n\n $buttonChildren = [h('span', {\n class: ['sr-only']\n }, [this.toggleText])];\n buttonContentDomProps = {};\n }\n\n var $toggle = h(BButton, {\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': toString(visible)\n },\n props: _objectSpread(_objectSpread({}, commonProps), {}, {\n tag: this.toggleTag,\n block: block && !split\n }),\n domProps: buttonContentDomProps,\n on: {\n mousedown: this.onMousedown,\n click: toggle,\n keydown: toggle // Handle ENTER, SPACE and DOWN\n\n },\n ref: 'toggle'\n }, $buttonChildren);\n var $menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n },\n ref: 'menu'\n }, [!this.lazy || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n hide: hide\n }) : h()]);\n return h('div', {\n staticClass: 'dropdown b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [$split, $toggle, $menu]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_ITEM } from '../../constants/components';\nimport Vue from '../../utils/vue';\nimport { requestAF } from '../../utils/dom';\nimport { omit } from '../../utils/object';\nimport attrsMixin from '../../mixins/attrs';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nimport { BLink, props as BLinkProps } from '../link/link';\nexport var props = omit(BLinkProps, ['event', 'routerTag']); // @vue/component\n\nexport var BDropdownItem = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_ITEM,\n mixins: [attrsMixin, normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: _objectSpread(_objectSpread({}, props), {}, {\n linkClass: {\n type: [String, Array, Object] // default: null\n\n },\n variant: {\n type: String // default: null\n\n }\n }),\n computed: {\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'menuitem'\n });\n }\n },\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n\n // Close on next animation frame to allow time to process\n requestAF(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var linkClass = this.linkClass,\n variant = this.variant,\n active = this.active,\n disabled = this.disabled,\n onClick = this.onClick;\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h(BLink, {\n staticClass: 'dropdown-item',\n class: [linkClass, _defineProperty({}, \"text-\".concat(variant), variant && !(active || disabled))],\n props: this.$props,\n attrs: this.computedAttrs,\n on: {\n click: onClick\n },\n ref: 'item'\n }, this.normalizeSlot())]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_ITEM_BUTTON } from '../../constants/components';\nimport Vue from '../../utils/vue';\nimport attrsMixin from '../../mixins/attrs';\nimport normalizeSlotMixin from '../../mixins/normalize-slot';\nexport var props = {\n active: {\n type: Boolean,\n default: false\n },\n activeClass: {\n type: String,\n default: 'active'\n },\n buttonClass: {\n type: [String, Array, Object] // default: null\n\n },\n disabled: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String // default: null\n\n }\n}; // @vue/component\n\nexport var BDropdownItemButton = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_ITEM_BUTTON,\n mixins: [attrsMixin, normalizeSlotMixin],\n inheritAttrs: false,\n inject: {\n bvDropdown: {\n default: null\n }\n },\n props: props,\n computed: {\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'menuitem',\n type: 'button',\n disabled: this.disabled\n });\n }\n },\n methods: {\n closeDropdown: function closeDropdown() {\n if (this.bvDropdown) {\n this.bvDropdown.hide(true);\n }\n },\n onClick: function onClick(evt) {\n this.$emit('click', evt);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var _ref;\n\n return h('li', {\n attrs: {\n role: 'presentation'\n }\n }, [h('button', {\n staticClass: 'dropdown-item',\n class: [this.buttonClass, (_ref = {}, _defineProperty(_ref, this.activeClass, this.active), _defineProperty(_ref, \"text-\".concat(this.variant), this.variant && !(this.active || this.disabled)), _ref)],\n attrs: this.computedAttrs,\n on: {\n click: this.onClick\n },\n ref: 'button'\n }, this.normalizeSlot())]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_HEADER } from '../../constants/components';\nimport Vue, { mergeData } from '../../utils/vue';\nexport var props = {\n id: {\n type: String // default: null\n\n },\n tag: {\n type: String,\n default: 'header'\n },\n variant: {\n type: String // default: null\n\n }\n}; // @vue/component\n\nexport var BDropdownHeader = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_HEADER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', mergeData(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-header',\n class: _defineProperty({}, \"text-\".concat(props.variant), props.variant),\n attrs: _objectSpread(_objectSpread({}, $attrs), {}, {\n id: props.id || null,\n role: 'heading'\n }),\n ref: 'header'\n }, children)]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_DIVIDER } from '../../constants/components';\nimport Vue, { mergeData } from '../../utils/vue';\nexport var props = {\n tag: {\n type: String,\n default: 'hr'\n }\n}; // @vue/component\n\nexport var BDropdownDivider = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_DIVIDER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var $attrs = data.attrs || {};\n data.attrs = {};\n return h('li', mergeData(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(props.tag, {\n staticClass: 'dropdown-divider',\n attrs: _objectSpread(_objectSpread({}, $attrs), {}, {\n role: 'separator',\n 'aria-orientation': 'horizontal'\n }),\n ref: 'divider'\n })]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_FORM } from '../../constants/components';\nimport Vue, { mergeData } from '../../utils/vue';\nimport { BForm, props as formProps } from '../form/form'; // @vue/component\n\nexport var BDropdownForm = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_FORM,\n functional: true,\n props: _objectSpread(_objectSpread({}, formProps), {}, {\n disabled: {\n type: Boolean,\n default: false\n },\n formClass: {\n type: [String, Object, Array] // default: null\n\n }\n }),\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var $attrs = data.attrs || {};\n var $listeners = data.on || {};\n data.attrs = {};\n data.on = {};\n return h('li', mergeData(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(BForm, {\n ref: 'form',\n staticClass: 'b-dropdown-form',\n class: [props.formClass, {\n disabled: props.disabled\n }],\n props: props,\n attrs: _objectSpread(_objectSpread({}, $attrs), {}, {\n disabled: props.disabled,\n // Tab index of -1 for keyboard navigation\n tabindex: props.disabled ? null : '-1'\n }),\n on: $listeners\n }, children)]);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_TEXT } from '../../constants/components';\nimport Vue, { mergeData } from '../../utils/vue'; // @vue/component\n\nexport var BDropdownText = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_TEXT,\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'p'\n },\n textClass: {\n type: [String, Array, Object] // default: null\n\n },\n variant: {\n type: String // default: null\n\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tag = props.tag,\n textClass = props.textClass,\n variant = props.variant;\n var attrs = data.attrs || {};\n data.attrs = {};\n return h('li', mergeData(data, {\n attrs: {\n role: 'presentation'\n }\n }), [h(tag, {\n staticClass: 'b-dropdown-text',\n class: [textClass, _defineProperty({}, \"text-\".concat(variant), variant)],\n props: props,\n attrs: attrs,\n ref: 'text'\n }, children)]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_DROPDOWN_GROUP } from '../../constants/components';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_HEADER } from '../../constants/slot-names';\nimport Vue, { mergeData } from '../../utils/vue';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport identity from '../../utils/identity';\nexport var props = {\n id: {\n type: String // default: null\n\n },\n header: {\n type: String // default: null\n\n },\n headerTag: {\n type: String,\n default: 'header'\n },\n headerVariant: {\n type: String // default: null\n\n },\n headerClasses: {\n type: [String, Array, Object] // default: null\n\n },\n ariaDescribedby: {\n type: String // default: null\n\n }\n}; // @vue/component\n\nexport var BDropdownGroup = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $attrs = data.attrs || {};\n data.attrs = {};\n var header;\n var headerId = null;\n\n if (hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots) || props.header) {\n headerId = props.id ? \"_bv_\".concat(props.id, \"_group_dd_header\") : null;\n header = h(props.headerTag, {\n staticClass: 'dropdown-header',\n class: [props.headerClasses, _defineProperty({}, \"text-\".concat(props.variant), props.variant)],\n attrs: {\n id: headerId,\n role: 'heading'\n }\n }, normalizeSlot(SLOT_NAME_HEADER, {}, $scopedSlots, $slots) || props.header);\n }\n\n var adb = [headerId, props.ariaDescribedBy].filter(identity).join(' ').trim();\n return h('li', mergeData(data, {\n attrs: {\n role: 'presentation'\n }\n }), [header || h(), h('ul', {\n staticClass: 'list-unstyled',\n attrs: _objectSpread(_objectSpread({}, $attrs), {}, {\n id: props.id || null,\n role: 'group',\n 'aria-describedby': adb || null\n })\n }, normalizeSlot(SLOT_NAME_DEFAULT, {}, $scopedSlots, $slots))]);\n }\n});","import { BDropdown } from './dropdown';\nimport { BDropdownItem } from './dropdown-item';\nimport { BDropdownItemButton } from './dropdown-item-button';\nimport { BDropdownHeader } from './dropdown-header';\nimport { BDropdownDivider } from './dropdown-divider';\nimport { BDropdownForm } from './dropdown-form';\nimport { BDropdownText } from './dropdown-text';\nimport { BDropdownGroup } from './dropdown-group';\nimport { pluginFactory } from '../../utils/plugins';\nvar DropdownPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BDropdown: BDropdown,\n BDd: BDropdown,\n BDropdownItem: BDropdownItem,\n BDdItem: BDropdownItem,\n BDropdownItemButton: BDropdownItemButton,\n BDropdownItemBtn: BDropdownItemButton,\n BDdItemButton: BDropdownItemButton,\n BDdItemBtn: BDropdownItemButton,\n BDropdownHeader: BDropdownHeader,\n BDdHeader: BDropdownHeader,\n BDropdownDivider: BDropdownDivider,\n BDdDivider: BDropdownDivider,\n BDropdownForm: BDropdownForm,\n BDdForm: BDropdownForm,\n BDropdownText: BDropdownText,\n BDdText: BDropdownText,\n BDropdownGroup: BDropdownGroup,\n BDdGroup: BDropdownGroup\n }\n});\nexport { DropdownPlugin, BDropdown, BDropdownItem, BDropdownItemButton, BDropdownHeader, BDropdownDivider, BDropdownForm, BDropdownText, BDropdownGroup };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\n * ScrollSpy class definition\n */\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { RX_HREF } from '../../constants/regex';\nimport observeDom from '../../utils/observe-dom';\nimport { addClass, closest, getAttr, getBCR, hasClass, isElement, isVisible, matches, offset, position, removeClass, select, selectAll } from '../../utils/dom';\nimport { eventOn, eventOff } from '../../utils/events';\nimport { isString, isUndefined } from '../../utils/inspect';\nimport { mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { hasOwnProperty, toString as objectToString } from '../../utils/object';\nimport { warn } from '../../utils/warn';\n/*\n * Constants / Defaults\n */\n\nvar NAME = 'v-b-scrollspy';\nvar ACTIVATE_EVENT = 'bv::scrollspy::activate';\nvar CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nvar CLASS_NAME_ACTIVE = 'active';\nvar SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nvar SELECTOR_NAV_LINKS = '.nav-link';\nvar SELECTOR_NAV_ITEMS = '.nav-item';\nvar SELECTOR_LIST_ITEMS = '.list-group-item';\nvar SELECTOR_DROPDOWN = '.dropdown, .dropup';\nvar SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\nvar SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nvar METHOD_OFFSET = 'offset';\nvar METHOD_POSITION = 'position';\nvar Default = {\n element: 'body',\n offset: 10,\n method: 'auto',\n throttle: 75\n};\nvar DefaultType = {\n element: '(string|element|component)',\n offset: 'number',\n method: 'string',\n throttle: 'number'\n}; // Transition Events\n\nvar TransitionEndEvents = ['webkitTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd'];\n/*\n * Utility Methods\n */\n// Better var type detection\n\nvar toType = function toType(obj)\n/* istanbul ignore next: not easy to test */\n{\n return objectToString(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}; // Check config properties for expected types\n\n/* istanbul ignore next */\n\n\nvar typeCheckConfig = function typeCheckConfig(componentName, config, configTypes)\n/* istanbul ignore next: not easy to test */\n{\n for (var property in configTypes) {\n if (hasOwnProperty(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && isElement(value) ? 'element' : toType(value); // handle Vue instances\n\n valueType = value && value._isVue ? 'component' : valueType;\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n /* istanbul ignore next */\n warn(\"\".concat(componentName, \": Option \\\"\").concat(property, \"\\\" provided type \\\"\").concat(valueType, \"\\\" but expected type \\\"\").concat(expectedTypes, \"\\\"\"));\n }\n }\n }\n};\n/*\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n/* istanbul ignore next: not easy to test */\n\n\nvar ScrollSpy\n/* istanbul ignore next: not easy to test */\n= /*#__PURE__*/function () {\n function ScrollSpy(element, config, $root) {\n _classCallCheck(this, ScrollSpy);\n\n // The element we activate links in\n this.$el = element;\n this.$scroller = null;\n this.$selector = [SELECTOR_NAV_LINKS, SELECTOR_LIST_ITEMS, SELECTOR_DROPDOWN_ITEMS].join(',');\n this.$offsets = [];\n this.$targets = [];\n this.$activeTarget = null;\n this.$scrollHeight = 0;\n this.$resizeTimeout = null;\n this.$scrollerObserver = null;\n this.$targetsObserver = null;\n this.$root = $root || null;\n this.$config = null;\n this.updateConfig(config);\n }\n\n _createClass(ScrollSpy, [{\n key: \"updateConfig\",\n value: function updateConfig(config, $root) {\n if (this.$scroller) {\n // Just in case out scroll element has changed\n this.unlisten();\n this.$scroller = null;\n }\n\n var cfg = _objectSpread(_objectSpread({}, this.constructor.Default), config);\n\n if ($root) {\n this.$root = $root;\n }\n\n typeCheckConfig(this.constructor.Name, cfg, this.constructor.DefaultType);\n this.$config = cfg;\n\n if (this.$root) {\n var self = this;\n this.$root.$nextTick(function () {\n self.listen();\n });\n } else {\n this.listen();\n }\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.unlisten();\n clearTimeout(this.$resizeTimeout);\n this.$resizeTimeout = null;\n this.$el = null;\n this.$config = null;\n this.$scroller = null;\n this.$selector = null;\n this.$offsets = null;\n this.$targets = null;\n this.$activeTarget = null;\n this.$scrollHeight = null;\n }\n }, {\n key: \"listen\",\n value: function listen() {\n var _this = this;\n\n var scroller = this.getScroller();\n\n if (scroller && scroller.tagName !== 'BODY') {\n eventOn(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n }\n\n eventOn(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOn(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOn(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n TransitionEndEvents.forEach(function (evtName) {\n eventOn(window, evtName, _this, EVENT_OPTIONS_NO_CAPTURE);\n });\n this.setObservers(true); // Schedule a refresh\n\n this.handleEvent('refresh');\n }\n }, {\n key: \"unlisten\",\n value: function unlisten() {\n var _this2 = this;\n\n var scroller = this.getScroller();\n this.setObservers(false);\n\n if (scroller && scroller.tagName !== 'BODY') {\n eventOff(scroller, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n }\n\n eventOff(window, 'scroll', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOff(window, 'resize', this, EVENT_OPTIONS_NO_CAPTURE);\n eventOff(window, 'orientationchange', this, EVENT_OPTIONS_NO_CAPTURE);\n TransitionEndEvents.forEach(function (evtName) {\n eventOff(window, evtName, _this2, EVENT_OPTIONS_NO_CAPTURE);\n });\n }\n }, {\n key: \"setObservers\",\n value: function setObservers(on) {\n var _this3 = this;\n\n // We observe both the scroller for content changes, and the target links\n this.$scrollerObserver && this.$scrollerObserver.disconnect();\n this.$targetsObserver && this.$targetsObserver.disconnect();\n this.$scrollerObserver = null;\n this.$targetsObserver = null;\n\n if (on) {\n this.$targetsObserver = observeDom(this.$el, function () {\n _this3.handleEvent('mutation');\n }, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['href']\n });\n this.$scrollerObserver = observeDom(this.getScroller(), function () {\n _this3.handleEvent('mutation');\n }, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: ['id', 'style', 'class']\n });\n }\n } // General event handler\n\n }, {\n key: \"handleEvent\",\n value: function handleEvent(evt) {\n var type = isString(evt) ? evt : evt.type;\n var self = this;\n\n var resizeThrottle = function resizeThrottle() {\n if (!self.$resizeTimeout) {\n self.$resizeTimeout = setTimeout(function () {\n self.refresh();\n self.process();\n self.$resizeTimeout = null;\n }, self.$config.throttle);\n }\n };\n\n if (type === 'scroll') {\n if (!this.$scrollerObserver) {\n // Just in case we are added to the DOM before the scroll target is\n // We re-instantiate our listeners, just in case\n this.listen();\n }\n\n this.process();\n } else if (/(resize|orientationchange|mutation|refresh)/.test(type)) {\n // Postpone these events by throttle time\n resizeThrottle();\n }\n } // Refresh the list of target links on the element we are applied to\n\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this4 = this;\n\n var scroller = this.getScroller();\n\n if (!scroller) {\n return;\n }\n\n var autoMethod = scroller !== scroller.window ? METHOD_POSITION : METHOD_OFFSET;\n var method = this.$config.method === 'auto' ? autoMethod : this.$config.method;\n var methodFn = method === METHOD_POSITION ? position : offset;\n var offsetBase = method === METHOD_POSITION ? this.getScrollTop() : 0;\n this.$offsets = [];\n this.$targets = [];\n this.$scrollHeight = this.getScrollHeight(); // Find all the unique link HREFs that we will control\n\n selectAll(this.$selector, this.$el) // Get HREF value\n .map(function (link) {\n return getAttr(link, 'href');\n }) // Filter out HREFs that do not match our RegExp\n .filter(function (href) {\n return href && RX_HREF.test(href || '');\n }) // Find all elements with ID that match HREF hash\n .map(function (href) {\n // Convert HREF into an ID (including # at beginning)\n var id = href.replace(RX_HREF, '$1').trim();\n\n if (!id) {\n return null;\n } // Find the element with the ID specified by id\n\n\n var el = select(id, scroller);\n\n if (el && isVisible(el)) {\n return {\n offset: toInteger(methodFn(el).top, 0) + offsetBase,\n target: id\n };\n }\n\n return null;\n }).filter(Boolean) // Sort them by their offsets (smallest first)\n .sort(function (a, b) {\n return a.offset - b.offset;\n }) // record only unique targets/offsets\n .reduce(function (memo, item) {\n if (!memo[item.target]) {\n _this4.$offsets.push(item.offset);\n\n _this4.$targets.push(item.target);\n\n memo[item.target] = true;\n }\n\n return memo;\n }, {}); // Return this for easy chaining\n\n return this;\n } // Handle activating/clearing\n\n }, {\n key: \"process\",\n value: function process() {\n var scrollTop = this.getScrollTop() + this.$config.offset;\n var scrollHeight = this.getScrollHeight();\n var maxScroll = this.$config.offset + scrollHeight - this.getOffsetHeight();\n\n if (this.$scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this.$targets[this.$targets.length - 1];\n\n if (this.$activeTarget !== target) {\n this.activate(target);\n }\n\n return;\n }\n\n if (this.$activeTarget && scrollTop < this.$offsets[0] && this.$offsets[0] > 0) {\n this.$activeTarget = null;\n this.clear();\n return;\n }\n\n for (var i = this.$offsets.length; i--;) {\n var isActiveTarget = this.$activeTarget !== this.$targets[i] && scrollTop >= this.$offsets[i] && (isUndefined(this.$offsets[i + 1]) || scrollTop < this.$offsets[i + 1]);\n\n if (isActiveTarget) {\n this.activate(this.$targets[i]);\n }\n }\n }\n }, {\n key: \"getScroller\",\n value: function getScroller() {\n if (this.$scroller) {\n return this.$scroller;\n }\n\n var scroller = this.$config.element;\n\n if (!scroller) {\n return null;\n } else if (isElement(scroller.$el)) {\n scroller = scroller.$el;\n } else if (isString(scroller)) {\n scroller = select(scroller);\n }\n\n if (!scroller) {\n return null;\n }\n\n this.$scroller = scroller.tagName === 'BODY' ? window : scroller;\n return this.$scroller;\n }\n }, {\n key: \"getScrollTop\",\n value: function getScrollTop() {\n var scroller = this.getScroller();\n return scroller === window ? scroller.pageYOffset : scroller.scrollTop;\n }\n }, {\n key: \"getScrollHeight\",\n value: function getScrollHeight() {\n return this.getScroller().scrollHeight || mathMax(document.body.scrollHeight, document.documentElement.scrollHeight);\n }\n }, {\n key: \"getOffsetHeight\",\n value: function getOffsetHeight() {\n var scroller = this.getScroller();\n return scroller === window ? window.innerHeight : getBCR(scroller).height;\n }\n }, {\n key: \"activate\",\n value: function activate(target) {\n var _this5 = this;\n\n this.$activeTarget = target;\n this.clear(); // Grab the list of target links ()\n\n var links = selectAll(this.$selector // Split out the base selectors\n .split(',') // Map to a selector that matches links with HREF ending in the ID (including '#')\n .map(function (selector) {\n return \"\".concat(selector, \"[href$=\\\"\").concat(target, \"\\\"]\");\n }) // Join back into a single selector string\n .join(','), this.$el);\n links.forEach(function (link) {\n if (hasClass(link, CLASS_NAME_DROPDOWN_ITEM)) {\n // This is a dropdown item, so find the .dropdown-toggle and set its state\n var dropdown = closest(SELECTOR_DROPDOWN, link);\n\n if (dropdown) {\n _this5.setActiveState(select(SELECTOR_DROPDOWN_TOGGLE, dropdown), true);\n } // Also set this link's state\n\n\n _this5.setActiveState(link, true);\n } else {\n // Set triggered link as active\n _this5.setActiveState(link, true);\n\n if (matches(link.parentElement, SELECTOR_NAV_ITEMS)) {\n // Handle nav-link inside nav-item, and set nav-item active\n _this5.setActiveState(link.parentElement, true);\n } // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n\n\n var el = link;\n\n while (el) {\n el = closest(SELECTOR_NAV_LIST_GROUP, el);\n var sibling = el ? el.previousElementSibling : null;\n\n if (sibling && matches(sibling, \"\".concat(SELECTOR_NAV_LINKS, \", \").concat(SELECTOR_LIST_ITEMS))) {\n _this5.setActiveState(sibling, true);\n } // Handle special case where nav-link is inside a nav-item\n\n\n if (sibling && matches(sibling, SELECTOR_NAV_ITEMS)) {\n _this5.setActiveState(select(SELECTOR_NAV_LINKS, sibling), true); // Add active state to nav-item as well\n\n\n _this5.setActiveState(sibling, true);\n }\n }\n }\n }); // Signal event to via $root, passing ID of activated target and reference to array of links\n\n if (links && links.length > 0 && this.$root) {\n this.$root.$emit(ACTIVATE_EVENT, target, links);\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n var _this6 = this;\n\n selectAll(\"\".concat(this.$selector, \", \").concat(SELECTOR_NAV_ITEMS), this.$el).filter(function (el) {\n return hasClass(el, CLASS_NAME_ACTIVE);\n }).forEach(function (el) {\n return _this6.setActiveState(el, false);\n });\n }\n }, {\n key: \"setActiveState\",\n value: function setActiveState(el, active) {\n if (!el) {\n return;\n }\n\n if (active) {\n addClass(el, CLASS_NAME_ACTIVE);\n } else {\n removeClass(el, CLASS_NAME_ACTIVE);\n }\n }\n }], [{\n key: \"Name\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return ScrollSpy;\n}();\n\nexport default ScrollSpy;","import ScrollSpy from './scrollspy.class';\nimport { isBrowser } from '../../utils/env';\nimport { isNumber, isObject, isString } from '../../utils/inspect';\nimport { mathRound } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { keys } from '../../utils/object'; // Key we use to store our instance\n\nvar BV_SCROLLSPY = '__BV_ScrollSpy__'; // Pre-compiled regular expressions\n\nvar onlyDigitsRE = /^\\d+$/;\nvar offsetRE = /^(auto|position|offset)$/; // Build a ScrollSpy config based on bindings (if any)\n// Arguments and modifiers take precedence over passed value config object\n\n/* istanbul ignore next: not easy to test */\n\nvar parseBindings = function parseBindings(bindings)\n/* istanbul ignore next: not easy to test */\n{\n var config = {}; // If argument, assume element ID\n\n if (bindings.arg) {\n // Element ID specified as arg\n // We must prepend '#' to become a CSS selector\n config.element = \"#\".concat(bindings.arg);\n } // Process modifiers\n\n\n keys(bindings.modifiers).forEach(function (mod) {\n if (onlyDigitsRE.test(mod)) {\n // Offset value\n config.offset = toInteger(mod, 0);\n } else if (offsetRE.test(mod)) {\n // Offset method\n config.method = mod;\n }\n }); // Process value\n\n if (isString(bindings.value)) {\n // Value is a CSS ID or selector\n config.element = bindings.value;\n } else if (isNumber(bindings.value)) {\n // Value is offset\n config.offset = mathRound(bindings.value);\n } else if (isObject(bindings.value)) {\n // Value is config object\n // Filter the object based on our supported config options\n keys(bindings.value).filter(function (k) {\n return !!ScrollSpy.DefaultType[k];\n }).forEach(function (k) {\n config[k] = bindings.value[k];\n });\n }\n\n return config;\n}; // Add or update ScrollSpy on our element\n\n\nvar applyScrollspy = function applyScrollspy(el, bindings, vnode)\n/* istanbul ignore next: not easy to test */\n{\n if (!isBrowser) {\n /* istanbul ignore next */\n return;\n }\n\n var config = parseBindings(bindings);\n\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].updateConfig(config, vnode.context.$root);\n } else {\n el[BV_SCROLLSPY] = new ScrollSpy(el, config, vnode.context.$root);\n }\n}; // Remove ScrollSpy on our element\n\n/* istanbul ignore next: not easy to test */\n\n\nvar removeScrollspy = function removeScrollspy(el)\n/* istanbul ignore next: not easy to test */\n{\n if (el[BV_SCROLLSPY]) {\n el[BV_SCROLLSPY].dispose();\n el[BV_SCROLLSPY] = null;\n delete el[BV_SCROLLSPY];\n }\n};\n/*\n * Export our directive\n */\n\n\nexport var VBScrollspy = {\n /* istanbul ignore next: not easy to test */\n bind: function bind(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n\n /* istanbul ignore next: not easy to test */\n inserted: function inserted(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n applyScrollspy(el, bindings, vnode);\n },\n\n /* istanbul ignore next: not easy to test */\n update: function update(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n\n /* istanbul ignore next: not easy to test */\n componentUpdated: function componentUpdated(el, bindings, vnode)\n /* istanbul ignore next: not easy to test */\n {\n if (bindings.value !== bindings.oldValue) {\n applyScrollspy(el, bindings, vnode);\n }\n },\n\n /* istanbul ignore next: not easy to test */\n unbind: function unbind(el)\n /* istanbul ignore next: not easy to test */\n {\n removeScrollspy(el);\n }\n};","import { VBScrollspy } from './scrollspy';\nimport { pluginFactory } from '../../utils/plugins';\nvar VBScrollspyPlugin = /*#__PURE__*/pluginFactory({\n directives: {\n VBScrollspy: VBScrollspy\n }\n});\nexport { VBScrollspyPlugin, VBScrollspy };","import { EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { getAttr, hasAttr, isDisabled, matches, select, setAttr } from '../../utils/dom';\nimport { eventOn, eventOff } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object'; // Emitted show event for modal\n\nvar EVENT_SHOW = 'bv::show::modal'; // Prop name we use to store info on root element\n\nvar PROPERTY = '__bv_modal_directive__';\n\nvar getTarget = function getTarget(_ref) {\n var _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? {} : _ref$modifiers,\n arg = _ref.arg,\n value = _ref.value;\n // Try value, then arg, otherwise pick last modifier\n return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\n\nvar getTriggerElement = function getTriggerElement(el) {\n // If root element is a dropdown-item or nav-item, we\n // need to target the inner link or button instead\n return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\n\nvar setRole = function setRole(trigger) {\n // Ensure accessibility on non button elements\n if (trigger && trigger.tagName !== 'BUTTON') {\n // Only set a role if the trigger element doesn't have one\n if (!hasAttr(trigger, 'role')) {\n setAttr(trigger, 'role', 'button');\n } // Add a tabindex is not a button or link, and tabindex is not provided\n\n\n if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n setAttr(trigger, 'tabindex', '0');\n }\n }\n};\n\nvar bind = function bind(el, binding, vnode) {\n var target = getTarget(binding);\n var trigger = getTriggerElement(el);\n\n if (target && trigger) {\n var handler = function handler(evt) {\n // `currentTarget` is the element with the listener on it\n var currentTarget = evt.currentTarget;\n\n if (!isDisabled(currentTarget)) {\n var type = evt.type;\n var key = evt.keyCode; // Open modal only if trigger is not disabled\n\n if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n vnode.context.$root.$emit(EVENT_SHOW, target, currentTarget);\n }\n }\n };\n\n el[PROPERTY] = {\n handler: handler,\n target: target,\n trigger: trigger\n }; // If element is not a button, we add `role=\"button\"` for accessibility\n\n setRole(trigger); // Listen for click events\n\n eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n\n if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n // If trigger isn't a button but has role button,\n // we also listen for `keydown.space` && `keydown.enter`\n eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n }\n};\n\nvar unbind = function unbind(el) {\n var oldProp = el[PROPERTY] || {};\n var trigger = oldProp.trigger;\n var handler = oldProp.handler;\n\n if (trigger && handler) {\n eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n }\n\n delete el[PROPERTY];\n};\n\nvar componentUpdated = function componentUpdated(el, binding, vnode) {\n var oldProp = el[PROPERTY] || {};\n var target = getTarget(binding);\n var trigger = getTriggerElement(el);\n\n if (target !== oldProp.target || trigger !== oldProp.trigger) {\n // We bind and rebind if the target or trigger changes\n unbind(el, binding, vnode);\n bind(el, binding, vnode);\n } // If trigger element is not a button, ensure `role=\"button\"`\n // is still set for accessibility\n\n\n setRole(trigger);\n};\n\nvar updated = function updated() {};\n/*\n * Export our directive\n */\n\n\nexport var VBModal = {\n inserted: componentUpdated,\n updated: updated,\n componentUpdated: componentUpdated,\n unbind: unbind\n};","import { BModal } from './modal';\nimport { VBModal } from '../../directives/modal/modal';\nimport { BVModalPlugin } from './helpers/bv-modal';\nimport { pluginFactory } from '../../utils/plugins';\nvar ModalPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BModal: BModal\n },\n directives: {\n VBModal: VBModal\n },\n // $bvModal injection\n plugins: {\n BVModalPlugin: BVModalPlugin\n }\n});\nexport { ModalPlugin, BModal };","import { isBrowser, hasPromiseSupport, hasMutationObserverSupport, getNoWarn } from './env';\n/**\n * Log a warning message to the console with BootstrapVue formatting\n * @param {string} message\n */\n\nexport var warn = function warn(message)\n/* istanbul ignore next */\n{\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!getNoWarn()) {\n console.warn(\"[BootstrapVue warn]: \".concat(source ? \"\".concat(source, \" - \") : '').concat(message));\n }\n};\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNotClient = function warnNotClient(source) {\n /* istanbul ignore else */\n if (isBrowser) {\n return false;\n } else {\n warn(\"\".concat(source, \": Can not be called during SSR.\"));\n return true;\n }\n};\n/**\n * Warn when no Promise support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNoPromiseSupport = function warnNoPromiseSupport(source) {\n /* istanbul ignore else */\n if (hasPromiseSupport) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires Promise support.\"));\n return true;\n }\n};\n/**\n * Warn when no MutationObserver support is given\n * @param {string} source\n * @returns {boolean} warned\n */\n\nexport var warnNoMutationObserverSupport = function warnNoMutationObserverSupport(source) {\n /* istanbul ignore else */\n if (hasMutationObserverSupport) {\n return false;\n } else {\n warn(\"\".concat(source, \": Requires MutationObserver support.\"));\n return true;\n }\n};","import { RX_HTML_TAGS } from '../constants/regex'; // Removes anything that looks like an HTML tag from the supplied string\n\nexport var stripTags = function stripTags() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return String(text).replace(RX_HTML_TAGS, '');\n}; // Generate a `domProps` object for either `innerHTML`, `textContent` or an empty object\n\nexport var htmlOrText = function htmlOrText(innerHTML, textContent) {\n return innerHTML ? {\n innerHTML: innerHTML\n } : textContent ? {\n textContent: textContent\n } : {};\n};","// SSR safe client-side ID attribute generation\n// ID's can only be generated client-side, after mount\n// `this._uid` is not synched between server and client\n// @vue/component\nexport default {\n props: {\n id: {\n type: String // default: null\n\n }\n },\n data: function data() {\n return {\n localId_: null\n };\n },\n computed: {\n safeId: function safeId() {\n // Computed property that returns a dynamic function for creating the ID\n // Reacts to changes in both `.id` and `.localId_` and regenerates a new function\n var id = this.id || this.localId_; // We return a function that accepts an optional suffix string\n // So this computed prop looks and works like a method\n // but benefits from Vue's computed prop caching\n\n var fn = function fn(suffix) {\n if (!id) {\n return null;\n }\n\n suffix = String(suffix || '').replace(/\\s+/g, '_');\n return suffix ? id + '_' + suffix : id;\n };\n\n return fn;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // `mounted()` only occurs client-side\n this.$nextTick(function () {\n // Update DOM with auto-generated ID after mount\n // to prevent SSR hydration errors\n _this.localId_ = \"__BVID__\".concat(_this._uid);\n });\n }\n};","// Math utilty functions\nexport var mathMin = Math.min;\nexport var mathMax = Math.max;\nexport var mathAbs = Math.abs;\nexport var mathCeil = Math.ceil;\nexport var mathFloor = Math.floor;\nexport var mathPow = Math.pow;\nexport var mathRound = Math.round;","/**\n * vee-validate v2.2.15\n * (c) 2019 Abdelrahman Awad\n * @license MIT\n */\n// \n\nvar isTextInput = function (el) {\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'textarea', 'number'], el.type);\n};\n\nvar isCheckboxOrRadioInput = function (el) {\n return includes(['radio', 'checkbox'], el.type);\n};\n\nvar isDateInput = function (el) {\n return includes(['date', 'week', 'month', 'datetime-local', 'time'], el.type);\n};\n\n/**\n * Gets the data attribute. the name must be kebab-case.\n */\nvar getDataAttribute = function (el, name) { return el.getAttribute((\"data-vv-\" + name)); };\n\nvar isNaN$1 = function (value) {\n if ('isNaN' in Number) {\n return Number.isNaN(value);\n }\n\n // eslint-disable-next-line\n return typeof(value) === 'number' && value !== value;\n};\n\n/**\n * Checks if the values are either null or undefined.\n */\nvar isNullOrUndefined = function () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return values.every(function (value) {\n return value === null || value === undefined;\n });\n};\n\n/**\n * Creates the default flags object.\n */\nvar createFlags = function () { return ({\n untouched: true,\n touched: false,\n dirty: false,\n pristine: true,\n valid: null,\n invalid: null,\n validated: false,\n pending: false,\n required: false,\n changed: false\n}); };\n\n/**\n * Shallow object comparison.\n */\nvar isEqual = function (lhs, rhs) {\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\n }\n\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\n if (lhs.length !== rhs.length) { return false; }\n\n for (var i = 0; i < lhs.length; i++) {\n if (!isEqual(lhs[i], rhs[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n // if both are objects, compare each key recursively.\n if (isObject(lhs) && isObject(rhs)) {\n return Object.keys(lhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n }) && Object.keys(rhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n });\n }\n\n if (isNaN$1(lhs) && isNaN$1(rhs)) {\n return true;\n }\n\n return lhs === rhs;\n};\n\n/**\n * Determines the input field scope.\n */\nvar getScope = function (el) {\n var scope = getDataAttribute(el, 'scope');\n if (isNullOrUndefined(scope)) {\n var form = getForm(el);\n\n if (form) {\n scope = getDataAttribute(form, 'scope');\n }\n }\n\n return !isNullOrUndefined(scope) ? scope : null;\n};\n\n/**\n * Get the closest form element.\n */\nvar getForm = function (el) {\n if (isNullOrUndefined(el)) { return null; }\n\n if (el.tagName === 'FORM') { return el; }\n\n if (!isNullOrUndefined(el.form)) { return el.form; }\n\n return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\n};\n\n/**\n * Gets the value in an object safely.\n */\nvar getPath = function (path, target, def) {\n if ( def === void 0 ) def = undefined;\n\n if (!path || !target) { return def; }\n\n var value = target;\n path.split('.').every(function (prop) {\n if (prop in value) {\n value = value[prop];\n\n return true;\n }\n\n value = def;\n\n return false;\n });\n\n return value;\n};\n\n/**\n * Checks if path exists within an object.\n */\nvar hasPath = function (path, target) {\n var obj = target;\n var previousPath = null;\n var isNullOrNonObject = false;\n var isValidPath = path.split('.').reduce(function (reducer, prop) {\n if (obj == null || typeof obj !== 'object') {\n isNullOrNonObject = true;\n return reducer && false;\n }\n\n if (prop in obj) {\n obj = obj[prop];\n previousPath = previousPath === null ? prop : previousPath + '.' + prop;\n\n return reducer && true;\n }\n\n return reducer && false;\n }, true);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isNullOrNonObject) {\n throw new Error(previousPath + ' is not an object');\n }\n }\n\n return isValidPath;\n};\n\n/**\n * Parses a rule string expression.\n */\nvar parseRule = function (rule) {\n var params = [];\n var name = rule.split(':')[0];\n\n if (includes(rule, ':')) {\n params = rule.split(':').slice(1).join(':').split(',');\n }\n\n return { name: name, params: params };\n};\n\n/**\n * Debounces a function.\n */\nvar debounce = function (fn, wait, token) {\n if ( wait === void 0 ) wait = 0;\n if ( token === void 0 ) token = { cancelled: false };\n\n if (wait === 0) {\n return fn;\n }\n\n var timeout;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var later = function () {\n timeout = null;\n\n // check if the fn call was cancelled.\n if (!token.cancelled) { fn.apply(void 0, args); }\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (!timeout) { fn.apply(void 0, args); }\n };\n};\n\n/**\n * Appends a rule definition to a list of rules.\n */\nvar appendRule = function (rule, rules) {\n if (!rules) {\n return normalizeRules(rule);\n }\n\n if (!rule) {\n return normalizeRules(rules);\n }\n\n if (typeof rules === 'string') {\n rules = normalizeRules(rules);\n }\n\n return assign({}, rules, normalizeRules(rule));\n};\n\n/**\n * Normalizes the given rules expression.\n */\nvar normalizeRules = function (rules) {\n // if falsy value return an empty object.\n if (!rules) {\n return {};\n }\n\n if (isObject(rules)) {\n // $FlowFixMe\n return Object.keys(rules).reduce(function (prev, curr) {\n var params = [];\n // $FlowFixMe\n if (rules[curr] === true) {\n params = [];\n } else if (Array.isArray(rules[curr])) {\n params = rules[curr];\n } else if (isObject(rules[curr])) {\n params = rules[curr];\n } else {\n params = [rules[curr]];\n }\n\n // $FlowFixMe\n if (rules[curr] !== false) {\n prev[curr] = params;\n }\n\n return prev;\n }, {});\n }\n\n if (typeof rules !== 'string') {\n warn('rules must be either a string or an object.');\n return {};\n }\n\n return rules.split('|').reduce(function (prev, rule) {\n var parsedRule = parseRule(rule);\n if (!parsedRule.name) {\n return prev;\n }\n\n prev[parsedRule.name] = parsedRule.params;\n return prev;\n }, {});\n};\n\n/**\n * Emits a warning to the console.\n */\nvar warn = function (message) {\n console.warn((\"[vee-validate] \" + message)); // eslint-disable-line\n};\n\n/**\n * Creates a branded error object.\n */\nvar createError = function (message) { return new Error((\"[vee-validate] \" + message)); };\n\n/**\n * Checks if the value is an object.\n */\nvar isObject = function (obj) { return obj !== null && obj && typeof obj === 'object' && ! Array.isArray(obj); };\n\n/**\n * Checks if a function is callable.\n */\nvar isCallable = function (func) { return typeof func === 'function'; };\n\n/**\n * Check if element has the css class on it.\n */\nvar hasClass = function (el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n\n return !!el.className.match(new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\")));\n};\n\n/**\n * Adds the provided css className to the element.\n */\nvar addClass = function (el, className) {\n if (el.classList) {\n el.classList.add(className);\n return;\n }\n\n if (!hasClass(el, className)) {\n el.className += \" \" + className;\n }\n};\n\n/**\n * Remove the provided css className from the element.\n */\nvar removeClass = function (el, className) {\n if (el.classList) {\n el.classList.remove(className);\n return;\n }\n\n if (hasClass(el, className)) {\n var reg = new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n el.className = el.className.replace(reg, ' ');\n }\n};\n\n/**\n * Adds or removes a class name on the input depending on the status flag.\n */\nvar toggleClass = function (el, className, status) {\n if (!el || !className) { return; }\n\n if (Array.isArray(className)) {\n className.forEach(function (item) { return toggleClass(el, item, status); });\n return;\n }\n\n if (status) {\n return addClass(el, className);\n }\n\n removeClass(el, className);\n};\n\n/**\n * Converts an array-like object to array, provides a simple polyfill for Array.from\n */\nvar toArray = function (arrayLike) {\n if (isCallable(Array.from)) {\n return Array.from(arrayLike);\n }\n\n var array = [];\n var length = arrayLike.length;\n /* istanbul ignore next */\n for (var i = 0; i < length; i++) {\n array.push(arrayLike[i]);\n }\n\n /* istanbul ignore next */\n return array;\n};\n\n/**\n * Converts an array-like object to array and place other elements in an array\n */\nvar ensureArray = function (arrayLike) {\n if (Array.isArray(arrayLike)) {\n return [].concat( arrayLike );\n }\n var array = toArray(arrayLike);\n return isEmptyArray(array) ? [arrayLike] : array;\n};\n\n/**\n * Assign polyfill from the mdn.\n */\nvar assign = function (target) {\n var others = [], len = arguments.length - 1;\n while ( len-- > 0 ) others[ len ] = arguments[ len + 1 ];\n\n /* istanbul ignore else */\n if (isCallable(Object.assign)) {\n return Object.assign.apply(Object, [ target ].concat( others ));\n }\n\n /* istanbul ignore next */\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n /* istanbul ignore next */\n var to = Object(target);\n /* istanbul ignore next */\n others.forEach(function (arg) {\n // Skip over if undefined or null\n if (arg != null) {\n Object.keys(arg).forEach(function (key) {\n to[key] = arg[key];\n });\n }\n });\n /* istanbul ignore next */\n return to;\n};\n\nvar id = 0;\nvar idTemplate = '{id}';\n\n/**\n * Generates a unique id.\n */\nvar uniqId = function () {\n // handle too many uses of uniqId, although unlikely.\n if (id >= 9999) {\n id = 0;\n // shift the template.\n idTemplate = idTemplate.replace('{id}', '_{id}');\n }\n\n id++;\n var newId = idTemplate.replace('{id}', String(id));\n\n return newId;\n};\n\nvar findIndex = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * finds the first element that satisfies the predicate callback, polyfills array.find\n */\nvar find = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n var idx = findIndex(array, predicate);\n\n return idx === -1 ? undefined : array[idx];\n};\n\nvar isBuiltInComponent = function (vnode) {\n if (!vnode) {\n return false;\n }\n\n var tag = vnode.componentOptions.tag;\n\n return /^(keep-alive|transition|transition-group)$/.test(tag);\n};\n\nvar makeDelayObject = function (events, delay, delayConfig) {\n if (typeof delay === 'number') {\n return events.reduce(function (prev, e) {\n prev[e] = delay;\n return prev;\n }, {});\n }\n\n return events.reduce(function (prev, e) {\n if (typeof delay === 'object' && e in delay) {\n prev[e] = delay[e];\n return prev;\n }\n\n if (typeof delayConfig === 'number') {\n prev[e] = delayConfig;\n return prev;\n }\n\n prev[e] = (delayConfig && delayConfig[e]) || 0;\n\n return prev;\n }, {});\n};\n\nvar deepParseInt = function (input) {\n if (typeof input === 'number') { return input; }\n\n if (typeof input === 'string') { return parseInt(input); }\n\n var map = {};\n for (var element in input) {\n map[element] = parseInt(input[element]);\n }\n\n return map;\n};\n\nvar merge = function (target, source) {\n if (! (isObject(target) && isObject(source))) {\n return target;\n }\n\n Object.keys(source).forEach(function (key) {\n var obj, obj$1;\n\n if (isObject(source[key])) {\n if (! target[key]) {\n assign(target, ( obj = {}, obj[key] = {}, obj ));\n }\n\n merge(target[key], source[key]);\n return;\n }\n\n assign(target, ( obj$1 = {}, obj$1[key] = source[key], obj$1 ));\n });\n\n return target;\n};\n\nvar fillRulesFromElement = function (el, rules) {\n if (el.required) {\n rules = appendRule('required', rules);\n }\n\n if (isTextInput(el)) {\n if (el.type === 'email') {\n rules = appendRule((\"email\" + (el.multiple ? ':multiple' : '')), rules);\n }\n\n if (el.pattern) {\n rules = appendRule({ regex: el.pattern }, rules);\n }\n\n // 524288 is the max on some browsers and test environments.\n if (el.maxLength >= 0 && el.maxLength < 524288) {\n rules = appendRule((\"max:\" + (el.maxLength)), rules);\n }\n\n if (el.minLength > 0) {\n rules = appendRule((\"min:\" + (el.minLength)), rules);\n }\n\n if (el.type === 'number') {\n rules = appendRule('decimal', rules);\n if (el.min !== '') {\n rules = appendRule((\"min_value:\" + (el.min)), rules);\n }\n\n if (el.max !== '') {\n rules = appendRule((\"max_value:\" + (el.max)), rules);\n }\n }\n\n return rules;\n }\n\n if (isDateInput(el)) {\n var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\n\n if (el.type === 'date') {\n return appendRule('date_format:yyyy-MM-dd', rules);\n }\n\n if (el.type === 'datetime-local') {\n return appendRule((\"date_format:yyyy-MM-ddT\" + timeFormat), rules);\n }\n\n if (el.type === 'month') {\n return appendRule('date_format:yyyy-MM', rules);\n }\n\n if (el.type === 'week') {\n return appendRule('date_format:yyyy-[W]WW', rules);\n }\n\n if (el.type === 'time') {\n return appendRule((\"date_format:\" + timeFormat), rules);\n }\n }\n\n return rules;\n};\n\nvar values = function (obj) {\n if (isCallable(Object.values)) {\n return Object.values(obj);\n }\n\n // fallback to keys()\n /* istanbul ignore next */\n return Object.keys(obj).map(function (k) { return obj[k]; });\n};\n\nvar parseSelector = function (selector) {\n var rule = null;\n if (includes(selector, ':')) {\n rule = selector.split(':').pop();\n selector = selector.replace((\":\" + rule), '');\n }\n\n if (selector[0] === '#') {\n return {\n id: selector.slice(1),\n rule: rule,\n name: null,\n scope: null\n };\n }\n\n var scope = null;\n var name = selector;\n if (includes(selector, '.')) {\n var parts = selector.split('.');\n scope = parts[0];\n name = parts.slice(1).join('.');\n }\n\n return {\n id: null,\n scope: scope,\n name: name,\n rule: rule\n };\n};\n\nvar includes = function (collection, item) {\n return collection.indexOf(item) !== -1;\n};\n\nvar isEmptyArray = function (arr) {\n return Array.isArray(arr) && arr.length === 0;\n};\n\nvar defineNonReactive = function (obj, prop, value) {\n Object.defineProperty(obj, prop, {\n configurable: false,\n writable: true,\n value: value\n });\n};\n\n// \n\nvar LOCALE = 'en';\n\nvar Dictionary = function Dictionary (dictionary) {\n if ( dictionary === void 0 ) dictionary = {};\n\n this.container = {};\n this.merge(dictionary);\n};\n\nvar prototypeAccessors = { locale: { configurable: true } };\n\nprototypeAccessors.locale.get = function () {\n return LOCALE;\n};\n\nprototypeAccessors.locale.set = function (value) {\n LOCALE = value || 'en';\n};\n\nDictionary.prototype.hasLocale = function hasLocale (locale) {\n return !!this.container[locale];\n};\n\nDictionary.prototype.setDateFormat = function setDateFormat (locale, format) {\n if (!this.container[locale]) {\n this.container[locale] = {};\n }\n\n this.container[locale].dateFormat = format;\n};\n\nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n if (!this.container[locale] || !this.container[locale].dateFormat) {\n return null;\n }\n\n return this.container[locale].dateFormat;\n};\n\nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\n var message = null;\n if (!this.hasMessage(locale, key)) {\n message = this._getDefaultMessage(locale);\n } else {\n message = this.container[locale].messages[key];\n }\n\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\n/**\n * Gets a specific message for field. falls back to the rule message.\n */\nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\n if (!this.hasLocale(locale)) {\n return this.getMessage(locale, key, data);\n }\n\n var dict = this.container[locale].custom && this.container[locale].custom[field];\n if (!dict || !dict[key]) {\n return this.getMessage(locale, key, data);\n }\n\n var message = dict[key];\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage (locale) {\n if (this.hasMessage(locale, '_default')) {\n return this.container[locale].messages._default;\n }\n\n return this.container.en.messages._default;\n};\n\nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n if (!this.hasAttribute(locale, key)) {\n return fallback;\n }\n\n return this.container[locale].attributes[key];\n};\n\nDictionary.prototype.hasMessage = function hasMessage (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].messages &&\n this.container[locale].messages[key]\n );\n};\n\nDictionary.prototype.hasAttribute = function hasAttribute (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].attributes &&\n this.container[locale].attributes[key]\n );\n};\n\nDictionary.prototype.merge = function merge$1 (dictionary) {\n merge(this.container, dictionary);\n};\n\nDictionary.prototype.setMessage = function setMessage (locale, key, message) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n \n if (!this.container[locale].messages) {\n this.container[locale].messages = {};\n }\n\n this.container[locale].messages[key] = message;\n};\n\nDictionary.prototype.setAttribute = function setAttribute (locale, key, attribute) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n\n this.container[locale].attributes[key] = attribute;\n};\n\nObject.defineProperties( Dictionary.prototype, prototypeAccessors );\n\nvar drivers = {\n default: new Dictionary({\n en: {\n messages: {},\n attributes: {},\n custom: {}\n }\n })\n};\n\nvar currentDriver = 'default';\n\nvar DictionaryResolver = function DictionaryResolver () {};\n\nDictionaryResolver._checkDriverName = function _checkDriverName (driver) {\n if (!driver) {\n throw createError('you must provide a name to the dictionary driver');\n }\n};\n\nDictionaryResolver.setDriver = function setDriver (driver, implementation) {\n if ( implementation === void 0 ) implementation = null;\n\n this._checkDriverName(driver);\n if (implementation) {\n drivers[driver] = implementation;\n }\n\n currentDriver = driver;\n};\n\nDictionaryResolver.getDriver = function getDriver () {\n return drivers[currentDriver];\n};\n\n// \n\nvar ErrorBag = function ErrorBag (errorBag, id) {\n if ( errorBag === void 0 ) errorBag = null;\n if ( id === void 0 ) id = null;\n\n this.vmId = id || null;\n // make this bag a mirror of the provided one, sharing the same items reference.\n if (errorBag && errorBag instanceof ErrorBag) {\n this.items = errorBag.items;\n } else {\n this.items = [];\n }\n};\n\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Adds an error to the internal array.\n */\nErrorBag.prototype.add = function add (error) {\n var ref;\n\n (ref = this.items).push.apply(\n ref, this._normalizeError(error)\n );\n};\n\n/**\n * Normalizes passed errors to an error array.\n */\nErrorBag.prototype._normalizeError = function _normalizeError (error) {\n var this$1 = this;\n\n if (Array.isArray(error)) {\n return error.map(function (e) {\n e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\n e.vmId = !isNullOrUndefined(e.vmId) ? e.vmId : (this$1.vmId || null);\n\n return e;\n });\n }\n\n error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\n error.vmId = !isNullOrUndefined(error.vmId) ? error.vmId : (this.vmId || null);\n\n return [error];\n};\n\n/**\n * Regenrates error messages if they have a generator function.\n */\nErrorBag.prototype.regenerate = function regenerate () {\n this.items.forEach(function (i) {\n i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\n });\n};\n\n/**\n * Updates a field error with the new field scope.\n */\nErrorBag.prototype.update = function update (id, error) {\n var item = find(this.items, function (i) { return i.id === id; });\n if (!item) {\n return;\n }\n\n var idx = this.items.indexOf(item);\n this.items.splice(idx, 1);\n item.scope = error.scope;\n this.items.push(item);\n};\n\n/**\n * Gets all error messages from the internal array.\n */\nErrorBag.prototype.all = function all (scope) {\n var this$1 = this;\n\n var filterFn = function (item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n\n return matchesVM && matchesScope;\n };\n\n return this.items.filter(filterFn).map(function (e) { return e.msg; });\n};\n\n/**\n * Checks if there are any errors in the internal array.\n */\nErrorBag.prototype.any = function any (scope) {\n var this$1 = this;\n\n var filterFn = function (item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n\n return matchesVM && matchesScope;\n };\n\n return !!this.items.filter(filterFn).length;\n};\n\n/**\n * Removes all items from the internal array.\n */\nErrorBag.prototype.clear = function clear (scope) {\n var this$1 = this;\n\n var matchesVM = isNullOrUndefined(this.vmId) ? function () { return true; } : function (i) { return i.vmId === this$1.vmId; };\n var matchesScope = function (i) { return i.scope === scope; };\n if (arguments.length === 0) {\n matchesScope = function () { return true; };\n } else if (isNullOrUndefined(scope)) {\n scope = null;\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (matchesVM(this.items[i]) && matchesScope(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Collects errors into groups or for a specific field.\n */\nErrorBag.prototype.collect = function collect (field, scope, map) {\n var this$1 = this;\n if ( map === void 0 ) map = true;\n\n var isSingleField = !isNullOrUndefined(field) && !field.includes('*');\n var groupErrors = function (items) {\n var errors = items.reduce(function (collection, error) {\n if (!isNullOrUndefined(this$1.vmId) && error.vmId !== this$1.vmId) {\n return collection;\n }\n\n if (!collection[error.field]) {\n collection[error.field] = [];\n }\n\n collection[error.field].push(map ? error.msg : error);\n\n return collection;\n }, {});\n\n // reduce the collection to be a single array.\n if (isSingleField) {\n return values(errors)[0] || [];\n }\n\n return errors;\n };\n\n if (isNullOrUndefined(field)) {\n return groupErrors(this.items);\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n var collected = this.items.reduce(function (prev, curr) {\n if (isPrimary(curr)) {\n prev.primary.push(curr);\n }\n\n if (isAlt(curr)) {\n prev.alt.push(curr);\n }\n\n return prev;\n }, { primary: [], alt: [] });\n\n collected = collected.primary.length ? collected.primary : collected.alt;\n\n return groupErrors(collected);\n};\n\n/**\n * Gets the internal array length.\n */\nErrorBag.prototype.count = function count () {\n var this$1 = this;\n\n if (this.vmId) {\n return this.items.filter(function (e) { return e.vmId === this$1.vmId; }).length;\n }\n\n return this.items.length;\n};\n\n/**\n * Finds and fetches the first error message for the specified field id.\n */\nErrorBag.prototype.firstById = function firstById (id) {\n var error = find(this.items, function (i) { return i.id === id; });\n\n return error ? error.msg : undefined;\n};\n\n/**\n * Gets the first error message for a specific field.\n */\nErrorBag.prototype.first = function first (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n var selector = isNullOrUndefined(scope) ? field : (scope + \".\" + field);\n var match = this._match(selector);\n\n return match && match.msg;\n};\n\n/**\n * Returns the first error rule for the specified field\n */\nErrorBag.prototype.firstRule = function firstRule (field, scope) {\n var errors = this.collect(field, scope, false);\n\n return (errors.length && errors[0].rule) || undefined;\n};\n\n/**\n * Checks if the internal array has at least one error for the specified field.\n */\nErrorBag.prototype.has = function has (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n return !!this.first(field, scope);\n};\n\n/**\n * Gets the first error message for a specific field and a rule.\n */\nErrorBag.prototype.firstByRule = function firstByRule (name, rule, scope) {\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule === rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Gets the first error message for a specific field that not match the rule.\n */\nErrorBag.prototype.firstNot = function firstNot (name, rule, scope) {\n if ( rule === void 0 ) rule = 'required';\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule !== rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Removes errors by matching against the id or ids.\n */\nErrorBag.prototype.removeById = function removeById (id) {\n var condition = function (item) { return item.id === id; };\n if (Array.isArray(id)) {\n condition = function (item) { return id.indexOf(item.id) !== -1; };\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (condition(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Removes all error messages associated with a specific field.\n */\nErrorBag.prototype.remove = function remove (field, scope, vmId) {\n if (isNullOrUndefined(field)) {\n return;\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n var matches = function (item) { return isPrimary(item) || isAlt(item); };\n var shouldRemove = function (item) {\n if (isNullOrUndefined(vmId)) { return matches(item); }\n\n return matches(item) && item.vmId === vmId;\n };\n\n for (var i = 0; i < this.items.length; ++i) {\n if (shouldRemove(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters (selector) {\n var this$1 = this;\n\n var matchesRule = function () { return true; };\n var matchesScope = function () { return true; };\n var matchesName = function () { return true; };\n var matchesVM = function () { return true; };\n\n var ref = parseSelector(selector);\n var id = ref.id;\n var rule = ref.rule;\n var scope = ref.scope;\n var name = ref.name;\n\n if (rule) {\n matchesRule = function (item) { return item.rule === rule; };\n }\n\n // match by id, can be combined with rule selection.\n if (id) {\n return {\n isPrimary: function (item) { return matchesRule(item) && (function (item) { return id === item.id; }); },\n isAlt: function () { return false; }\n };\n }\n\n if (isNullOrUndefined(scope)) {\n // if no scope specified, make sure the found error has no scope.\n matchesScope = function (item) { return isNullOrUndefined(item.scope); };\n } else {\n matchesScope = function (item) { return item.scope === scope; };\n }\n\n if (!isNullOrUndefined(name) && name !== '*') {\n matchesName = function (item) { return item.field === name; };\n }\n\n if (!isNullOrUndefined(this.vmId)) {\n matchesVM = function (item) { return item.vmId === this$1.vmId; };\n }\n\n // matches the first candidate.\n var isPrimary = function (item) {\n return matchesVM(item) && matchesName(item) && matchesRule(item) && matchesScope(item);\n };\n\n // matches a second candidate, which is a field with a name containing the '.' character.\n var isAlt = function (item) {\n return matchesVM(item) && matchesRule(item) && item.field === (scope + \".\" + name);\n };\n\n return {\n isPrimary: isPrimary,\n isAlt: isAlt\n };\n};\n\nErrorBag.prototype._match = function _match (selector) {\n if (isNullOrUndefined(selector)) {\n return undefined;\n }\n\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n return this.items.reduce(function (prev, item, idx, arr) {\n var isLast = idx === arr.length - 1;\n if (prev.primary) {\n return isLast ? prev.primary : prev;\n }\n\n if (isPrimary(item)) {\n prev.primary = item;\n }\n\n if (isAlt(item)) {\n prev.alt = item;\n }\n\n // keep going.\n if (!isLast) {\n return prev;\n }\n\n return prev.primary || prev.alt;\n }, {});\n};\n\nvar DEFAULT_CONFIG = {\n locale: 'en',\n delay: 0,\n errorBagName: 'errors',\n dictionary: null,\n fieldsBagName: 'fields',\n classes: false,\n classNames: null,\n events: 'input',\n inject: true,\n fastExit: true,\n aria: true,\n validity: false,\n mode: 'aggressive',\n useConstraintAttrs: true,\n i18n: null,\n i18nRootKey: 'validation'\n};\n\nvar currentConfig = assign({}, DEFAULT_CONFIG);\n\nvar resolveConfig = function (ctx) {\n var selfConfig = getPath('$options.$_veeValidate', ctx, {});\n\n return assign({}, currentConfig, selfConfig);\n};\n\nvar getConfig = function () { return currentConfig; };\n\nvar setConfig = function (newConf) {\n currentConfig = assign({}, currentConfig, newConf);\n};\n\n// VNode Utils\n\n// Gets the model object on the vnode.\nfunction findModel (vnode) {\n if (!vnode.data) {\n return null;\n }\n\n // Component Model\n if (vnode.data.model) {\n return vnode.data.model;\n }\n\n return !!(vnode.data.directives) && find(vnode.data.directives, function (d) { return d.name === 'model'; });\n}\n\nfunction extractChildren (vnode) {\n if (Array.isArray(vnode)) {\n return vnode;\n }\n\n if (Array.isArray(vnode.children)) {\n return vnode.children;\n }\n\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\n return vnode.componentOptions.children;\n }\n\n return [];\n}\n\nfunction extractVNodes (vnode) {\n if (findModel(vnode)) {\n return [vnode];\n }\n\n var children = extractChildren(vnode);\n\n return children.reduce(function (nodes, node) {\n var candidates = extractVNodes(node);\n if (candidates.length) {\n nodes.push.apply(nodes, candidates);\n }\n\n return nodes;\n }, []);\n}\n\n// Resolves v-model config if exists.\nfunction findModelConfig (vnode) {\n if (!vnode.componentOptions) { return null; }\n\n return vnode.componentOptions.Ctor.options.model;\n}\n// Adds a listener to vnode listener object.\nfunction mergeVNodeListeners (obj, eventName, handler) {\n // Has a single listener, convert to array.\n if (isCallable(obj[eventName])) {\n var prevHandler = obj[eventName];\n obj[eventName] = [prevHandler];\n }\n\n // no listeners, create the array.\n if (isNullOrUndefined(obj[eventName])) {\n obj[eventName] = [];\n }\n\n obj[eventName].push(handler);\n}\n\n// Adds a listener to a native HTML vnode.\nfunction addNativeNodeListener (node, eventName, handler) {\n if (isNullOrUndefined(node.data.on)) {\n node.data.on = {};\n }\n\n mergeVNodeListeners(node.data.on, eventName, handler);\n}\n\n// Adds a listener to a Vue component vnode.\nfunction addComponentNodeListener (node, eventName, handler) {\n /* istanbul ignore next */\n if (!node.componentOptions.listeners) {\n node.componentOptions.listeners = {};\n }\n\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\n}\nfunction addVNodeListener (vnode, eventName, handler) {\n if (vnode.componentOptions) {\n addComponentNodeListener(vnode, eventName, handler);\n return;\n }\n\n addNativeNodeListener(vnode, eventName, handler);\n}\n// Determines if `change` should be used over `input` for listeners.\nfunction getInputEventName (vnode, model) {\n // Is a component.\n if (vnode.componentOptions) {\n var ref = findModelConfig(vnode) || { event: 'input' };\n var event = ref.event;\n\n return event;\n }\n\n // Lazy Models and select tag typically use change event\n if ((model && model.modifiers && model.modifiers.lazy) || vnode.tag === 'select') {\n return 'change';\n }\n\n // is a textual-type input.\n if (vnode.data.attrs && isTextInput({ type: vnode.data.attrs.type || 'text' })) {\n return 'input';\n }\n\n return 'change';\n}\n\nfunction normalizeSlots (slots, ctx) {\n return Object.keys(slots).reduce(function (arr, key) {\n slots[key].forEach(function (vnode) {\n if (!vnode.context) {\n slots[key].context = ctx;\n if (!vnode.data) {\n vnode.data = {};\n }\n vnode.data.slot = key;\n }\n });\n\n return arr.concat(slots[key]);\n }, []);\n}\nfunction createRenderless (h, children) {\n // Only render the first item of the node.\n if (Array.isArray(children) && children[0]) {\n return children[0];\n }\n\n // a single node.\n if (children) {\n return children;\n }\n\n // No slots, render nothing.\n return h();\n}\n\n/**\n * Generates the options required to construct a field.\n */\nvar Resolver = function Resolver () {};\n\nResolver.generate = function generate (el, binding, vnode) {\n var model = Resolver.resolveModel(binding, vnode);\n var options = resolveConfig(vnode.context);\n\n return {\n name: Resolver.resolveName(el, vnode),\n el: el,\n listen: !binding.modifiers.disable,\n bails: binding.modifiers.bails ? true : (binding.modifiers.continues === true ? false : undefined),\n scope: Resolver.resolveScope(el, binding, vnode),\n vm: vnode.context,\n expression: binding.value,\n component: vnode.componentInstance,\n classes: options.classes,\n classNames: options.classNames,\n getter: Resolver.resolveGetter(el, vnode, model),\n events: Resolver.resolveEvents(el, vnode) || options.events,\n model: model,\n delay: Resolver.resolveDelay(el, vnode, options),\n rules: Resolver.resolveRules(el, binding, vnode),\n immediate: !!binding.modifiers.initial || !!binding.modifiers.immediate,\n persist: !!binding.modifiers.persist,\n validity: options.validity && !vnode.componentInstance,\n aria: options.aria && !vnode.componentInstance,\n initialValue: Resolver.resolveInitialValue(vnode)\n };\n};\n\nResolver.getCtorConfig = function getCtorConfig (vnode) {\n if (!vnode.componentInstance) { return null; }\n\n var config = getPath('componentInstance.$options.$_veeValidate', vnode);\n\n return config;\n};\n\n/**\n * Resolves the rules defined on an element.\n */\nResolver.resolveRules = function resolveRules (el, binding, vnode) {\n var rules = '';\n if (!binding.value && (!binding || !binding.expression)) {\n rules = getDataAttribute(el, 'rules');\n }\n\n if (binding.value && includes(['string', 'object'], typeof binding.value.rules)) {\n rules = binding.value.rules;\n } else if (binding.value) {\n rules = binding.value;\n }\n\n if (vnode.componentInstance) {\n return rules;\n }\n\n // If validity is disabled, ignore field rules.\n var normalized = normalizeRules(rules);\n if (!getConfig().useConstraintAttrs) {\n return normalized;\n }\n\n return assign({}, fillRulesFromElement(el, {}), normalized);\n};\n\n/**\n * @param {*} vnode\n */\nResolver.resolveInitialValue = function resolveInitialValue (vnode) {\n var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\n\n return model && model.value;\n};\n\n/**\n * Resolves the delay value.\n * @param {*} el\n * @param {*} vnode\n * @param {Object} options\n */\nResolver.resolveDelay = function resolveDelay (el, vnode, options) {\n var delay = getDataAttribute(el, 'delay');\n var globalDelay = (options && 'delay' in options) ? options.delay : 0;\n\n if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\n delay = vnode.componentInstance.$attrs['data-vv-delay'];\n }\n\n if (!isObject(globalDelay)) {\n return deepParseInt(delay || globalDelay);\n }\n\n if (!isNullOrUndefined(delay)) {\n globalDelay.input = delay;\n }\n\n return deepParseInt(globalDelay);\n};\n\n/**\n * Resolves the events to validate in response to.\n * @param {*} el\n * @param {*} vnode\n */\nResolver.resolveEvents = function resolveEvents (el, vnode) {\n // resolve it from the root element.\n var events = getDataAttribute(el, 'validate-on');\n\n // resolve from data-vv-validate-on if its a vue component.\n if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\n events = vnode.componentInstance.$attrs['data-vv-validate-on'];\n }\n\n // resolve it from $_veeValidate options.\n if (!events && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n events = config && config.events;\n }\n\n if (!events && getConfig().events) {\n events = getConfig().events;\n }\n\n // resolve the model event if its configured for custom components.\n if (events && vnode.componentInstance && includes(events, 'input')) {\n var ref = vnode.componentInstance.$options.model || { event: 'input' };\n var event = ref.event;\n // if the prop was configured but not the model.\n if (!event) {\n return events;\n }\n\n events = events.replace('input', event);\n }\n\n return events;\n};\n\n/**\n * Resolves the scope for the field.\n * @param {*} el\n * @param {*} binding\n */\nResolver.resolveScope = function resolveScope (el, binding, vnode) {\n if ( vnode === void 0 ) vnode = {};\n\n var scope = null;\n if (vnode.componentInstance && isNullOrUndefined(scope)) {\n scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\n }\n\n return !isNullOrUndefined(scope) ? scope : getScope(el);\n};\n\n/**\n * Checks if the node directives contains a v-model or a specified arg.\n * Args take priority over models.\n *\n * @return {Object}\n */\nResolver.resolveModel = function resolveModel (binding, vnode) {\n if (binding.arg) {\n return { expression: binding.arg };\n }\n\n var model = findModel(vnode);\n if (!model) {\n return null;\n }\n\n // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\n var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\n var lazy = !!(model.modifiers && model.modifiers.lazy);\n\n if (!watchable) {\n return { expression: null, lazy: lazy };\n }\n\n return { expression: model.expression, lazy: lazy };\n};\n\n/**\n * Resolves the field name to trigger validations.\n * @return {String} The field name.\n */\nResolver.resolveName = function resolveName (el, vnode) {\n var name = getDataAttribute(el, 'name');\n\n if (!name && !vnode.componentInstance) {\n return el.name;\n }\n\n if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\n name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\n }\n\n if (!name && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.name)) {\n var boundGetter = config.name.bind(vnode.componentInstance);\n\n return boundGetter();\n }\n\n return vnode.componentInstance.name;\n }\n\n return name;\n};\n\n/**\n * Returns a value getter input type.\n */\nResolver.resolveGetter = function resolveGetter (el, vnode, model) {\n if (model && model.expression) {\n return function () {\n return getPath(model.expression, vnode.context);\n };\n }\n\n if (vnode.componentInstance) {\n var path = getDataAttribute(el, 'value-path') || (vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path']);\n if (path) {\n return function () {\n return getPath(path, vnode.componentInstance);\n };\n }\n\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.value)) {\n var boundGetter = config.value.bind(vnode.componentInstance);\n\n return function () {\n return boundGetter();\n };\n }\n\n var ref = vnode.componentInstance.$options.model || { prop: 'value' };\n var prop = ref.prop;\n\n return function () {\n return vnode.componentInstance[prop];\n };\n }\n\n switch (el.type) {\n case 'checkbox': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n\n els = toArray(els).filter(function (el) { return el.checked; });\n if (!els.length) { return undefined; }\n\n return els.map(function (checkbox) { return checkbox.value; });\n };\n case 'radio': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n var elm = find(els, function (el) { return el.checked; });\n\n return elm && elm.value;\n };\n case 'file': return function (context) {\n return toArray(el.files);\n };\n case 'select-multiple': return function () {\n return toArray(el.options).filter(function (opt) { return opt.selected; }).map(function (opt) { return opt.value; });\n };\n default: return function () {\n return el && el.value;\n };\n }\n};\n\nvar RULES = {};\n\nvar RuleContainer = function RuleContainer () {};\n\nvar staticAccessors = { rules: { configurable: true } };\n\nRuleContainer.add = function add (name, ref) {\n var validate = ref.validate;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\n RULES[name] = {\n validate: validate,\n options: options,\n paramNames: paramNames\n };\n};\n\nstaticAccessors.rules.get = function () {\n return RULES;\n};\n\nRuleContainer.has = function has (name) {\n return !!RULES[name];\n};\n\nRuleContainer.isImmediate = function isImmediate (name) {\n return !!(RULES[name] && RULES[name].options.immediate);\n};\n\nRuleContainer.isRequireRule = function isRequireRule (name) {\n return !!(RULES[name] && RULES[name].options.computesRequired);\n};\n\nRuleContainer.isTargetRule = function isTargetRule (name) {\n return !!(RULES[name] && RULES[name].options.hasTarget);\n};\n\nRuleContainer.remove = function remove (ruleName) {\n delete RULES[ruleName];\n};\n\nRuleContainer.getParamNames = function getParamNames (ruleName) {\n return RULES[ruleName] && RULES[ruleName].paramNames;\n};\n\nRuleContainer.getOptions = function getOptions (ruleName) {\n return RULES[ruleName] && RULES[ruleName].options;\n};\n\nRuleContainer.getValidatorMethod = function getValidatorMethod (ruleName) {\n return RULES[ruleName] ? RULES[ruleName].validate : null;\n};\n\nObject.defineProperties( RuleContainer, staticAccessors );\n\n// \n\nvar isEvent = function (evt) {\n return (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) || (evt && evt.srcElement);\n};\n\nvar normalizeEvents = function (evts) {\n if (!evts) { return []; }\n\n return (typeof evts === 'string' ? evts.split('|') : evts);\n};\n\nvar supportsPassive = true;\n\nvar detectPassiveSupport = function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get () {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {\n supportsPassive = false;\n }\n return supportsPassive;\n};\n\nvar addEventListener = function (el, eventName, cb) {\n el.addEventListener(eventName, cb, supportsPassive ? { passive: true } : false);\n};\n\n// \n\nvar DEFAULT_OPTIONS = {\n targetOf: null,\n immediate: false,\n persist: false,\n scope: null,\n listen: true,\n name: null,\n rules: {},\n vm: null,\n classes: false,\n validity: true,\n aria: true,\n events: 'input|blur',\n delay: 0,\n classNames: {\n touched: 'touched', // the control has been blurred\n untouched: 'untouched', // the control hasn't been blurred\n valid: 'valid', // model is valid\n invalid: 'invalid', // model is invalid\n pristine: 'pristine', // control has not been interacted with\n dirty: 'dirty' // control has been interacted with\n }\n};\n\nvar Field = function Field (options) {\n if ( options === void 0 ) options = {};\n\n this.id = uniqId();\n this.el = options.el;\n this.updated = false;\n this.vmId = options.vmId;\n defineNonReactive(this, 'dependencies', []);\n defineNonReactive(this, 'watchers', []);\n defineNonReactive(this, 'events', []);\n this.delay = 0;\n this.rules = {};\n this.forceRequired = false;\n this._cacheId(options);\n this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\n options = assign({}, DEFAULT_OPTIONS, options);\n this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\n this.validity = options.validity;\n this.aria = options.aria;\n this.flags = options.flags || createFlags();\n defineNonReactive(this, 'vm', options.vm);\n defineNonReactive(this, 'componentInstance', options.component);\n this.ctorConfig = this.componentInstance ? getPath('$options.$_veeValidate', this.componentInstance) : undefined;\n this.update(options);\n // set initial value.\n this.initialValue = this.value;\n this.updated = false;\n};\n\nvar prototypeAccessors$1 = { validator: { configurable: true },isRequired: { configurable: true },isDisabled: { configurable: true },alias: { configurable: true },value: { configurable: true },bails: { configurable: true },rejectsFalse: { configurable: true } };\n\nprototypeAccessors$1.validator.get = function () {\n if (!this.vm || !this.vm.$validator) {\n return { validate: function () { return Promise.resolve(true); } };\n }\n\n return this.vm.$validator;\n};\n\nprototypeAccessors$1.isRequired.get = function () {\n return !!this.rules.required || this.forceRequired;\n};\n\nprototypeAccessors$1.isDisabled.get = function () {\n return !!(this.el && this.el.disabled);\n};\n\n/**\n * Gets the display name (user-friendly name).\n */\nprototypeAccessors$1.alias.get = function () {\n if (this._alias) {\n return this._alias;\n }\n\n var alias = null;\n if (this.ctorConfig && this.ctorConfig.alias) {\n alias = isCallable(this.ctorConfig.alias) ? this.ctorConfig.alias.call(this.componentInstance) : this.ctorConfig.alias;\n }\n\n if (!alias && this.el) {\n alias = getDataAttribute(this.el, 'as');\n }\n\n if (!alias && this.componentInstance) {\n return this.componentInstance.$attrs && this.componentInstance.$attrs['data-vv-as'];\n }\n\n return alias;\n};\n\n/**\n * Gets the input value.\n */\n\nprototypeAccessors$1.value.get = function () {\n if (!isCallable(this.getter)) {\n return undefined;\n }\n\n return this.getter();\n};\n\nprototypeAccessors$1.bails.get = function () {\n return this._bails;\n};\n\n/**\n * If the field rejects false as a valid value for the required rule.\n */\n\nprototypeAccessors$1.rejectsFalse.get = function () {\n if (this.componentInstance && this.ctorConfig) {\n return !!this.ctorConfig.rejectsFalse;\n }\n\n if (!this.el) {\n return false;\n }\n\n return this.el.type === 'checkbox';\n};\n\n/**\n * Determines if the instance matches the options provided.\n */\nField.prototype.matches = function matches (options) {\n var this$1 = this;\n\n if (!options) {\n return true;\n }\n\n if (options.id) {\n return this.id === options.id;\n }\n\n var matchesComponentId = isNullOrUndefined(options.vmId) ? function () { return true; } : function (id) { return id === this$1.vmId; };\n if (!matchesComponentId(options.vmId)) {\n return false;\n }\n\n if (options.name === undefined && options.scope === undefined) {\n return true;\n }\n\n if (options.scope === undefined) {\n return this.name === options.name;\n }\n\n if (options.name === undefined) {\n return this.scope === options.scope;\n }\n\n return options.name === this.name && options.scope === this.scope;\n};\n\n/**\n * Caches the field id.\n */\nField.prototype._cacheId = function _cacheId (options) {\n if (this.el && !options.targetOf) {\n this.el._veeValidateId = this.id;\n }\n};\n\n/**\n * Keeps a reference of the most current validation run.\n */\nField.prototype.waitFor = function waitFor (pendingPromise) {\n this._waitingFor = pendingPromise;\n};\n\nField.prototype.isWaitingFor = function isWaitingFor (promise) {\n return this._waitingFor === promise;\n};\n\n/**\n * Updates the field with changed data.\n */\nField.prototype.update = function update (options) {\n var this$1 = this;\n\n this.targetOf = options.targetOf || null;\n this.immediate = options.immediate || this.immediate || false;\n this.persist = options.persist || this.persist || false;\n\n // update errors scope if the field scope was changed.\n if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\n this.validator.update(this.id, { scope: options.scope });\n }\n this.scope = !isNullOrUndefined(options.scope) ? options.scope\n : !isNullOrUndefined(this.scope) ? this.scope : null;\n this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\n this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\n this._bails = options.bails !== undefined ? options.bails : this._bails;\n this.model = options.model || this.model;\n this.listen = options.listen !== undefined ? options.listen : this.listen;\n this.classes = (options.classes || this.classes || false) && !this.componentInstance;\n this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\n this.getter = isCallable(options.getter) ? options.getter : this.getter;\n this._alias = options.alias || this._alias;\n this.events = (options.events) ? normalizeEvents(options.events) : this.events;\n this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\n this.updateDependencies();\n this.addActionListeners();\n\n if (process.env.NODE_ENV !== 'production' && !this.name && !this.targetOf) {\n warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\n }\n\n // update required flag flags\n if (options.rules !== undefined) {\n this.flags.required = this.isRequired;\n }\n\n if (Object.keys(options.rules || {}).length === 0 && this.updated) {\n var resetFlag = this.flags.validated;\n this.validator.validate((\"#\" + (this.id))).then(function () {\n this$1.flags.validated = resetFlag;\n });\n }\n\n // validate if it was validated before and field was updated and there was a rules mutation.\n if (this.flags.validated && options.rules !== undefined && this.updated) {\n this.validator.validate((\"#\" + (this.id)));\n }\n\n this.updated = true;\n this.addValueListeners();\n\n // no need to continue.\n if (!this.el) {\n return;\n }\n this.updateClasses();\n this.updateAriaAttrs();\n};\n\n/**\n * Resets field flags and errors.\n */\nField.prototype.reset = function reset () {\n var this$1 = this;\n\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n delete this._cancellationToken;\n }\n\n var defaults = createFlags();\n Object.keys(this.flags).filter(function (flag) { return flag !== 'required'; }).forEach(function (flag) {\n this$1.flags[flag] = defaults[flag];\n });\n\n // update initial value\n this.initialValue = this.value;\n this.flags.changed = false;\n\n this.addValueListeners();\n this.addActionListeners();\n this.updateClasses(true);\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\n */\nField.prototype.setFlags = function setFlags (flags) {\n var this$1 = this;\n\n var negated = {\n pristine: 'dirty',\n dirty: 'pristine',\n valid: 'invalid',\n invalid: 'valid',\n touched: 'untouched',\n untouched: 'touched'\n };\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n // if it has a negation and was not specified, set it as well.\n if (negated[flag] && flags[negated[flag]] === undefined) {\n this$1.flags[negated[flag]] = !flags[flag];\n }\n });\n\n if (\n flags.untouched !== undefined ||\n flags.touched !== undefined ||\n flags.dirty !== undefined ||\n flags.pristine !== undefined\n ) {\n this.addActionListeners();\n }\n this.updateClasses();\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Determines if the field requires references to target fields.\n*/\nField.prototype.updateDependencies = function updateDependencies () {\n var this$1 = this;\n\n // reset dependencies.\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n\n // we get the selectors for each field.\n var fields = Object.keys(this.rules).reduce(function (prev, r) {\n if (RuleContainer.isTargetRule(r)) {\n prev.push({ selector: this$1.rules[r][0], name: r });\n }\n\n return prev;\n }, []);\n\n if (!fields.length || !this.vm || !this.vm.$el) { return; }\n\n // must be contained within the same component, so we use the vm root element constrain our dom search.\n fields.forEach(function (ref$1) {\n var selector = ref$1.selector;\n var name = ref$1.name;\n\n var ref = this$1.vm.$refs[selector];\n var el = Array.isArray(ref) ? ref[0] : ref;\n if (!el) {\n return;\n }\n\n var options = {\n vm: this$1.vm,\n classes: this$1.classes,\n classNames: this$1.classNames,\n delay: this$1.delay,\n scope: this$1.scope,\n events: this$1.events.join('|'),\n immediate: this$1.immediate,\n targetOf: this$1.id\n };\n\n // probably a component.\n if (isCallable(el.$watch)) {\n options.component = el;\n options.el = el.$el;\n options.getter = Resolver.resolveGetter(el.$el, el.$vnode);\n } else {\n options.el = el;\n options.getter = Resolver.resolveGetter(el, {});\n }\n\n this$1.dependencies.push({ name: name, field: new Field(options) });\n });\n};\n\n/**\n * Removes listeners.\n */\nField.prototype.unwatch = function unwatch (tag) {\n if ( tag === void 0 ) tag = null;\n\n if (!tag) {\n this.watchers.forEach(function (w) { return w.unwatch(); });\n this.watchers = [];\n return;\n }\n\n this.watchers.filter(function (w) { return tag.test(w.tag); }).forEach(function (w) { return w.unwatch(); });\n this.watchers = this.watchers.filter(function (w) { return !tag.test(w.tag); });\n};\n\n/**\n * Updates the element classes depending on each field flag status.\n */\nField.prototype.updateClasses = function updateClasses (isReset) {\n var this$1 = this;\n if ( isReset === void 0 ) isReset = false;\n\n if (!this.classes || this.isDisabled) { return; }\n var applyClasses = function (el) {\n toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\n toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\n toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\n toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\n\n // remove valid/invalid classes on reset.\n if (isReset) {\n toggleClass(el, this$1.classNames.valid, false);\n toggleClass(el, this$1.classNames.invalid, false);\n }\n\n // make sure we don't set any classes if the state is undetermined.\n if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\n }\n\n if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\n }\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyClasses(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyClasses);\n};\n\n/**\n * Adds the listeners required for automatic classes and some flags.\n */\nField.prototype.addActionListeners = function addActionListeners () {\n var this$1 = this;\n\n // remove previous listeners.\n this.unwatch(/class/);\n\n if (!this.el) { return; }\n\n var onBlur = function () {\n this$1.flags.touched = true;\n this$1.flags.untouched = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.touched, true);\n toggleClass(this$1.el, this$1.classNames.untouched, false);\n }\n\n // only needed once.\n this$1.unwatch(/^class_blur$/);\n };\n\n var inputEvent = isTextInput(this.el) ? 'input' : 'change';\n var onInput = function () {\n this$1.flags.dirty = true;\n this$1.flags.pristine = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.pristine, false);\n toggleClass(this$1.el, this$1.classNames.dirty, true);\n }\n\n // only needed once.\n this$1.unwatch(/^class_input$/);\n };\n\n if (this.componentInstance && isCallable(this.componentInstance.$once)) {\n this.componentInstance.$once('input', onInput);\n this.componentInstance.$once('blur', onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.componentInstance.$off('input', onInput);\n }\n });\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.componentInstance.$off('blur', onBlur);\n }\n });\n return;\n }\n\n if (!this.el) { return; }\n\n addEventListener(this.el, inputEvent, onInput);\n // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\n var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\n addEventListener(this.el, blurEvent, onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.el.removeEventListener(inputEvent, onInput);\n }\n });\n\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.el.removeEventListener(blurEvent, onBlur);\n }\n });\n};\n\nField.prototype.checkValueChanged = function checkValueChanged () {\n // handle some people initialize the value to null, since text inputs have empty string value.\n if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\n return false;\n }\n\n return this.value !== this.initialValue;\n};\n\n/**\n * Determines the suitable primary event to listen for.\n */\nField.prototype._determineInputEvent = function _determineInputEvent () {\n // if its a custom component, use the customized model event or the input event.\n if (this.componentInstance) {\n return (this.componentInstance.$options.model && this.componentInstance.$options.model.event) || 'input';\n }\n\n if (this.model && this.model.lazy) {\n return 'change';\n }\n\n if (isTextInput(this.el)) {\n return 'input';\n }\n\n return 'change';\n};\n\n/**\n * Determines the list of events to listen to.\n */\nField.prototype._determineEventList = function _determineEventList (defaultInputEvent) {\n var this$1 = this;\n\n // if no event is configured, or it is a component or a text input then respect the user choice.\n if (!this.events.length || this.componentInstance || isTextInput(this.el)) {\n return [].concat( this.events ).map(function (evt) {\n if (evt === 'input' && this$1.model && this$1.model.lazy) {\n return 'change';\n }\n\n return evt;\n });\n }\n\n // force suitable event for non-text type fields.\n return this.events.map(function (e) {\n if (e === 'input') {\n return defaultInputEvent;\n }\n\n return e;\n });\n};\n\n/**\n * Adds the listeners required for validation.\n */\nField.prototype.addValueListeners = function addValueListeners () {\n var this$1 = this;\n\n this.unwatch(/^input_.+/);\n if (!this.listen || !this.el) { return; }\n\n var token = { cancelled: false };\n var fn = this.targetOf ? function () {\n var target = this$1.validator._resolveField((\"#\" + (this$1.targetOf)));\n if (target && target.flags.validated) {\n this$1.validator.validate((\"#\" + (this$1.targetOf)));\n }\n } : function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\n if (args.length === 0 || isEvent(args[0])) {\n args[0] = this$1.value;\n }\n\n this$1.flags.pending = true;\n this$1._cancellationToken = token;\n this$1.validator.validate((\"#\" + (this$1.id)), args[0]);\n };\n\n var inputEvent = this._determineInputEvent();\n var events = this._determineEventList(inputEvent);\n\n // if on input validation is requested.\n if (includes(events, inputEvent)) {\n var ctx = null;\n var expression = null;\n var watchCtxVm = false;\n // if its watchable from the context vm.\n if (this.model && this.model.expression) {\n ctx = this.vm;\n expression = this.model.expression;\n watchCtxVm = true;\n }\n\n // watch it from the custom component vm instead.\n if (!expression && this.componentInstance && this.componentInstance.$options.model) {\n ctx = this.componentInstance;\n expression = this.componentInstance.$options.model.prop || 'value';\n }\n\n if (ctx && expression) {\n var debouncedFn = debounce(fn, this.delay[inputEvent], token);\n var unwatch = ctx.$watch(expression, debouncedFn);\n this.watchers.push({\n tag: 'input_model',\n unwatch: function () {\n this$1.vm.$nextTick(function () {\n unwatch();\n });\n }\n });\n\n // filter out input event when we are watching from the context vm.\n if (watchCtxVm) {\n events = events.filter(function (e) { return e !== inputEvent; });\n }\n }\n }\n\n // Add events.\n events.forEach(function (e) {\n var debouncedFn = debounce(fn, this$1.delay[e], token);\n\n this$1._addComponentEventListener(e, debouncedFn);\n this$1._addHTMLEventListener(e, debouncedFn);\n });\n};\n\nField.prototype._addComponentEventListener = function _addComponentEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.componentInstance) { return; }\n\n this.componentInstance.$on(evt, validate);\n this.watchers.push({\n tag: 'input_vue',\n unwatch: function () {\n this$1.componentInstance.$off(evt, validate);\n }\n });\n};\n\nField.prototype._addHTMLEventListener = function _addHTMLEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.el || this.componentInstance) { return; }\n\n // listen for the current element.\n var addListener = function (el) {\n addEventListener(el, evt, validate);\n this$1.watchers.push({\n tag: 'input_native',\n unwatch: function () {\n el.removeEventListener(evt, validate);\n }\n });\n };\n\n addListener(this.el);\n if (!isCheckboxOrRadioInput(this.el)) {\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(function (el) {\n // skip if it is added by v-validate and is not the current element.\n if (el._veeValidateId && el !== this$1.el) {\n return;\n }\n\n addListener(el);\n });\n};\n\n/**\n * Updates aria attributes on the element.\n */\nField.prototype.updateAriaAttrs = function updateAriaAttrs () {\n var this$1 = this;\n\n if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) { return; }\n\n var applyAriaAttrs = function (el) {\n el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\n el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyAriaAttrs(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyAriaAttrs);\n};\n\n/**\n * Updates the custom validity for the field.\n */\nField.prototype.updateCustomValidity = function updateCustomValidity () {\n if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) { return; }\n\n this.el.setCustomValidity(this.flags.valid ? '' : (this.validator.errors.firstById(this.id) || ''));\n};\n\n/**\n * Removes all listeners.\n */\nField.prototype.destroy = function destroy () {\n // ignore the result of any ongoing validation.\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n }\n\n this.unwatch();\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n};\n\nObject.defineProperties( Field.prototype, prototypeAccessors$1 );\n\n// \n\nvar FieldBag = function FieldBag (items) {\n if ( items === void 0 ) items = [];\n\n this.items = items || [];\n this.itemsById = this.items.reduce(function (itemsById, item) {\n itemsById[item.id] = item;\n return itemsById;\n }, {});\n};\n\nvar prototypeAccessors$2 = { length: { configurable: true } };\n\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Gets the current items length.\n */\n\nprototypeAccessors$2.length.get = function () {\n return this.items.length;\n};\n\n/**\n * Finds the first field that matches the provided matcher object.\n */\nFieldBag.prototype.find = function find$1 (matcher) {\n return find(this.items, function (item) { return item.matches(matcher); });\n};\n\n/**\n * Finds the field with the given id, using a plain object as a map to link\n * ids to items faster than by looping over the array and matching.\n */\nFieldBag.prototype.findById = function findById (id) {\n return this.itemsById[id] || null;\n};\n\n/**\n * Filters the items down to the matched fields.\n */\nFieldBag.prototype.filter = function filter (matcher) {\n // multiple matchers to be tried.\n if (Array.isArray(matcher)) {\n return this.items.filter(function (item) { return matcher.some(function (m) { return item.matches(m); }); });\n }\n\n return this.items.filter(function (item) { return item.matches(matcher); });\n};\n\n/**\n * Maps the field items using the mapping function.\n */\nFieldBag.prototype.map = function map (mapper) {\n return this.items.map(mapper);\n};\n\n/**\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\n */\nFieldBag.prototype.remove = function remove (matcher) {\n var item = null;\n if (matcher instanceof Field) {\n item = matcher;\n } else {\n item = this.find(matcher);\n }\n\n if (!item) { return null; }\n\n var index = this.items.indexOf(item);\n this.items.splice(index, 1);\n delete this.itemsById[item.id];\n\n return item;\n};\n\n/**\n * Adds a field item to the list.\n */\nFieldBag.prototype.push = function push (item) {\n if (! (item instanceof Field)) {\n throw createError('FieldBag only accepts instances of Field that has an id defined.');\n }\n\n if (!item.id) {\n throw createError('Field id must be defined.');\n }\n\n if (this.findById(item.id)) {\n throw createError((\"Field with id \" + (item.id) + \" is already added.\"));\n }\n\n this.items.push(item);\n this.itemsById[item.id] = item;\n};\n\nObject.defineProperties( FieldBag.prototype, prototypeAccessors$2 );\n\nvar ScopedValidator = function ScopedValidator (base, vm) {\n this.id = vm._uid;\n this._base = base;\n this._paused = false;\n\n // create a mirror bag with limited component scope.\n this.errors = new ErrorBag(base.errors, this.id);\n};\n\nvar prototypeAccessors$3 = { flags: { configurable: true },rules: { configurable: true },fields: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\nprototypeAccessors$3.flags.get = function () {\n var this$1 = this;\n\n return this._base.fields.items.filter(function (f) { return f.vmId === this$1.id; }).reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[(\"$\" + (field.scope))]) {\n acc[(\"$\" + (field.scope))] = {};\n }\n\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n};\n\nprototypeAccessors$3.rules.get = function () {\n return this._base.rules;\n};\n\nprototypeAccessors$3.fields.get = function () {\n return new FieldBag(this._base.fields.filter({ vmId: this.id }));\n};\n\nprototypeAccessors$3.dictionary.get = function () {\n return this._base.dictionary;\n};\n\nprototypeAccessors$3.locale.get = function () {\n return this._base.locale;\n};\n\nprototypeAccessors$3.locale.set = function (val) {\n this._base.locale = val;\n};\n\nScopedValidator.prototype.localize = function localize () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).localize.apply(ref, args);\n};\n\nScopedValidator.prototype.update = function update () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).update.apply(ref, args);\n};\n\nScopedValidator.prototype.attach = function attach (opts) {\n var attachOpts = assign({}, opts, { vmId: this.id });\n\n return this._base.attach(attachOpts);\n};\n\nScopedValidator.prototype.pause = function pause () {\n this._paused = true;\n};\n\nScopedValidator.prototype.resume = function resume () {\n this._paused = false;\n};\n\nScopedValidator.prototype.remove = function remove (ruleName) {\n return this._base.remove(ruleName);\n};\n\nScopedValidator.prototype.detach = function detach (name, scope) {\n return this._base.detach(name, scope, this.id);\n};\n\nScopedValidator.prototype.extend = function extend () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).extend.apply(ref, args);\n};\n\nScopedValidator.prototype.validate = function validate (descriptor, value, opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validate(descriptor, value, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.verify = function verify () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).verify.apply(ref, args);\n};\n\nScopedValidator.prototype.validateAll = function validateAll (values, opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validateAll(values, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.validateScopes = function validateScopes (opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validateScopes(assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.destroy = function destroy () {\n delete this.id;\n delete this._base;\n};\n\nScopedValidator.prototype.reset = function reset (matcher) {\n return this._base.reset(Object.assign({}, matcher || {}, { vmId: this.id }));\n};\n\nScopedValidator.prototype.flag = function flag () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).flag.apply(ref, args.concat( [this.id] ));\n};\n\nScopedValidator.prototype._resolveField = function _resolveField () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base)._resolveField.apply(ref, args);\n};\n\nObject.defineProperties( ScopedValidator.prototype, prototypeAccessors$3 );\n\nvar VALIDATOR = null;\n\nvar getValidator = function () {\n return VALIDATOR;\n};\n\nvar setValidator = function (value) {\n VALIDATOR = value;\n\n return value;\n};\n\n// \n\n/**\n * Checks if a parent validator instance was requested.\n */\nvar requestsValidator = function (injections) {\n if (isObject(injections) && injections.$validator) {\n return true;\n }\n\n return false;\n};\n\nvar mixin = {\n provide: function provide () {\n if (this.$validator && !isBuiltInComponent(this.$vnode)) {\n return {\n $validator: this.$validator\n };\n }\n\n return {};\n },\n beforeCreate: function beforeCreate () {\n // if built in do nothing.\n if (isBuiltInComponent(this.$vnode) || this.$options.$__veeInject === false) {\n return;\n }\n\n // if its a root instance set the config if it exists.\n if (!this.$parent) {\n setConfig(this.$options.$_veeValidate || {});\n }\n\n var options = resolveConfig(this);\n\n // if its a root instance, inject anyways, or if it requested a new instance.\n if (!this.$parent || (this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator))) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n var requested = requestsValidator(this.$options.inject);\n\n // if automatic injection is enabled and no instance was requested.\n if (! this.$validator && options.inject && !requested) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n // don't inject errors or fieldBag as no validator was resolved.\n if (!requested && !this.$validator) {\n return;\n }\n\n // There is a validator but it isn't injected, mark as reactive.\n if (!requested && this.$validator) {\n var Vue = this.$options._base; // the vue constructor.\n Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\n }\n\n if (!this.$options.computed) {\n this.$options.computed = {};\n }\n\n this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter () {\n return this.$validator.errors;\n };\n this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter () {\n return this.$validator.fields.items.reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[(\"$\" + (field.scope))]) {\n acc[(\"$\" + (field.scope))] = {};\n }\n\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\n\n return acc;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n };\n },\n beforeDestroy: function beforeDestroy () {\n if (this.$validator && this._uid === this.$validator.id) {\n this.$validator.errors.clear(); // remove errors generated by this component.\n }\n }\n};\n\n// \n\n/**\n * Finds the requested field by id from the context object.\n */\nfunction findField (el, context) {\n if (!context || !context.$validator) {\n return null;\n }\n\n return context.$validator.fields.findById(el._veeValidateId);\n}\nvar directive = {\n bind: function bind (el, binding, vnode) {\n var validator = vnode.context.$validator;\n if (!validator) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\n }\n\n return;\n }\n\n var fieldOptions = Resolver.generate(el, binding, vnode);\n validator.attach(fieldOptions);\n },\n inserted: function inserted (el, binding, vnode) {\n var field = findField(el, vnode.context);\n var scope = Resolver.resolveScope(el, binding, vnode);\n\n // skip if scope hasn't changed.\n if (!field || scope === field.scope) { return; }\n\n // only update scope.\n field.update({ scope: scope });\n\n // allows the field to re-evaluated once more in the update hook.\n field.updated = false;\n },\n update: function update (el, binding, vnode) {\n var field = findField(el, vnode.context);\n\n // make sure we don't do unneccasary work if no important change was done.\n if (!field || (field.updated && isEqual(binding.value, binding.oldValue))) { return; }\n var scope = Resolver.resolveScope(el, binding, vnode);\n var rules = Resolver.resolveRules(el, binding, vnode);\n\n field.update({\n scope: scope,\n rules: rules\n });\n },\n unbind: function unbind (el, binding, ref) {\n var context = ref.context;\n\n var field = findField(el, context);\n if (!field) { return; }\n\n context.$validator.detach(field);\n }\n};\n\n// \n\nvar Validator = function Validator (validations, options, pluginContainer) {\n if ( options === void 0 ) options = { fastExit: true };\n if ( pluginContainer === void 0 ) pluginContainer = null;\n\n this.errors = new ErrorBag();\n this.fields = new FieldBag();\n this._createFields(validations);\n this.paused = false;\n this.fastExit = !isNullOrUndefined(options && options.fastExit) ? options.fastExit : true;\n this.$vee = pluginContainer || {\n _vm: {\n $nextTick: function (cb) { return isCallable(cb) ? cb() : Promise.resolve(); },\n $emit: function () {},\n $off: function () {}\n }\n };\n};\n\nvar prototypeAccessors$4 = { rules: { configurable: true },dictionary: { configurable: true },flags: { configurable: true },locale: { configurable: true } };\nvar staticAccessors$1 = { rules: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\n/**\n * @deprecated\n */\nstaticAccessors$1.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n\n return RuleContainer.rules;\n};\n\n/**\n * @deprecated\n */\nprototypeAccessors$4.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n\n return RuleContainer.rules;\n};\n\nprototypeAccessors$4.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$1.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$4.flags.get = function () {\n return this.fields.items.reduce(function (acc, field) {\n var obj;\n\n if (field.scope) {\n acc[(\"$\" + (field.scope))] = ( obj = {}, obj[field.name] = field.flags, obj );\n\n return acc;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n};\n\n/**\n * Getter for the current locale.\n */\nprototypeAccessors$4.locale.get = function () {\n return Validator.locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nprototypeAccessors$4.locale.set = function (value) {\n Validator.locale = value;\n};\n\nstaticAccessors$1.locale.get = function () {\n return DictionaryResolver.getDriver().locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nstaticAccessors$1.locale.set = function (value) {\n var hasChanged = value !== DictionaryResolver.getDriver().locale;\n DictionaryResolver.getDriver().locale = value;\n if (hasChanged && Validator.$vee && Validator.$vee._vm) {\n Validator.$vee._vm.$emit('localeChanged');\n }\n};\n\n/**\n * Static constructor.\n * @deprecated\n */\nValidator.create = function create (validations, options) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Please use `new` to create new validator instances.');\n }\n\n return new Validator(validations, options);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator._guardExtend(name, validator);\n // rules imported from the minimal bundle\n // will have the options embedded in them\n var mergedOpts = validator.options || {};\n Validator._merge(name, {\n validator: validator,\n paramNames: (options && options.paramNames) || validator.paramNames,\n options: assign({ hasTarget: false, immediate: true }, mergedOpts, options || {})\n });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.remove = function remove (name) {\n if (process.env.NODE_ENV !== 'production') {\n warn('this method will be deprecated, you can still override your rules with `extend`');\n }\n\n RuleContainer.remove(name);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n*/\nValidator.prototype.localize = function localize (lang, dictionary) {\n Validator.localize(lang, dictionary);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.localize = function localize (lang, dictionary) {\n var obj;\n\n if (isObject(lang)) {\n DictionaryResolver.getDriver().merge(lang);\n return;\n }\n\n // merge the dictionary.\n if (dictionary) {\n var locale = lang || dictionary.name;\n dictionary = assign({}, dictionary);\n DictionaryResolver.getDriver().merge(( obj = {}, obj[locale] = dictionary, obj ));\n }\n\n if (lang) {\n // set the locale.\n Validator.locale = lang;\n }\n};\n\n/**\n * Registers a field to be validated.\n */\nValidator.prototype.attach = function attach (fieldOpts) {\n var this$1 = this;\n\n // We search for a field with the same name & scope, having persist enabled\n var oldFieldMatcher = { name: fieldOpts.name, scope: fieldOpts.scope, persist: true };\n var oldField = fieldOpts.persist ? this.fields.find(oldFieldMatcher) : null;\n\n if (oldField) {\n // We keep the flags of the old field, then we remove its instance\n fieldOpts.flags = oldField.flags;\n oldField.destroy();\n this.fields.remove(oldField);\n }\n\n // fixes initial value detection with v-model and select elements.\n var value = fieldOpts.initialValue;\n var field = new Field(fieldOpts);\n this.fields.push(field);\n\n // validate the field initially\n if (field.immediate) {\n this.$vee._vm.$nextTick(function () { return this$1.validate((\"#\" + (field.id)), value || field.value, { vmId: fieldOpts.vmId }); });\n } else {\n this._validate(field, value || field.value, { initial: true }).then(function (result) {\n field.flags.valid = result.valid;\n field.flags.invalid = !result.valid;\n });\n }\n\n return field;\n};\n\n/**\n * Sets the flags on a field.\n */\nValidator.prototype.flag = function flag (name, flags, uid) {\n if ( uid === void 0 ) uid = null;\n\n var field = this._resolveField(name, undefined, uid);\n if (!field || !flags) {\n return;\n }\n\n field.setFlags(flags);\n};\n\n/**\n * Removes a field from the validator.\n */\nValidator.prototype.detach = function detach (name, scope, uid) {\n var field = isCallable(name.destroy) ? name : this._resolveField(name, scope, uid);\n if (!field) { return; }\n\n // We destroy/remove the field & error instances if it's not a `persist` one\n if (!field.persist) {\n field.destroy();\n this.errors.remove(field.name, field.scope, field.vmId);\n this.fields.remove(field);\n }\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.prototype.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator.extend(name, validator, options);\n};\n\nValidator.prototype.reset = function reset (matcher) {\n var this$1 = this;\n\n // two ticks\n return this.$vee._vm.$nextTick().then(function () {\n return this$1.$vee._vm.$nextTick();\n }).then(function () {\n this$1.fields.filter(matcher).forEach(function (field) {\n field.waitFor(null);\n field.reset(); // reset field flags.\n this$1.errors.remove(field.name, field.scope, matcher && matcher.vmId);\n });\n });\n};\n\n/**\n * Updates a field, updating both errors and flags.\n */\nValidator.prototype.update = function update (id, ref) {\n var scope = ref.scope;\n\n var field = this._resolveField((\"#\" + id));\n if (!field) { return; }\n\n // remove old scope.\n this.errors.update(id, { scope: scope });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.prototype.remove = function remove (name) {\n Validator.remove(name);\n};\n\n/**\n * Validates a value against a registered field validations.\n */\nValidator.prototype.validate = function validate (fieldDescriptor, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n // overload to validate all.\n if (isNullOrUndefined(fieldDescriptor)) {\n return this.validateScopes({ silent: silent, vmId: vmId });\n }\n\n // overload to validate scope-less fields.\n if (fieldDescriptor === '*') {\n return this.validateAll(undefined, { silent: silent, vmId: vmId });\n }\n\n // if scope validation was requested.\n if (/^(.+)\\.\\*$/.test(fieldDescriptor)) {\n var matched = fieldDescriptor.match(/^(.+)\\.\\*$/)[1];\n return this.validateAll(matched);\n }\n\n var field = this._resolveField(fieldDescriptor);\n if (!field) {\n return this._handleFieldNotFound(fieldDescriptor);\n }\n\n if (!silent) { field.flags.pending = true; }\n if (value === undefined) {\n value = field.value;\n }\n\n var validationPromise = this._validate(field, value);\n field.waitFor(validationPromise);\n\n return validationPromise.then(function (result) {\n if (!silent && field.isWaitingFor(validationPromise)) {\n // allow next validation to mutate the state.\n field.waitFor(null);\n this$1._handleValidationResults([result], vmId);\n }\n\n return result.valid;\n });\n};\n\n/**\n * Pauses the validator.\n */\nValidator.prototype.pause = function pause () {\n this.paused = true;\n\n return this;\n};\n\n/**\n * Resumes the validator.\n */\nValidator.prototype.resume = function resume () {\n this.paused = false;\n\n return this;\n};\n\n/**\n * Validates each value against the corresponding field validations.\n */\nValidator.prototype.validateAll = function validateAll (values, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n var matcher = null;\n var providedValues = false;\n\n if (typeof values === 'string') {\n matcher = { scope: values, vmId: vmId };\n } else if (isObject(values)) {\n matcher = Object.keys(values).map(function (key) {\n return { name: key, vmId: vmId, scope: null };\n });\n providedValues = true;\n } else if (Array.isArray(values)) {\n matcher = values.map(function (key) {\n return typeof key === 'object' ? Object.assign({ vmId: vmId }, key) : { name: key, vmId: vmId };\n });\n } else {\n matcher = { scope: null, vmId: vmId };\n }\n\n return Promise.all(\n this.fields.filter(matcher).map(function (field) { return this$1._validate(field, providedValues ? values[field.name] : field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates all scopes.\n */\nValidator.prototype.validateScopes = function validateScopes (ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n return Promise.all(\n this.fields.filter({ vmId: vmId }).map(function (field) { return this$1._validate(field, field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates a value against the rules.\n */\nValidator.prototype.verify = function verify (value, rules, options) {\n if ( options === void 0 ) options = {};\n\n var field = {\n name: (options && options.name) || '{field}',\n rules: normalizeRules(rules),\n bails: getPath('bails', options, true),\n forceRequired: false,\n get isRequired () {\n return !!this.rules.required || this.forceRequired;\n }\n };\n\n var targetRules = Object.keys(field.rules).filter(RuleContainer.isTargetRule);\n if (targetRules.length && options && isObject(options.values)) {\n field.dependencies = targetRules.map(function (rule) {\n var ref = field.rules[rule];\n var targetKey = ref[0];\n\n return {\n name: rule,\n field: { value: options.values[targetKey] }\n };\n });\n }\n\n return this._validate(field, value).then(function (result) {\n var errors = [];\n var ruleMap = {};\n result.errors.forEach(function (e) {\n errors.push(e.msg);\n ruleMap[e.rule] = e.msg;\n });\n\n return {\n valid: result.valid,\n errors: errors,\n failedRules: ruleMap\n };\n });\n};\n\n/**\n * Perform cleanup.\n */\nValidator.prototype.destroy = function destroy () {\n this.$vee._vm.$off('localeChanged');\n};\n\n/**\n * Creates the fields to be validated.\n */\nValidator.prototype._createFields = function _createFields (validations) {\n var this$1 = this;\n\n if (!validations) { return; }\n\n Object.keys(validations).forEach(function (field) {\n var options = assign({}, { name: field, rules: validations[field] });\n this$1.attach(options);\n });\n};\n\n/**\n * Date rules need the existence of a format, so date_format must be supplied.\n */\nValidator.prototype._getDateFormat = function _getDateFormat (validations) {\n var format = null;\n if (validations.date_format && Array.isArray(validations.date_format)) {\n format = validations.date_format[0];\n }\n\n return format || DictionaryResolver.getDriver().getDateFormat(this.locale);\n};\n\n/**\n * Formats an error message for field and a rule.\n */\nValidator.prototype._formatErrorMessage = function _formatErrorMessage (field, rule, data, targetName) {\n if ( data === void 0 ) data = {};\n if ( targetName === void 0 ) targetName = null;\n\n var name = this._getFieldDisplayName(field);\n var params = this._getLocalizedParams(rule, targetName);\n\n return DictionaryResolver.getDriver().getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\n};\n\n/**\n * We need to convert any object param to an array format since the locales do not handle params as objects yet.\n */\nValidator.prototype._convertParamObjectToArray = function _convertParamObjectToArray (obj, ruleName) {\n if (Array.isArray(obj)) {\n return obj;\n }\n\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames || !isObject(obj)) {\n return obj;\n }\n\n return paramNames.reduce(function (prev, paramName) {\n if (paramName in obj) {\n prev.push(obj[paramName]);\n }\n\n return prev;\n }, []);\n};\n\n/**\n * Translates the parameters passed to the rule (mainly for target fields).\n */\nValidator.prototype._getLocalizedParams = function _getLocalizedParams (rule, targetName) {\n if ( targetName === void 0 ) targetName = null;\n\n var params = this._convertParamObjectToArray(rule.params, rule.name);\n if (rule.options.hasTarget && params && params[0]) {\n var localizedName = targetName || DictionaryResolver.getDriver().getAttribute(this.locale, params[0], params[0]);\n return [localizedName].concat(params.slice(1));\n }\n\n return params;\n};\n\n/**\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\n */\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName (field) {\n return field.alias || DictionaryResolver.getDriver().getAttribute(this.locale, field.name, field.name);\n};\n\n/**\n * Converts an array of params to an object with named properties.\n * Only works if the rule is configured with a paramNames array.\n * Returns the same params if it cannot convert it.\n */\nValidator.prototype._convertParamArrayToObj = function _convertParamArrayToObj (params, ruleName) {\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames) {\n return params;\n }\n\n if (isObject(params)) {\n // check if the object is either a config object or a single parameter that is an object.\n var hasKeys = paramNames.some(function (name) { return Object.keys(params).indexOf(name) !== -1; });\n // if it has some of the keys, return it as is.\n if (hasKeys) {\n return params;\n }\n // otherwise wrap the object in an array.\n params = [params];\n }\n\n // Reduce the paramsNames to a param object.\n return params.reduce(function (prev, value, idx) {\n prev[paramNames[idx]] = value;\n\n return prev;\n }, {});\n};\n\n/**\n * Tests a single input value against a rule.\n */\nValidator.prototype._test = function _test (field, value, rule) {\n var this$1 = this;\n\n var validator = RuleContainer.getValidatorMethod(rule.name);\n var params = Array.isArray(rule.params) ? toArray(rule.params) : rule.params;\n if (!params) {\n params = [];\n }\n\n var targetName = null;\n if (!validator || typeof validator !== 'function') {\n return Promise.reject(createError((\"No such validator '\" + (rule.name) + \"' exists.\")));\n }\n\n // has field dependencies.\n if (rule.options.hasTarget && field.dependencies) {\n var target = find(field.dependencies, function (d) { return d.name === rule.name; });\n if (target) {\n targetName = target.field.alias;\n params = [target.field.value].concat(params.slice(1));\n }\n } else if (rule.name === 'required' && field.rejectsFalse) {\n // invalidate false if no args were specified and the field rejects false by default.\n params = params.length ? params : [true];\n }\n\n if (rule.options.isDate) {\n var dateFormat = this._getDateFormat(field.rules);\n if (rule.name !== 'date_format') {\n params.push(dateFormat);\n }\n }\n\n var result = validator(value, this._convertParamArrayToObj(params, rule.name));\n\n // If it is a promise.\n if (isCallable(result.then)) {\n return result.then(function (values) {\n var allValid = true;\n var data = {};\n if (Array.isArray(values)) {\n allValid = values.every(function (t) { return (isObject(t) ? t.valid : t); });\n } else { // Is a single object/boolean.\n allValid = isObject(values) ? values.valid : values;\n data = values.data;\n }\n\n return {\n valid: allValid,\n data: result.data,\n errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\n };\n });\n }\n\n if (!isObject(result)) {\n result = { valid: result, data: {} };\n }\n\n return {\n valid: result.valid,\n data: result.data,\n errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\n };\n};\n\n/**\n * Merges a validator object into the RULES and Messages.\n */\nValidator._merge = function _merge (name, ref) {\n var validator = ref.validator;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\n var validate = isCallable(validator) ? validator : validator.validate;\n if (validator.getMessage) {\n DictionaryResolver.getDriver().setMessage(Validator.locale, name, validator.getMessage);\n }\n\n RuleContainer.add(name, {\n validate: validate,\n options: options,\n paramNames: paramNames\n });\n};\n\n/**\n * Guards from extension violations.\n */\nValidator._guardExtend = function _guardExtend (name, validator) {\n if (isCallable(validator)) {\n return;\n }\n\n if (!isCallable(validator.validate)) {\n throw createError(\n (\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\")\n );\n }\n};\n\n/**\n * Creates a Field Error Object.\n */\nValidator.prototype._createFieldError = function _createFieldError (field, rule, data, targetName) {\n var this$1 = this;\n\n return {\n id: field.id,\n vmId: field.vmId,\n field: field.name,\n msg: this._formatErrorMessage(field, rule, data, targetName),\n rule: rule.name,\n scope: field.scope,\n regenerate: function () {\n return this$1._formatErrorMessage(field, rule, data, targetName);\n }\n };\n};\n\n/**\n * Tries different strategies to find a field.\n */\nValidator.prototype._resolveField = function _resolveField (name, scope, uid) {\n if (name[0] === '#') {\n return this.fields.findById(name.slice(1));\n }\n\n if (!isNullOrUndefined(scope)) {\n return this.fields.find({ name: name, scope: scope, vmId: uid });\n }\n\n if (includes(name, '.')) {\n var ref = name.split('.');\n var fieldScope = ref[0];\n var fieldName = ref.slice(1);\n var field = this.fields.find({ name: fieldName.join('.'), scope: fieldScope, vmId: uid });\n if (field) {\n return field;\n }\n }\n\n return this.fields.find({ name: name, scope: null, vmId: uid });\n};\n\n/**\n * Handles when a field is not found.\n */\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound (name, scope) {\n var fullName = isNullOrUndefined(scope) ? name : (\"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name);\n\n return Promise.reject(createError(\n (\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\")\n ));\n};\n\n/**\n * Handles validation results.\n */\nValidator.prototype._handleValidationResults = function _handleValidationResults (results, vmId) {\n var this$1 = this;\n\n var matchers = results.map(function (result) { return ({ id: result.id }); });\n this.errors.removeById(matchers.map(function (m) { return m.id; }));\n // remove by name and scope to remove any custom errors added.\n results.forEach(function (result) {\n this$1.errors.remove(result.field, result.scope, vmId);\n });\n var allErrors = results.reduce(function (prev, curr) {\n prev.push.apply(prev, curr.errors);\n\n return prev;\n }, []);\n\n this.errors.add(allErrors);\n\n // handle flags.\n this.fields.filter(matchers).forEach(function (field) {\n var result = find(results, function (r) { return r.id === field.id; });\n field.setFlags({\n pending: false,\n valid: result.valid,\n validated: true\n });\n });\n};\n\nValidator.prototype._shouldSkip = function _shouldSkip (field, value) {\n // field is configured to run through the pipeline regardless\n if (field.bails === false) {\n return false;\n }\n\n // disabled fields are skipped if useConstraintAttrs is enabled in config\n if (field.isDisabled && getConfig().useConstraintAttrs) {\n return true;\n }\n\n // skip if the field is not required and has an empty value.\n return !field.isRequired && (isNullOrUndefined(value) || value === '' || isEmptyArray(value));\n};\n\nValidator.prototype._shouldBail = function _shouldBail (field) {\n // if the field was configured explicitly.\n if (field.bails !== undefined) {\n return field.bails;\n }\n\n return this.fastExit;\n};\n\n/**\n * Starts the validation process.\n */\nValidator.prototype._validate = function _validate (field, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var initial = ref.initial;\n\n var requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\n\n field.forceRequired = false;\n requireRules.forEach(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n\n if (isCallable(result.then)) { throw createError('Require rules cannot be async'); }\n if (!isObject(result)) { throw createError('Require rules has to return an object (see docs)'); }\n\n if (result.data.required === true) {\n field.forceRequired = true;\n }\n });\n\n if (this._shouldSkip(field, value)) {\n return Promise.resolve({ valid: true, id: field.id, field: field.name, scope: field.scope, errors: [] });\n }\n\n var promises = [];\n var errors = [];\n var isExitEarly = false;\n if (isCallable(field.checkValueChanged)) {\n field.flags.changed = field.checkValueChanged();\n }\n\n // use of '.some()' is to break iteration in middle by returning true\n Object.keys(field.rules).filter(function (rule) {\n if (!initial || !RuleContainer.has(rule)) { return true; }\n\n return RuleContainer.isImmediate(rule);\n }).some(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n if (isCallable(result.then)) {\n promises.push(result);\n } else if (!result.valid && this$1._shouldBail(field)) {\n errors.push.apply(errors, result.errors);\n isExitEarly = true;\n } else {\n // promisify the result.\n promises.push(new Promise(function (resolve) { return resolve(result); }));\n }\n\n return isExitEarly;\n });\n\n if (isExitEarly) {\n return Promise.resolve({ valid: false, errors: errors, id: field.id, field: field.name, scope: field.scope });\n }\n\n return Promise.all(promises).then(function (results) {\n return results.reduce(function (prev, v) {\n var ref;\n\n if (!v.valid) {\n (ref = prev.errors).push.apply(ref, v.errors);\n }\n\n prev.valid = prev.valid && v.valid;\n\n return prev;\n }, { valid: true, errors: errors, id: field.id, field: field.name, scope: field.scope });\n });\n};\n\nObject.defineProperties( Validator.prototype, prototypeAccessors$4 );\nObject.defineProperties( Validator, staticAccessors$1 );\n\n// \n\nvar normalizeValue = function (value) {\n if (isObject(value)) {\n return Object.keys(value).reduce(function (prev, key) {\n prev[key] = normalizeValue(value[key]);\n\n return prev;\n }, {});\n }\n\n if (isCallable(value)) {\n return value('{0}', ['{1}', '{2}', '{3}']);\n }\n\n return value;\n};\n\nvar normalizeFormat = function (locale) {\n // normalize messages\n var dictionary = {};\n if (locale.messages) {\n dictionary.messages = normalizeValue(locale.messages);\n }\n\n if (locale.custom) {\n dictionary.custom = normalizeValue(locale.custom);\n }\n\n if (locale.attributes) {\n dictionary.attributes = locale.attributes;\n }\n\n if (!isNullOrUndefined(locale.dateFormat)) {\n dictionary.dateFormat = locale.dateFormat;\n }\n\n return dictionary;\n};\n\nvar I18nDictionary = function I18nDictionary (i18n, rootKey) {\n this.i18n = i18n;\n this.rootKey = rootKey;\n};\n\nvar prototypeAccessors$5 = { locale: { configurable: true } };\n\nprototypeAccessors$5.locale.get = function () {\n return this.i18n.locale;\n};\n\nprototypeAccessors$5.locale.set = function (value) {\n warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\n};\n\nI18nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n return this.i18n.getDateTimeFormat(locale || this.locale);\n};\n\nI18nDictionary.prototype.setDateFormat = function setDateFormat (locale, value) {\n this.i18n.setDateTimeFormat(locale || this.locale, value);\n};\n\nI18nDictionary.prototype.getMessage = function getMessage (_, key, data) {\n var path = (this.rootKey) + \".messages.\" + key;\n var dataOptions = data;\n\n if (Array.isArray(data)) {\n dataOptions = [].concat.apply([], data);\n }\n\n if (this.i18n.te(path)) {\n return this.i18n.t(path, dataOptions);\n }\n\n // fallback to the fallback message\n if (this.i18n.te(path, this.i18n.fallbackLocale)) {\n return this.i18n.t(path, this.i18n.fallbackLocale, dataOptions);\n }\n\n // fallback to the root message\n return this.i18n.t(((this.rootKey) + \".messages._default\"), dataOptions);\n};\n\nI18nDictionary.prototype.getAttribute = function getAttribute (_, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n var path = (this.rootKey) + \".attributes.\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path);\n }\n\n return fallback;\n};\n\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage (_, field, key, data) {\n var path = (this.rootKey) + \".custom.\" + field + \".\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path, data);\n }\n\n return this.getMessage(_, key, data);\n};\n\nI18nDictionary.prototype.merge = function merge$1 (dictionary) {\n var this$1 = this;\n\n Object.keys(dictionary).forEach(function (localeKey) {\n var obj;\n\n // i18n doesn't deep merge\n // first clone the existing locale (avoid mutations to locale)\n var clone = merge({}, getPath((localeKey + \".\" + (this$1.rootKey)), this$1.i18n.messages, {}));\n // Merge cloned locale with new one\n var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\n this$1.i18n.mergeLocaleMessage(localeKey, ( obj = {}, obj[this$1.rootKey] = locale, obj ));\n if (locale.dateFormat) {\n this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\n }\n });\n};\n\nI18nDictionary.prototype.setMessage = function setMessage (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n messages: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nI18nDictionary.prototype.setAttribute = function setAttribute (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n attributes: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nObject.defineProperties( I18nDictionary.prototype, prototypeAccessors$5 );\n\nvar aggressive = function () { return ({\n on: ['input']\n}); };\n\nvar lazy = function () { return ({\n on: ['change']\n}); };\n\nvar eager = function (ref) {\n var errors = ref.errors;\n\n if (errors.length) {\n return {\n on: ['input']\n };\n }\n\n return {\n on: ['change', 'blur']\n };\n};\n\nvar passive = function () { return ({\n on: []\n}); };\n\nvar modes = {\n aggressive: aggressive,\n eager: eager,\n passive: passive,\n lazy: lazy\n};\n\n// \n\nvar Vue;\nvar pendingPlugins;\nvar pluginInstance;\n\nvar VeeValidate$1 = function VeeValidate (config, _Vue) {\n this.configure(config);\n pluginInstance = this;\n if (_Vue) {\n Vue = _Vue;\n }\n this._validator = setValidator(\n new Validator(null, { fastExit: config && config.fastExit }, this)\n );\n this._initVM(this.config);\n this._initI18n(this.config);\n};\n\nvar prototypeAccessors$6 = { i18nDriver: { configurable: true },config: { configurable: true } };\nvar staticAccessors$2 = { i18nDriver: { configurable: true },config: { configurable: true } };\n\nVeeValidate$1.setI18nDriver = function setI18nDriver (driver, instance) {\n DictionaryResolver.setDriver(driver, instance);\n};\n\nVeeValidate$1.configure = function configure (cfg) {\n setConfig(cfg);\n};\n\nVeeValidate$1.setMode = function setMode (mode, implementation) {\n setConfig({ mode: mode });\n if (!implementation) {\n return;\n }\n\n if (!isCallable(implementation)) {\n throw new Error('A mode implementation must be a function');\n }\n\n modes[mode] = implementation;\n};\n\nVeeValidate$1.use = function use (plugin, options) {\n if ( options === void 0 ) options = {};\n\n if (!isCallable(plugin)) {\n return warn('The plugin must be a callable function');\n }\n\n // Don't install plugins until vee-validate is installed.\n if (!pluginInstance) {\n if (!pendingPlugins) {\n pendingPlugins = [];\n }\n pendingPlugins.push({ plugin: plugin, options: options });\n return;\n }\n\n plugin({ Validator: Validator, ErrorBag: ErrorBag, Rules: Validator.rules }, options);\n};\nVeeValidate$1.install = function install (_Vue, opts) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n warn('already installed, Vue.use(VeeValidate) should only be called once.');\n }\n return;\n }\n\n Vue = _Vue;\n pluginInstance = new VeeValidate$1(opts);\n // inject the plugin container statically into the validator class\n Validator.$vee = pluginInstance;\n\n detectPassiveSupport();\n\n Vue.mixin(mixin);\n Vue.directive('validate', directive);\n if (pendingPlugins) {\n pendingPlugins.forEach(function (ref) {\n var plugin = ref.plugin;\n var options = ref.options;\n\n VeeValidate$1.use(plugin, options);\n });\n pendingPlugins = null;\n }\n};\n\nprototypeAccessors$6.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$2.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$6.config.get = function () {\n return getConfig();\n};\n\nstaticAccessors$2.config.get = function () {\n return getConfig();\n};\n\nVeeValidate$1.prototype._initVM = function _initVM (config) {\n var this$1 = this;\n\n this._vm = new Vue({\n data: function () { return ({\n errors: this$1._validator.errors,\n fields: this$1._validator.fields\n }); }\n });\n};\n\nVeeValidate$1.prototype._initI18n = function _initI18n (config) {\n var this$1 = this;\n\n var dictionary = config.dictionary;\n var i18n = config.i18n;\n var i18nRootKey = config.i18nRootKey;\n var locale = config.locale;\n var onLocaleChanged = function () {\n if (dictionary) {\n this$1.i18nDriver.merge(dictionary);\n }\n\n this$1._validator.errors.regenerate();\n };\n\n // i18 is being used for localization.\n if (i18n) {\n VeeValidate$1.setI18nDriver('i18n', new I18nDictionary(i18n, i18nRootKey));\n i18n._vm.$watch('locale', onLocaleChanged);\n } else if (typeof window !== 'undefined') {\n this._vm.$on('localeChanged', onLocaleChanged);\n }\n\n if (dictionary) {\n this.i18nDriver.merge(dictionary);\n }\n\n if (locale && !i18n) {\n this._validator.localize(locale);\n }\n};\n\nVeeValidate$1.prototype.configure = function configure (cfg) {\n setConfig(cfg);\n};\n\nObject.defineProperties( VeeValidate$1.prototype, prototypeAccessors$6 );\nObject.defineProperties( VeeValidate$1, staticAccessors$2 );\n\nVeeValidate$1.mixin = mixin;\nVeeValidate$1.directive = directive;\nVeeValidate$1.Validator = Validator;\nVeeValidate$1.ErrorBag = ErrorBag;\n\n/**\n * Formates file size.\n *\n * @param {Number|String} size\n */\nvar formatFileSize = function (size) {\n var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n var threshold = 1024;\n size = Number(size) * threshold;\n var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\n return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + \" \" + (units[i]));\n};\n\n/**\n * Checks if vee-validate is defined globally.\n */\nvar isDefinedGlobally = function () {\n return typeof VeeValidate !== 'undefined';\n};\n\nvar obj;\n\nvar messages = {\n _default: function (field) { return (\"The \" + field + \" value is not valid\"); },\n after: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target);\n},\n alpha: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters\"); },\n alpha_dash: function (field) { return (\"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores\"); },\n alpha_num: function (field) { return (\"The \" + field + \" field may only contain alpha-numeric characters\"); },\n alpha_spaces: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters as well as spaces\"); },\n before: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target);\n},\n between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" field must be between \" + min + \" and \" + max);\n},\n confirmed: function (field) { return (\"The \" + field + \" confirmation does not match\"); },\n credit_card: function (field) { return (\"The \" + field + \" field is invalid\"); },\n date_between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" must be between \" + min + \" and \" + max);\n},\n date_format: function (field, ref) {\n var format = ref[0];\n\n return (\"The \" + field + \" must be in the format \" + format);\n},\n decimal: function (field, ref) {\n if ( ref === void 0 ) ref = [];\n var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n\n return (\"The \" + field + \" field must be numeric and may contain\" + (!decimals || decimals === '*' ? '' : ' ' + decimals) + \" decimal points\");\n},\n digits: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be numeric and contains exactly \" + length + \" digits\");\n},\n dimensions: function (field, ref) {\n var width = ref[0];\n var height = ref[1];\n\n return (\"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels\");\n},\n email: function (field) { return (\"The \" + field + \" field must be a valid email\"); },\n excluded: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n ext: function (field) { return (\"The \" + field + \" field must be a valid file\"); },\n image: function (field) { return (\"The \" + field + \" field must be an image\"); },\n included: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n integer: function (field) { return (\"The \" + field + \" field must be an integer\"); },\n ip: function (field) { return (\"The \" + field + \" field must be a valid ip address\"); },\n ip_or_fqdn: function (field) { return (\"The \" + field + \" field must be a valid ip address or FQDN\"); },\n length: function (field, ref) {\n var length = ref[0];\n var max = ref[1];\n\n if (max) {\n return (\"The \" + field + \" length must be between \" + length + \" and \" + max);\n }\n\n return (\"The \" + field + \" length must be \" + length);\n },\n max: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field may not be greater than \" + length + \" characters\");\n},\n max_value: function (field, ref) {\n var max = ref[0];\n\n return (\"The \" + field + \" field must be \" + max + \" or less\");\n},\n mimes: function (field) { return (\"The \" + field + \" field must have a valid file type\"); },\n min: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be at least \" + length + \" characters\");\n},\n min_value: function (field, ref) {\n var min = ref[0];\n\n return (\"The \" + field + \" field must be \" + min + \" or more\");\n},\n numeric: function (field) { return (\"The \" + field + \" field may only contain numeric characters\"); },\n regex: function (field) { return (\"The \" + field + \" field format is invalid\"); },\n required: function (field) { return (\"The \" + field + \" field is required\"); },\n required_if: function (field, ref) {\n var target = ref[0];\n\n return (\"The \" + field + \" field is required when the \" + target + \" field has this value\");\n},\n size: function (field, ref) {\n var size = ref[0];\n\n return (\"The \" + field + \" size must be less than \" + (formatFileSize(size)));\n},\n url: function (field) { return (\"The \" + field + \" field is not a valid URL\"); }\n};\n\nvar locale = {\n name: 'en',\n messages: messages,\n attributes: {}\n};\n\nif (isDefinedGlobally()) {\n // eslint-disable-next-line\n VeeValidate.Validator.localize(( obj = {}, obj[locale.name] = locale, obj ));\n}\n\nfunction toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {};\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate(restDateString, year);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month);\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear);\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day);\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE$1\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE$1 +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0\n }\n\n var hours;\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n\n if (!validateTimezone()) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n var minutes = parseInt(token[3], 10);\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount)\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction formatDistance (token, count, options) {\n options = options || {};\n\n var result;\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n\nfunction buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format\n }\n}\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\n\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n\nfunction buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var context = options.context ? String(options.context) : 'standalone';\n\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth];\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index]\n }\n}\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n};\n\nfunction buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth];\n\n var value;\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale$1 = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1;\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1\n}\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate();\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (hours === 0) {\n hours = 12;\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (hours === 0) {\n hours = 24;\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes();\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds();\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length)\n }\n};\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || '';\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong)\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'});\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'});\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'});\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'});\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n\nvar protectedTokens = ['D', 'DD', 'YY', 'YYYY'];\n\nfunction isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nfunction throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options);\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options);\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring);\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('');\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1 (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime()\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = toInteger(dirtyDay);\n\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, dirtyOptions) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\nvar MILLISECONDS_IN_HOUR$1 = 3600000;\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10);\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR$1 +\n minutes * MILLISECONDS_IN_MINUTE$2 +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// User for validation\nfunction isLeapYearIndex$1 (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$1[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH$1[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0);\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0);\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0);\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n };\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value);\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 20;\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\n\nvar notWhitespaceRegExp = /\\S/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ];\n\n var i;\n\n var tokens = formatString.match(formattingTokensRegExp$1);\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n );\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n\n dateString = parseResult.rest;\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n });\n\n var date = toDate(dirtyBaseDate, options);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions);\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0);\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n );\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n );\n return convertedDate\n}\n\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\")\n}\n\n// \n\n/**\n * Custom parse behavior on top of date-fns parse function.\n */\nfunction parseDate$1 (date, format$1) {\n if (typeof date !== 'string') {\n return isValid(date) ? date : null;\n }\n\n var parsed = parse(date, format$1, new Date());\n\n // if date is not valid or the formatted output after parsing does not match\n // the string value passed in (avoids overflows)\n if (!isValid(parsed) || format(parsed, format$1) !== date) {\n return null;\n }\n\n return parsed;\n}\n\nvar afterValidator = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n\n return isAfter(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options = {\n hasTarget: true,\n isDate: true\n};\n\n// required to convert from a list of array values to an object.\nvar paramNames = ['targetValue', 'inclusion', 'format'];\n\nvar after = {\n validate: afterValidator,\n options: options,\n paramNames: paramNames\n};\n\n/**\n * Some Alpha Regex helpers.\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\n */\n\nvar alpha = {\n en: /^[A-Z]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[A-ZÆØÅ]*$/i,\n de: /^[A-ZÄÖÜß]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[A-Z\\xC0-\\xFF]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[А-ЯЁ]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[A-ZČĆŽŠĐ]*$/i,\n sv: /^[A-ZÅÄÖ]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaSpaces = {\n en: /^[A-Z\\s]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\n da: /^[A-ZÆØÅ\\s]*$/i,\n de: /^[A-ZÄÖÜß\\s]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی\\s]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\n ru: /^[А-ЯЁ\\s]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\n sv: /^[A-ZÅÄÖ\\s]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i\n};\n\nvar alphanumeric = {\n en: /^[0-9A-Z]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[0-9A-ZÆØÅ]$/i,\n de: /^[0-9A-ZÄÖÜß]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[0-9А-ЯЁ]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\n sv: /^[0-9A-ZÅÄÖ]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaDash = {\n en: /^[0-9A-Z_-]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\n da: /^[0-9A-ZÆØÅ_-]*$/i,\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی_-]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\n ru: /^[0-9А-ЯЁ_-]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i\n};\n\nvar validate = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\n }\n\n return (alpha[locale] || alpha.en).test(value);\n};\n\nvar paramNames$1 = ['locale'];\n\nvar alpha$1 = {\n validate: validate,\n paramNames: paramNames$1\n};\n\nvar validate$1 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$1(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\n }\n\n return (alphaDash[locale] || alphaDash.en).test(value);\n};\n\nvar paramNames$2 = ['locale'];\n\nvar alpha_dash = {\n validate: validate$1,\n paramNames: paramNames$2\n};\n\nvar validate$2 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$2(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\n }\n\n return (alphanumeric[locale] || alphanumeric.en).test(value);\n};\n\nvar paramNames$3 = ['locale'];\n\nvar alpha_num = {\n validate: validate$2,\n paramNames: paramNames$3\n};\n\nvar validate$3 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$3(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\n }\n\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\n};\n\nvar paramNames$4 = ['locale'];\n\nvar alpha_spaces = {\n validate: validate$3,\n paramNames: paramNames$4\n};\n\nvar validate$4 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n\n return isBefore(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options$1 = {\n hasTarget: true,\n isDate: true\n};\n\nvar paramNames$5 = ['targetValue', 'inclusion', 'format'];\n\nvar before = {\n validate: validate$4,\n options: options$1,\n paramNames: paramNames$5\n};\n\nvar validate$5 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$5(val, { min: min, max: max }); });\n }\n\n return Number(min) <= value && Number(max) >= value;\n};\n\nvar paramNames$6 = ['min', 'max'];\n\nvar between = {\n validate: validate$5,\n paramNames: paramNames$6\n};\n\nvar validate$6 = function (value, ref) {\n var targetValue = ref.targetValue;\n\n return String(value) === String(targetValue);\n};\nvar options$2 = {\n hasTarget: true\n};\n\nvar paramNames$7 = ['targetValue'];\n\nvar confirmed = {\n validate: validate$6,\n options: options$2,\n paramNames: paramNames$7\n};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType;\n\n if (input === null) {\n invalidType = 'null';\n } else {\n invalidType = _typeof(input);\n\n if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n invalidType = input.constructor.name;\n } else {\n invalidType = \"a \".concat(invalidType);\n }\n }\n\n throw new TypeError(\"Expected string but received \".concat(invalidType, \".\"));\n }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(assertString_1);\n\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n\n if (!creditCard.test(sanitized)) {\n return false;\n }\n\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n\n if (shouldDouble) {\n tmpNum *= 2;\n\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n\n shouldDouble = !shouldDouble;\n }\n\n return !!(sum % 10 === 0 ? sanitized : false);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isCreditCard = unwrapExports(isCreditCard_1);\n\nvar validate$7 = function (value) { return isCreditCard(String(value)); };\n\nvar credit_card = {\n validate: validate$7\n};\n\nvar validate$8 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n var inclusivity = ref.inclusivity; if ( inclusivity === void 0 ) inclusivity = '()';\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusivity;\n inclusivity = '()';\n }\n\n var minDate = parseDate$1(String(min), format);\n var maxDate = parseDate$1(String(max), format);\n var dateVal = parseDate$1(String(value), format);\n\n if (!minDate || !maxDate || !dateVal) {\n return false;\n }\n\n if (inclusivity === '()') {\n return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\n }\n\n if (inclusivity === '(]') {\n return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\n }\n\n if (inclusivity === '[)') {\n return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\n }\n\n return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) ||\n (isBefore(dateVal, maxDate) && isAfter(dateVal, minDate));\n};\n\nvar options$3 = {\n isDate: true\n};\n\nvar paramNames$8 = ['min', 'max', 'inclusivity', 'format'];\n\nvar date_between = {\n validate: validate$8,\n options: options$3,\n paramNames: paramNames$8\n};\n\nvar validate$9 = function (value, ref) {\n var format = ref.format;\n\n return !!parseDate$1(value, format);\n};\n\nvar options$4 = {\n isDate: true\n};\n\nvar paramNames$9 = ['format'];\n\nvar date_format = {\n validate: validate$9,\n options: options$4,\n paramNames: paramNames$9\n};\n\nvar validate$a = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var decimals = ref.decimals; if ( decimals === void 0 ) decimals = '*';\n var separator = ref.separator; if ( separator === void 0 ) separator = '.';\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$a(val, { decimals: decimals, separator: separator }); });\n }\n\n // if is 0.\n if (Number(decimals) === 0) {\n return /^-?\\d*$/.test(value);\n }\n\n var regexPart = decimals === '*' ? '+' : (\"{1,\" + decimals + \"}\");\n var regex = new RegExp((\"^[-+]?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?([eE]{1}[-]?\\\\d+)?$\"));\n\n if (! regex.test(value)) {\n return false;\n }\n\n var parsedValue = parseFloat(value);\n\n // eslint-disable-next-line\n return parsedValue === parsedValue;\n};\n\nvar paramNames$a = ['decimals', 'separator'];\n\nvar decimal = {\n validate: validate$a,\n paramNames: paramNames$a\n};\n\nvar validate$b = function (value, ref) {\n var length = ref[0];\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$b(val, [length]); });\n }\n var strVal = String(value);\n\n return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\n};\n\nvar digits = {\n validate: validate$b\n};\n\nvar imageRegex = /\\.(jpg|svg|jpeg|png|bmp|gif)$/i;\n\nvar validateImage = function (file, width, height) {\n var URL = window.URL || window.webkitURL;\n return new Promise(function (resolve) {\n var image = new Image();\n image.onerror = function () { return resolve({ valid: false }); };\n image.onload = function () { return resolve({\n valid: image.width === Number(width) && image.height === Number(height)\n }); };\n\n image.src = URL.createObjectURL(file);\n });\n};\n\nvar validate$c = function (files, ref) {\n var width = ref[0];\n var height = ref[1];\n\n var images = ensureArray(files).filter(function (file) { return imageRegex.test(file.name); });\n if (images.length === 0) {\n return false;\n }\n return Promise.all(images.map(function (image) { return validateImage(image, width, height); }));\n};\n\nvar dimensions = {\n validate: validate$c\n};\n\nvar merge_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(merge_1);\n\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(isByteLength_1);\n\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n var parts = str.split('.');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n\n if (options.require_tld) {\n var tld = parts.pop();\n\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isFQDN = unwrapExports(isFQDN_1);\n\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n } // initial or final ::\n\n\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ; else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n\n return blocks.length === expectedNumberOfBlocks;\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isIP = unwrapExports(isIP_1);\n\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nvar _isByteLength = _interopRequireDefault(isByteLength_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n/* eslint-enable max-len */\n\n/* eslint-enable no-control-regex */\n\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(displayName);\n\n if (display_email) {\n str = display_email[1];\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace('.', ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n })) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isEmail = unwrapExports(isEmail_1);\n\nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar validate$d = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var multiple = ref.multiple; if ( multiple === void 0 ) multiple = false;\n var rest = objectWithoutProperties( ref, [\"multiple\"] );\n var options = rest;\n\n if (multiple && !Array.isArray(value)) {\n value = String(value).split(',').map(function (emailStr) { return emailStr.trim(); });\n }\n\n var validatorOptions = assign({}, options);\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isEmail(String(val), validatorOptions); });\n }\n\n return isEmail(String(value), validatorOptions);\n};\n\nvar email = {\n validate: validate$d\n};\n\nvar validate$e = function (value, options) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$e(val, options); });\n }\n\n return toArray(options).some(function (item) {\n // eslint-disable-next-line\n return item == value;\n });\n};\n\nvar included = {\n validate: validate$e\n};\n\nvar validate$f = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return !validate$e.apply(void 0, args);\n};\n\nvar excluded = {\n validate: validate$f\n};\n\nvar validate$g = function (files, extensions) {\n var regex = new RegExp((\".(\" + (extensions.join('|')) + \")$\"), 'i');\n return ensureArray(files).every(function (file) { return regex.test(file.name); });\n};\n\nvar ext = {\n validate: validate$g\n};\n\nvar validate$h = function (files) { return (Array.isArray(files) ? files : [files]).every(function (file) { return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name); }); };\n\nvar image = {\n validate: validate$h\n};\n\nvar validate$i = function (value) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\n }\n\n return /^-?[0-9]+$/.test(String(value));\n};\n\nvar integer = {\n validate: validate$i\n};\n\nvar validate$j = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var version = ref.version; if ( version === void 0 ) version = 4;\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isIP(val, version); });\n }\n\n return isIP(value, version);\n};\n\nvar paramNames$b = ['version'];\n\nvar ip = {\n validate: validate$j,\n paramNames: paramNames$b\n};\n\nvar validate$k = function (value) {\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return (isIP(val, '') || isFQDN(val)); });\n }\n\n return isIP(value, '') || isFQDN(value);\n};\n\nvar ip_or_fqdn = {\n validate: validate$k\n};\n\nvar validate$l = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value === other;\n};\n\nvar is = {\n validate: validate$l\n};\n\nvar validate$m = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value !== other;\n};\n\nvar is_not = {\n validate: validate$m\n};\n\n/**\n * @param {Array|String} value\n * @param {Number} length\n * @param {Number} max\n */\nvar compare = function (value, length, max) {\n if (max === undefined) {\n return value.length === length;\n }\n\n // cast to number.\n max = Number(max);\n\n return value.length >= length && value.length <= max;\n};\n\nvar validate$n = function (value, ref) {\n var length = ref[0];\n var max = ref[1]; if ( max === void 0 ) max = undefined;\n\n if (isNullOrUndefined(value)) {\n return false;\n }\n\n length = Number(length);\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (!value.length) {\n value = toArray(value);\n }\n\n return compare(value, length, max);\n};\n\nvar length = {\n validate: validate$n\n};\n\nvar validate$o = function (value, ref) {\n var length = ref[0];\n\n if (isNullOrUndefined(value)) {\n return length >= 0;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$o(val, [length]); });\n }\n\n return String(value).length <= length;\n};\n\nvar max = {\n validate: validate$o\n};\n\nvar validate$p = function (value, ref) {\n var max = ref[0];\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) { return validate$p(val, [max]); });\n }\n\n return Number(value) <= max;\n};\n\nvar max_value = {\n validate: validate$p\n};\n\nvar validate$q = function (files, mimes) {\n var regex = new RegExp(((mimes.join('|').replace('*', '.+')) + \"$\"), 'i');\n return ensureArray(files).every(function (file) { return regex.test(file.type); });\n};\n\nvar mimes = {\n validate: validate$q\n};\n\nvar validate$r = function (value, ref) {\n var length = ref[0];\n\n if (isNullOrUndefined(value)) {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$r(val, [length]); });\n }\n\n return String(value).length >= length;\n};\n\nvar min = {\n validate: validate$r\n};\n\nvar validate$s = function (value, ref) {\n var min = ref[0];\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) { return validate$s(val, [min]); });\n }\n\n return Number(value) >= min;\n};\n\nvar min_value = {\n validate: validate$s\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\nvar en = /^[0-9]+$/;\n\nvar validate$t = function (value) {\n var testValue = function (val) {\n var strValue = String(val);\n\n return en.test(strValue) || ar.test(strValue);\n };\n\n if (Array.isArray(value)) {\n return value.every(testValue);\n }\n\n return testValue(value);\n};\n\nvar numeric = {\n validate: validate$t\n};\n\nvar validate$u = function (value, ref) {\n var expression = ref.expression;\n\n if (typeof expression === 'string') {\n expression = new RegExp(expression);\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$u(val, { expression: expression }); });\n }\n\n return expression.test(String(value));\n};\n\nvar paramNames$c = ['expression'];\n\nvar regex = {\n validate: validate$u,\n paramNames: paramNames$c\n};\n\nvar validate$v = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var invalidateFalse = ref[0]; if ( invalidateFalse === void 0 ) invalidateFalse = false;\n\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\n return false;\n }\n\n // incase a field considers `false` as an empty value like checkboxes.\n if (value === false && invalidateFalse) {\n return false;\n }\n\n return !!String(value).trim().length;\n};\n\nvar required = {\n validate: validate$v\n};\n\nvar validate$w = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var otherFieldVal = ref[0];\n var possibleVals = ref.slice(1);\n\n var required = possibleVals.includes(String(otherFieldVal).trim());\n\n if (!required) {\n return {\n valid: true,\n data: {\n required: required\n }\n };\n }\n\n var invalid = (isEmptyArray(value) || [false, null, undefined].includes(value));\n\n invalid = invalid || !String(value).trim().length;\n\n return {\n valid: !invalid,\n data: {\n required: required\n }\n };\n};\n\nvar options$5 = {\n hasTarget: true,\n computesRequired: true\n};\n\nvar required_if = {\n validate: validate$w,\n options: options$5\n};\n\nvar validate$x = function (files, ref) {\n var size = ref[0];\n\n if (isNaN(size)) {\n return false;\n }\n var nSize = Number(size) * 1024;\n return ensureArray(files).every(function (file) { return file.size <= nSize; });\n};\n\nvar size = {\n validate: validate$x\n};\n\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n\n options = (0, _merge.default)(options, default_url_options);\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n\n split[0] = url.substr(2);\n }\n\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n\n auth = split.shift();\n\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isURL = unwrapExports(isURL_1);\n\nvar validate$y = function (value, options) {\n if ( options === void 0 ) options = {};\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n var validatorOptions = assign({}, options);\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isURL(val, validatorOptions); });\n }\n\n return isURL(value, validatorOptions);\n};\n\nvar url = {\n validate: validate$y\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n after: after,\n alpha_dash: alpha_dash,\n alpha_num: alpha_num,\n alpha_spaces: alpha_spaces,\n alpha: alpha$1,\n before: before,\n between: between,\n confirmed: confirmed,\n credit_card: credit_card,\n date_between: date_between,\n date_format: date_format,\n decimal: decimal,\n digits: digits,\n dimensions: dimensions,\n email: email,\n ext: ext,\n image: image,\n included: included,\n integer: integer,\n length: length,\n ip: ip,\n ip_or_fqdn: ip_or_fqdn,\n is_not: is_not,\n is: is,\n max: max,\n max_value: max_value,\n mimes: mimes,\n min: min,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n required_if: required_if,\n size: size,\n url: url\n});\n\n// \n\nvar normalize = function (fields) {\n if (Array.isArray(fields)) {\n return fields.reduce(function (prev, curr) {\n if (includes(curr, '.')) {\n prev[curr.split('.')[1]] = curr;\n } else {\n prev[curr] = curr;\n }\n\n return prev;\n }, {});\n }\n\n return fields;\n};\n\n// Combines two flags using either AND or OR depending on the flag type.\nvar combine = function (lhs, rhs) {\n var mapper = {\n pristine: function (lhs, rhs) { return lhs && rhs; },\n dirty: function (lhs, rhs) { return lhs || rhs; },\n touched: function (lhs, rhs) { return lhs || rhs; },\n untouched: function (lhs, rhs) { return lhs && rhs; },\n valid: function (lhs, rhs) { return lhs && rhs; },\n invalid: function (lhs, rhs) { return lhs || rhs; },\n pending: function (lhs, rhs) { return lhs || rhs; },\n required: function (lhs, rhs) { return lhs || rhs; },\n validated: function (lhs, rhs) { return lhs && rhs; }\n };\n\n return Object.keys(mapper).reduce(function (flags, flag) {\n flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\n\n return flags;\n }, {});\n};\n\nvar mapScope = function (scope, deep) {\n if ( deep === void 0 ) deep = true;\n\n return Object.keys(scope).reduce(function (flags, field) {\n if (!flags) {\n flags = assign({}, scope[field]);\n return flags;\n }\n\n // scope.\n var isScope = field.indexOf('$') === 0;\n if (deep && isScope) {\n return combine(mapScope(scope[field]), flags);\n } else if (!deep && isScope) {\n return flags;\n }\n\n flags = combine(flags, scope[field]);\n\n return flags;\n }, null);\n};\n\n/**\n * Maps fields to computed functions.\n */\nvar mapFields = function (fields) {\n if (!fields) {\n return function () {\n return mapScope(this.$validator.flags);\n };\n }\n\n var normalized = normalize(fields);\n return Object.keys(normalized).reduce(function (prev, curr) {\n var field = normalized[curr];\n prev[curr] = function mappedField () {\n // if field exists\n if (this.$validator.flags[field]) {\n return this.$validator.flags[field];\n }\n\n // scopeless fields were selected.\n if (normalized[curr] === '*') {\n return mapScope(this.$validator.flags, false);\n }\n\n // if it has a scope defined\n var index = field.indexOf('.');\n if (index <= 0) {\n return {};\n }\n\n var ref = field.split('.');\n var scope = ref[0];\n var name = ref.slice(1);\n\n scope = this.$validator.flags[(\"$\" + scope)];\n name = name.join('.');\n\n // an entire scope was selected: scope.*\n if (name === '*' && scope) {\n return mapScope(scope);\n }\n\n if (scope && scope[name]) {\n return scope[name];\n }\n\n return {};\n };\n\n return prev;\n }, {});\n};\n\nvar $validator = null;\n\nvar PROVIDER_COUNTER = 0;\n\nvar ValidationProvider = {\n $__veeInject: false,\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n default: function default$1 () {\n if (!this.$vnode.context.$_veeObserver) {\n this.$vnode.context.$_veeObserver = createObserver();\n }\n\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n vid: {\n type: [String, Number],\n default: function () {\n PROVIDER_COUNTER++;\n\n return (\"_vee_\" + PROVIDER_COUNTER);\n }\n },\n name: {\n type: String,\n default: null\n },\n mode: {\n type: [String, Function],\n default: function () {\n return getConfig().mode;\n }\n },\n events: {\n type: Array,\n validate: function () {\n /* istanbul ignore next */\n if (process.env.NODE_ENV !== 'production') {\n warn('events prop and config will be deprecated in future version please use the interaction modes instead');\n }\n\n return true;\n },\n default: function () {\n var events = getConfig().events;\n if (typeof events === 'string') {\n return events.split('|');\n }\n\n return events;\n }\n },\n rules: {\n type: [Object, String],\n default: null\n },\n immediate: {\n type: Boolean,\n default: false\n },\n persist: {\n type: Boolean,\n default: false\n },\n bails: {\n type: Boolean,\n default: function () { return getConfig().fastExit; }\n },\n debounce: {\n type: Number,\n default: function () { return getConfig().delay || 0; }\n },\n tag: {\n type: String,\n default: 'span'\n },\n slim: {\n type: Boolean,\n default: false\n }\n },\n watch: {\n rules: {\n deep: true,\n handler: function handler (val, oldVal) {\n this._needsValidation = !isEqual(val, oldVal);\n }\n }\n },\n data: function () { return ({\n messages: [],\n value: undefined,\n initialized: false,\n initialValue: undefined,\n flags: createFlags(),\n failedRules: {},\n forceRequired: false,\n isDeactivated: false,\n id: null\n }); },\n computed: {\n isValid: function isValid () {\n return this.flags.valid;\n },\n fieldDeps: function fieldDeps () {\n var this$1 = this;\n\n var rules = normalizeRules(this.rules);\n\n return Object.keys(rules).filter(RuleContainer.isTargetRule).map(function (rule) {\n var depName = rules[rule][0];\n watchCrossFieldDep(this$1, depName);\n\n return depName;\n });\n },\n normalizedEvents: function normalizedEvents () {\n var this$1 = this;\n\n var ref = computeModeSetting(this);\n var on = ref.on;\n\n return normalizeEvents(on || this.events || []).map(function (e) {\n if (e === 'input') {\n return this$1._inputEventName;\n }\n\n return e;\n });\n },\n isRequired: function isRequired () {\n var rules = normalizeRules(this.rules);\n var forceRequired = this.forceRequired;\n\n var isRequired = rules.required || forceRequired;\n this.flags.required = isRequired;\n\n return isRequired;\n },\n classes: function classes () {\n var this$1 = this;\n\n var names = getConfig().classNames;\n return Object.keys(this.flags).reduce(function (classes, flag) {\n var className = (names && names[flag]) || flag;\n if (isNullOrUndefined(this$1.flags[flag])) {\n return classes;\n }\n\n if (className) {\n classes[className] = this$1.flags[flag];\n }\n\n return classes;\n }, {});\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n this.registerField();\n var ctx = createValidationCtx(this);\n\n // Gracefully handle non-existent scoped slots.\n var slot = this.$scopedSlots.default;\n /* istanbul ignore next */\n if (!isCallable(slot)) {\n if (process.env.NODE_ENV !== 'production') {\n warn('ValidationProvider expects a scoped slot. Did you forget to add \"v-slot\" to your slot?');\n }\n\n return h(this.tag, this.$slots.default);\n }\n\n var nodes = slot(ctx);\n // Handle single-root slot.\n extractVNodes(nodes).forEach(function (input) {\n addListeners.call(this$1, input);\n });\n\n return this.slim ? createRenderless(h, nodes) : h(this.tag, nodes);\n },\n beforeDestroy: function beforeDestroy () {\n // cleanup reference.\n this.$_veeObserver.unsubscribe(this);\n },\n activated: function activated () {\n this.$_veeObserver.subscribe(this);\n this.isDeactivated = false;\n },\n deactivated: function deactivated () {\n this.$_veeObserver.unsubscribe(this);\n this.isDeactivated = true;\n },\n methods: {\n setFlags: function setFlags (flags) {\n var this$1 = this;\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n });\n },\n syncValue: function syncValue (e) {\n var value = normalizeValue$1(e);\n this.value = value;\n this.flags.changed = this.initialValue !== value;\n },\n reset: function reset () {\n this.messages = [];\n this._pendingValidation = null;\n this.initialValue = this.value;\n var flags = createFlags();\n this.setFlags(flags);\n },\n validate: function validate () {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length > 0) {\n this.syncValue(args[0]);\n }\n\n return this.validateSilent().then(function (result) {\n this$1.applyResult(result);\n\n return result;\n });\n },\n validateSilent: function validateSilent () {\n var this$1 = this;\n\n this.setFlags({ pending: true });\n\n return $validator.verify(this.value, this.rules, {\n name: this.name,\n values: createValuesLookup(this),\n bails: this.bails\n }).then(function (result) {\n this$1.setFlags({ pending: false });\n if (!this$1.isRequired) {\n this$1.setFlags({ valid: result.valid, invalid: !result.valid });\n }\n\n return result;\n });\n },\n applyResult: function applyResult (ref) {\n var errors = ref.errors;\n var failedRules = ref.failedRules;\n\n this.messages = errors;\n this.failedRules = assign({}, failedRules);\n this.setFlags({\n valid: !errors.length,\n changed: this.value !== this.initialValue,\n invalid: !!errors.length,\n validated: true\n });\n },\n registerField: function registerField () {\n if (!$validator) {\n $validator = getValidator() || new Validator(null, { fastExit: getConfig().fastExit });\n }\n\n updateRenderingContextRefs(this);\n }\n }\n};\n\nfunction createValidationCtx (ctx) {\n return {\n errors: ctx.messages,\n flags: ctx.flags,\n classes: ctx.classes,\n valid: ctx.isValid,\n failedRules: ctx.failedRules,\n reset: function () { return ctx.reset(); },\n validate: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return ctx.validate.apply(ctx, args);\n },\n aria: {\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\n 'aria-required': ctx.isRequired ? 'true' : 'false'\n }\n };\n}\n\nfunction normalizeValue$1 (value) {\n if (isEvent(value)) {\n return value.target.type === 'file' ? toArray(value.target.files) : value.target.value;\n }\n\n return value;\n}\n\n/**\n * Determines if a provider needs to run validation.\n */\nfunction shouldValidate (ctx, model) {\n // when an immediate/initial validation is needed and wasn't done before.\n if (!ctx._ignoreImmediate && ctx.immediate) {\n return true;\n }\n\n // when the value changes for whatever reason.\n if (ctx.value !== model.value) {\n return true;\n }\n\n // when it needs validation due to props/cross-fields changes.\n if (ctx._needsValidation) {\n return true;\n }\n\n // when the initial value is undefined and the field wasn't rendered yet.\n if (!ctx.initialized && model.value === undefined) {\n return true;\n }\n\n return false;\n}\n\nfunction computeModeSetting (ctx) {\n var compute = isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode];\n\n return compute({\n errors: ctx.messages,\n value: ctx.value,\n flags: ctx.flags\n });\n}\n\nfunction onRenderUpdate (model) {\n if (!this.initialized) {\n this.initialValue = model.value;\n }\n\n var validateNow = shouldValidate(this, model);\n this._needsValidation = false;\n this.value = model.value;\n this._ignoreImmediate = true;\n\n if (!validateNow) {\n return;\n }\n\n this.validateSilent().then(this.immediate || this.flags.validated ? this.applyResult : function (x) { return x; });\n}\n\n// Creates the common handlers for a validatable context.\nfunction createCommonHandlers (ctx) {\n var onInput = function (e) {\n ctx.syncValue(e); // track and keep the value updated.\n ctx.setFlags({ dirty: true, pristine: false });\n };\n\n // Blur event listener.\n var onBlur = function () {\n ctx.setFlags({ touched: true, untouched: false });\n };\n\n var onValidate = ctx.$veeHandler;\n var mode = computeModeSetting(ctx);\n\n // Handle debounce changes.\n if (!onValidate || ctx.$veeDebounce !== ctx.debounce) {\n onValidate = debounce(\n function () {\n ctx.$nextTick(function () {\n var pendingPromise = ctx.validateSilent();\n // avoids race conditions between successive validations.\n ctx._pendingValidation = pendingPromise;\n pendingPromise.then(function (result) {\n if (pendingPromise === ctx._pendingValidation) {\n ctx.applyResult(result);\n ctx._pendingValidation = null;\n }\n });\n });\n },\n mode.debounce || ctx.debounce\n );\n\n // Cache the handler so we don't create it each time.\n ctx.$veeHandler = onValidate;\n // cache the debounce value so we detect if it was changed.\n ctx.$veeDebounce = ctx.debounce;\n }\n\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\n}\n\n// Adds all plugin listeners to the vnode.\nfunction addListeners (node) {\n var model = findModel(node);\n // cache the input eventName.\n this._inputEventName = this._inputEventName || getInputEventName(node, model);\n\n onRenderUpdate.call(this, model);\n\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n addVNodeListener(node, this._inputEventName, onInput);\n addVNodeListener(node, 'blur', onBlur);\n\n // add the validation listeners.\n this.normalizedEvents.forEach(function (evt) {\n addVNodeListener(node, evt, onValidate);\n });\n\n this.initialized = true;\n}\n\nfunction createValuesLookup (ctx) {\n var providers = ctx.$_veeObserver.refs;\n\n return ctx.fieldDeps.reduce(function (acc, depName) {\n if (!providers[depName]) {\n return acc;\n }\n\n acc[depName] = providers[depName].value;\n\n return acc;\n }, {});\n}\n\nfunction updateRenderingContextRefs (ctx) {\n // IDs should not be nullable.\n if (isNullOrUndefined(ctx.id) && ctx.id === ctx.vid) {\n ctx.id = PROVIDER_COUNTER;\n PROVIDER_COUNTER++;\n }\n\n var id = ctx.id;\n var vid = ctx.vid;\n // Nothing has changed.\n if (ctx.isDeactivated || (id === vid && ctx.$_veeObserver.refs[id])) {\n return;\n }\n\n // vid was changed.\n if (id !== vid && ctx.$_veeObserver.refs[id] === ctx) {\n ctx.$_veeObserver.unsubscribe({ vid: id });\n }\n\n ctx.$_veeObserver.subscribe(ctx);\n ctx.id = vid;\n}\n\nfunction createObserver () {\n return {\n refs: {},\n subscribe: function subscribe (ctx) {\n this.refs[ctx.vid] = ctx;\n },\n unsubscribe: function unsubscribe (ctx) {\n delete this.refs[ctx.vid];\n }\n };\n}\n\nfunction watchCrossFieldDep (ctx, depName, withHooks) {\n if ( withHooks === void 0 ) withHooks = true;\n\n var providers = ctx.$_veeObserver.refs;\n if (!ctx._veeWatchers) {\n ctx._veeWatchers = {};\n }\n\n if (!providers[depName] && withHooks) {\n return ctx.$once('hook:mounted', function () {\n watchCrossFieldDep(ctx, depName, false);\n });\n }\n\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\n if (ctx.flags.validated) {\n ctx._needsValidation = true;\n ctx.validate();\n }\n });\n }\n}\n\nvar flagMergingStrategy = {\n pristine: 'every',\n dirty: 'some',\n touched: 'some',\n untouched: 'every',\n valid: 'every',\n invalid: 'some',\n pending: 'some',\n validated: 'every'\n};\n\nfunction mergeFlags (lhs, rhs, strategy) {\n var stratName = flagMergingStrategy[strategy];\n\n return [lhs, rhs][stratName](function (f) { return f; });\n}\n\nvar OBSERVER_COUNTER = 0;\n\nvar ValidationObserver = {\n name: 'ValidationObserver',\n provide: function provide () {\n return {\n $_veeObserver: this\n };\n },\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n default: function default$1 () {\n if (!this.$vnode.context.$_veeObserver) {\n return null;\n }\n\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n tag: {\n type: String,\n default: 'span'\n },\n slim: {\n type: Boolean,\n default: false\n }\n },\n data: function () { return ({\n vid: (\"obs_\" + (OBSERVER_COUNTER++)),\n refs: {},\n observers: [],\n persistedStore: {}\n }); },\n computed: {\n ctx: function ctx () {\n var this$1 = this;\n\n var ctx = {\n errors: {},\n validate: function (arg) {\n var promise = this$1.validate(arg);\n\n return {\n then: function then (thenable) {\n return promise.then(function (success) {\n if (success && isCallable(thenable)) {\n return Promise.resolve(thenable());\n }\n\n return Promise.resolve(success);\n });\n }\n };\n },\n reset: function () { return this$1.reset(); }\n };\n\n return values(this.refs).concat( Object.keys(this.persistedStore).map(function (key) {\n return {\n vid: key,\n flags: this$1.persistedStore[key].flags,\n messages: this$1.persistedStore[key].errors\n };\n }),\n this.observers ).reduce(function (acc, provider) {\n Object.keys(flagMergingStrategy).forEach(function (flag) {\n var flags = provider.flags || provider.ctx;\n if (!(flag in acc)) {\n acc[flag] = flags[flag];\n return;\n }\n\n acc[flag] = mergeFlags(acc[flag], flags[flag], flag);\n });\n\n acc.errors[provider.vid] = provider.messages || values(provider.ctx.errors).reduce(function (errs, obsErrors) {\n return errs.concat(obsErrors);\n }, []);\n\n return acc;\n }, ctx);\n }\n },\n created: function created () {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n activated: function activated () {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n deactivated: function deactivated () {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n beforeDestroy: function beforeDestroy () {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n render: function render (h) {\n var slots = this.$slots.default || this.$scopedSlots.default || [];\n if (isCallable(slots)) {\n slots = slots(this.ctx);\n }\n\n return this.slim ? createRenderless(h, slots) : h(this.tag, { on: this.$listeners, attrs: this.$attrs }, slots);\n },\n methods: {\n subscribe: function subscribe (subscriber, kind) {\n var obj;\n\n if ( kind === void 0 ) kind = 'provider';\n if (kind === 'observer') {\n this.observers.push(subscriber);\n return;\n }\n\n this.refs = Object.assign({}, this.refs, ( obj = {}, obj[subscriber.vid] = subscriber, obj ));\n if (subscriber.persist && this.persistedStore[subscriber.vid]) {\n this.restoreProviderState(subscriber);\n }\n },\n unsubscribe: function unsubscribe (ref, kind) {\n var vid = ref.vid;\n if ( kind === void 0 ) kind = 'provider';\n\n if (kind === 'provider') {\n this.removeProvider(vid);\n }\n\n var idx = findIndex(this.observers, function (o) { return o.vid === vid; });\n if (idx !== -1) {\n this.observers.splice(idx, 1);\n }\n },\n validate: function validate (ref) {\n if ( ref === void 0 ) ref = { silent: false };\n var silent = ref.silent;\n\n return Promise.all(values(this.refs).map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }).concat( this.observers.map(function (obs) { return obs.validate({ silent: silent }); })\n )).then(function (results) { return results.every(function (r) { return r; }); });\n },\n reset: function reset () {\n var this$1 = this;\n\n Object.keys(this.persistedStore).forEach(function (key) {\n this$1.$delete(this$1.persistedStore, key);\n });\n return values(this.refs).concat( this.observers).forEach(function (ref) { return ref.reset(); });\n },\n restoreProviderState: function restoreProviderState (provider) {\n var state = this.persistedStore[provider.vid];\n provider.setFlags(state.flags);\n provider.applyResult(state);\n this.$delete(this.persistedStore, provider.vid);\n },\n removeProvider: function removeProvider (vid) {\n var obj;\n\n var provider = this.refs[vid];\n // save it for the next time.\n if (provider && provider.persist) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vid.indexOf('_vee_') === 0) {\n warn('Please provide a `vid` prop when using `persist`, there might be unexpected issues otherwise.');\n }\n }\n\n this.persistedStore = assign({}, this.persistedStore, ( obj = {}, obj[vid] = {\n flags: provider.flags,\n errors: provider.messages,\n failedRules: provider.failedRules\n }, obj ));\n }\n\n this.$delete(this.refs, vid);\n },\n }\n};\n\nfunction withValidation (component, ctxToProps) {\n if ( ctxToProps === void 0 ) ctxToProps = null;\n\n var options = isCallable(component) ? component.options : component;\n options.$__veeInject = false;\n var hoc = {\n name: ((options.name || 'AnonymousHoc') + \"WithValidation\"),\n props: assign({}, ValidationProvider.props),\n data: ValidationProvider.data,\n computed: assign({}, ValidationProvider.computed),\n methods: assign({}, ValidationProvider.methods),\n $__veeInject: false,\n beforeDestroy: ValidationProvider.beforeDestroy,\n inject: ValidationProvider.inject\n };\n\n // Default ctx converts ctx props to component props.\n if (!ctxToProps) {\n ctxToProps = function (ctx) { return ctx; };\n }\n\n var eventName = (options.model && options.model.event) || 'input';\n\n hoc.render = function (h) {\n var obj;\n\n this.registerField();\n var vctx = createValidationCtx(this);\n var listeners = assign({}, this.$listeners);\n\n var model = findModel(this.$vnode);\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\n onRenderUpdate.call(this, model);\n\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n\n mergeVNodeListeners(listeners, eventName, onInput);\n mergeVNodeListeners(listeners, 'blur', onBlur);\n this.normalizedEvents.forEach(function (evt, idx) {\n mergeVNodeListeners(listeners, evt, onValidate);\n });\n\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\n // WARNING: Accidental prop overwrite will probably happen.\n var ref$1 = findModelConfig(this.$vnode) || { prop: 'value' };\n var prop = ref$1.prop;\n var props = assign({}, this.$attrs, ( obj = {}, obj[prop] = model.value, obj ), ctxToProps(vctx));\n\n return h(options, {\n attrs: this.$attrs,\n props: props,\n on: listeners\n }, normalizeSlots(this.$slots, this.$vnode.context));\n };\n\n return hoc;\n}\n\nvar version = '2.2.15';\n\nObject.keys(Rules).forEach(function (rule) {\n Validator.extend(rule, Rules[rule].validate, assign({}, Rules[rule].options, { paramNames: Rules[rule].paramNames }));\n});\n\n// Merge the english messages.\nValidator.localize({ en: locale });\n\nvar install = VeeValidate$1.install;\n\nVeeValidate$1.version = version;\nVeeValidate$1.mapFields = mapFields;\nVeeValidate$1.ValidationProvider = ValidationProvider;\nVeeValidate$1.ValidationObserver = ValidationObserver;\nVeeValidate$1.withValidation = withValidation;\n\nexport default VeeValidate$1;\nexport { ErrorBag, Rules, ValidationObserver, ValidationProvider, Validator, directive, install, mapFields, mixin, version, withValidation };\n","import AppConfigService from \"../services/configService\";\r\n\r\nclass Util {\r\n abp = window.abp;\r\n\r\n L(value, source, ...argus) {\r\n if (source) {\r\n return window.abp.localization.localize(value, source, argus);\r\n } else {\r\n return window.abp.localization.localize(\r\n value,\r\n AppConfigService.get().localization\r\n .defaultLocalizationSourceName,\r\n argus\r\n );\r\n }\r\n }\r\n\r\n floorDecimals(value, decimals) {\r\n return Number(Math.floor(value + 'e' + decimals) + 'e-' + decimals)\r\n }\r\n\r\n extend(...args) {\r\n let options,\r\n name,\r\n src,\r\n srcType,\r\n copy,\r\n copyIsArray,\r\n clone,\r\n target = args[0] || {},\r\n i = 1,\r\n length = args.length,\r\n deep = false;\r\n if (typeof target === \"boolean\") {\r\n deep = target;\r\n target = args[i] || {};\r\n i++;\r\n }\r\n if (typeof target !== \"object\" && typeof target !== \"function\") {\r\n target = {};\r\n }\r\n if (i === length) {\r\n target = this;\r\n i--;\r\n }\r\n for (; i < length; i++) {\r\n if ((options = args[i]) !== null) {\r\n for (name in options) {\r\n src = target[name];\r\n copy = options[name];\r\n if (target === copy) {\r\n continue;\r\n }\r\n srcType = Array.isArray(src) ? \"array\" : typeof src;\r\n if (\r\n deep &&\r\n copy &&\r\n ((copyIsArray = Array.isArray(copy)) || typeof copy === \"object\")\r\n ) {\r\n if (copyIsArray) {\r\n copyIsArray = false;\r\n clone = src && srcType === \"array\" ? src : [];\r\n } else {\r\n clone = src && srcType === \"object\" ? src : {};\r\n }\r\n target[name] = this.extend(deep, clone, copy);\r\n } else if (copy !== undefined) {\r\n target[name] = copy;\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n getRouterObjByName(routers, name) {\r\n if (!name || !routers || !routers.length) {\r\n return null;\r\n }\r\n // debugger;\r\n let routerObj = null;\r\n for (let item of routers) {\r\n if (item.name === name) {\r\n return item;\r\n }\r\n routerObj = this.getRouterObjByName(item.children, name);\r\n if (routerObj) {\r\n return routerObj;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n toDefaultPage(routers, name, route, next) {\r\n let len = routers.length;\r\n let i = 0;\r\n let notHandle = true;\r\n while (i < len) {\r\n if (\r\n routers[i].name === name &&\r\n routers[i].children &&\r\n routers[i].redirect === undefined\r\n ) {\r\n route.replace({\r\n name: routers[i].children[0].name\r\n });\r\n notHandle = false;\r\n next();\r\n break;\r\n }\r\n i++;\r\n }\r\n if (notHandle) {\r\n next();\r\n }\r\n }\r\n\r\n flattenContainerTreee = (a, b) => {\r\n return a.reduce((p, c) => {\r\n c.childContainers\r\n ? (p.push(c), this.flattenContainerTreee(c.childContainers, p))\r\n : p.push(c);\r\n return p;\r\n }, b);\r\n };\r\n\r\n trimEndChars(str, endStr) {\r\n if (str.length < 1) {\r\n return str;\r\n }\r\n let result = str;\r\n while (result.endsWith(endStr)) {\r\n result = result.substr(0, result.length - endStr.length);\r\n }\r\n return result;\r\n }\r\n trimStartChars(str, startStr) {\r\n if (str.length < 1) {\r\n return str;\r\n }\r\n let result = str;\r\n while (result.startsWith(startStr)) {\r\n result = result.substr(startStr.length);\r\n }\r\n return result;\r\n }\r\n\r\n _radnomString(bits) {\r\n const ran = 1 + Math.random();\r\n return ((ran * 0x10000) | 0).toString(bits).substring(1);\r\n }\r\n\r\n uuid() {\r\n const bits = 16;\r\n const h = this._radnomString.bind(this, bits);\r\n return `${(h(), h())}-${(h(), h())}-${(h(), h())}-${(h(), h())}`;\r\n }\r\n\r\n paramArray(obj, param) {\r\n const exist = obj.hasOwnProperty(param);\r\n if (exist) throw new Error(`${obj.name} does not have a param ${param}`);\r\n return obj.reduce((acc, curr) => {\r\n acc.push(curr[param]);\r\n return acc;\r\n }, []);\r\n }\r\n}\r\n\r\nconst util = new Util();\r\n\r\nexport default util;\r\n","import Ajax from '@/common/utils/ajax'\r\n\r\nexport default {\r\n async addToBasket(payload) {\r\n return Ajax.post('/api/services/app/Basket/AddToBasket', payload)\r\n },\r\n async getBasket() {\r\n return Ajax.get('/api/services/app/Basket/GetBasket')\r\n },\r\n async remove({ itemId }) {\r\n return Ajax.delete('/api/services/app/Basket/Remove?itemId=' + itemId)\r\n },\r\n async updateQuantity(payload) {\r\n return Ajax.put('/api/services/app/Basket/UpdateQuantity', payload)\r\n },\r\n async setQuantity({productId, quantity}) {\r\n return Ajax.put('/api/services/app/Basket/SetQuantity', { basketItemId: productId, quantity })\r\n },\r\n async setPayment({id}) {\r\n return Ajax.put('/api/services/app/Basket/SetPayment', { id })\r\n },\r\n async setShipping({id}) {\r\n return Ajax.put('/api/services/app/Basket/SetShipping', { id })\r\n },\r\n async trashBasket() {\r\n return Ajax.post('/api/services/app/Basket/TrashBasket')\r\n },\r\n async createOrder(orderData){\r\n return Ajax.post('/api/services/app/Basket/CreateOrder', orderData)\r\n }\r\n}\r\n\r\n","import Ajax from '@/common/utils/ajax'\r\n\r\nexport default {\r\n async create(payload) {\r\n return Ajax.post('/api/services/order/Payment/CreateOrUpdate', payload)\r\n },\r\n async update(payload) {\r\n return Ajax.post('/api/services/order/Payment/CreateOrUpdate', payload)\r\n },\r\n async delete(id) {\r\n return Ajax.delete('/api/services/order/Payment/Delete?Id=' + id)\r\n },\r\n async get(id) {\r\n return Ajax.get('/api/services/order/Payment/Get?Id=' + id)\r\n },\r\n async getAll() {\r\n return Ajax.get('/api/services/order/Payment/GetAll')\r\n },\r\n async getAllGrid(payload) {\r\n return Ajax.get('/api/services/order/Payment/GetAllGrid', payload)\r\n }\r\n}\r\n\r\n","import Ajax from '@/common/utils/ajax'\r\n\r\nexport default {\r\n async create(payload) {\r\n return Ajax.post('/api/services/order/Shipping/CreateOrUpdate', payload)\r\n },\r\n async update(payload) {\r\n return Ajax.post('/api/services/order/Shipping/CreateOrUpdate', payload)\r\n },\r\n async delete(id) {\r\n return Ajax.delete('/api/services/order/Shipping/Delete?Id=' + id)\r\n },\r\n async get(id) {\r\n return Ajax.get('/api/services/order/Shipping/Get?Id=' + id)\r\n },\r\n async getAll() {\r\n return Ajax.get('/api/services/order/Shipping/GetAll')\r\n },\r\n async getAllGrid(payload) {\r\n return Ajax.get('/api/services/order/Shipping/GetAllGrid', payload)\r\n }\r\n}\r\n\r\n","import Utils from '@/common/utils/util'\r\nimport BasketApi from '@/common/api/eshop/shopping/basket'\r\nimport PaymentAPI from '@/common/api/eshop/ordering/payments'\r\nimport ShippingAPI from '@/common/api/eshop/ordering/shipping'\r\nimport store from \"@/common/store\";\r\n\r\nexport const state = {\r\n isLoading: true,\r\n paymnetMethods: [],\r\n shippingMethods: [],\r\n couponCode: null,\r\n couponRuleName: null,\r\n id: 0,\r\n isActive: true,\r\n isProductPriceIncludeTax: false,\r\n items: [],\r\n taxAmount: 0,\r\n subTotal: 0,\r\n subTotalWithDiscount: 0,\r\n orderTotalNoTax: 0,\r\n orderTotal: 0,\r\n userId: 0,\r\n lastAddedItem: null,\r\n payment: {\r\n id: null,\r\n price: 0\r\n },\r\n shipping: {\r\n id: null,\r\n price: 0\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n SET_SHIPPING_METHODS(state, shippingMethods) {\r\n state.shippingMethods = shippingMethods\r\n },\r\n SET_PAYMENT_METHODS(state, paymentMethods) {\r\n state.paymnetMethods = paymentMethods\r\n },\r\n SET_SHIPPING(state, shippingMethod) {\r\n state.shipping = shippingMethod\r\n },\r\n SET_PAYMENT(state, paymentMethod) {\r\n state.payment = paymentMethod\r\n },\r\n REMOVE_ITEM(state, itemId) {\r\n state.items = state.items.filter(item => item.id != itemId)\r\n },\r\n SET_LAST_ADDED_ITEM(sate, result) {\r\n sate.lastAddedItem = result;\r\n },\r\n SET_BASKET(state, basket) {\r\n if (basket.hasOwnProperty(\"id\")) {\r\n Object.keys(basket).forEach((value, index) => {\r\n\r\n // if (value == 'payment') {\r\n // state[value] = basket[value].id > 0 ? Object.assign({}, state.paymnetMethods.find(x => x.id == basket[value].id)) : state.payment;\r\n // } else if (value == 'shipping') {\r\n // state[value] = basket[value].id > 0 ? Object.assign({}, state.shippingMethods.find(x => x.id == basket[value].id)) : state.shipping;\r\n // } else {\r\n // \r\n // }\r\n\r\n state[value] = basket[value];\r\n })\r\n }\r\n },\r\n SET_QUANTITY(state, { productId, quantity }) {\r\n var item = state.items.find(x => x.productId == productId);\r\n if (item) {\r\n item.quantity = quantity;\r\n }\r\n }\r\n}\r\n\r\nexport const getters = {\r\n shippingId(state, getters) {\r\n return state.shipping.id\r\n },\r\n paymentId(state, getters) {\r\n return state.payment.id\r\n },\r\n paymentPrice(state, getters) {\r\n return state.payment.price\r\n },\r\n shippingPrice(state, getters) {\r\n return state.shipping.price;\r\n },\r\n getBasketItemsCount(state, getters) {\r\n return state.items\r\n .map((item) => item.quantity)\r\n .reduce((acc, value) => acc + value, 0);\r\n },\r\n getBasketItems(state, getters) {\r\n return state.items;\r\n },\r\n orderSubTotal(state, getters) {\r\n return state.subTotal;\r\n },\r\n orderTotal(state, getters) {\r\n return state.orderTotal;\r\n },\r\n orderTotalNoTax(state, getters) {\r\n return state.orderTotalNoTax;\r\n },\r\n orderTotalTax(state, getters) {\r\n return state.taxAmount;\r\n },\r\n}\r\n\r\nexport const actions = {\r\n async init({ commit, state, dispatch }) {\r\n\r\n await BasketApi.getBasket().then(response => {\r\n commit('SET_BASKET', response.data.result)\r\n });\r\n\r\n state.isLoading = false;\r\n \r\n },\r\n async trashBasket() {\r\n return await BasketApi.trashBasket();\r\n },\r\n async removeItem({ commit }, { itemId }) {\r\n return await BasketApi.remove({ itemId }).then(response => {\r\n commit('REMOVE_ITEM', itemId)\r\n commit('SET_BASKET', response.data.result)\r\n });\r\n },\r\n async setPayment({ commit, state, dispatch }, paymentMethod) {\r\n return await BasketApi.setPayment(paymentMethod).then(response => {\r\n commit('SET_PAYMENT', paymentMethod)\r\n commit('SET_BASKET', response.data.result)\r\n });\r\n },\r\n async setShipping({ commit, state, dispatch }, shippingMethod) {\r\n return await BasketApi.setShipping(shippingMethod).then(response => {\r\n commit('SET_SHIPPING', shippingMethod)\r\n commit('SET_BASKET', response.data.result)\r\n });\r\n },\r\n async setQuantity({ commit, state, dispatch }, { productId, quantity }) {\r\n return await BasketApi.setQuantity({ productId, quantity }).then(response => {\r\n commit('SET_QUANTITY', { productId, quantity })\r\n commit('SET_BASKET', response.data.result)\r\n });\r\n },\r\n async addItemToBasket({ commit, state, dispatch }, { productId, quantity }) {\r\n var response = await BasketApi.addToBasket({ productId, quantity });\r\n commit('SET_LAST_ADDED_ITEM', response.data.result)\r\n await BasketApi.getBasket().then(response => {\r\n commit('SET_BASKET', response.data.result)\r\n });\r\n return response.data.result;\r\n },\r\n async createOrder({ commit, state, dispatch }, orderData) {\r\n return await BasketApi.createOrder(orderData);\r\n },\r\n async loadShippingMethods({ commit, state, dispatch }, force = false) {\r\n if (force == false && state.shippingMethods.length > 0)\r\n return;\r\n\r\n return await ShippingAPI.getAll().then(response => {\r\n commit('SET_SHIPPING_METHODS', response.data.result)\r\n })\r\n },\r\n async loadPaymentMethods({ commit, state, dispatch }, force = false) {\r\n if (force == false && state.paymnetMethods.length > 0)\r\n return;\r\n\r\n return await PaymentAPI.getAll().then(response => {\r\n commit('SET_PAYMENT_METHODS', response.data.result)\r\n })\r\n }\r\n\r\n}\r\n\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import Vue from 'vue';\r\nimport Vuex, { StoreOptions } from 'vuex';\r\nimport CartModule from '../../cart/store/cartModule'\r\n\r\nVue.use(Vuex)\r\n\r\n// called when the store is initialized\r\nconst initPlugin = store => {\r\n store.dispatch('cartModule/init');\r\n};\r\n\r\n\r\nconst store = new Vuex.Store({\r\n state: {\r\n version: '1.0.0',\r\n isLoading: false,\r\n isSideBarMenuOpen: false\r\n },\r\n mutations: {\r\n SHOW_LOADER(state, value) {\r\n state.isLoading = value\r\n },\r\n TOGGLE_SIDEBAR_MENU(state) {\r\n state.isSideBarMenuOpen = !state.isSideBarMenuOpen;\r\n }\r\n },\r\n modules: {\r\n cartModule: CartModule\r\n },\r\n plugins: [initPlugin]\r\n})\r\n\r\nexport default store","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports[\"vue-sidebar-menu\"]=e():t[\"vue-sidebar-menu\"]=e()}(this,(function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"/dist/\",i(i.s=4)}([function(t,e,i){},function(t,e,i){var n=i(2);t.exports=d,t.exports.parse=s,t.exports.compile=function(t,e){return l(s(t,e))},t.exports.tokensToFunction=l,t.exports.tokensToRegExp=c;var o=new RegExp([\"(\\\\\\\\.)\",\"([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))\"].join(\"|\"),\"g\");function s(t,e){for(var i,n=[],s=0,r=0,l=\"\",m=e&&e.delimiter||\"/\";null!=(i=o.exec(t));){var u=i[0],c=i[1],d=i.index;if(l+=t.slice(r,d),r=d+u.length,c)l+=c[1];else{var p=t[r],f=i[2],v=i[3],b=i[4],g=i[5],w=i[6],_=i[7];l&&(n.push(l),l=\"\");var C=null!=f&&null!=p&&p!==f,y=\"+\"===w||\"*\"===w,x=\"?\"===w||\"*\"===w,I=i[2]||m,S=b||g;n.push({name:v||s++,prefix:f||\"\",delimiter:I,optional:x,repeat:y,partial:C,asterisk:!!_,pattern:S?h(S):_?\".*\":\"[^\"+a(I)+\"]+?\"})}}return r0)}},watch:{$route:function(){var t=this;setTimeout((function(){t.item.header||t.item.component||t.initState()}),1)},item:function(t,e){this.emitItemUpdate(t,e)},activeShow:function(){this.itemShow=this.item===this.activeShow}},created:function(){this.item.header||this.item.component||this.initState()},mounted:function(){this.$router||window.addEventListener(\"hashchange\",this.initState)},destroyed:function(){this.$router||window.removeEventListener(\"hashchange\",this.initState)},methods:{isLinkActive:function(t){return this.matchRoute(t)||this.isChildActive(t.child)||this.isAliasActive(t)},isLinkExactActive:function(t){return this.matchExactRoute(t.href)},isChildActive:function(t){var e=this;return!!t&&t.some((function(t){return e.isLinkActive(t)}))},isAliasActive:function(t){if(t.alias){var e=this.$router?this.$route.fullPath:window.location.pathname+window.location.search+window.location.hash;return Array.isArray(t.alias)?t.alias.some((function(t){return o()(t).test(e)})):o()(t.alias).test(e)}return!1},matchRoute:function(t){var e=t.href,i=t.exactPath;if(!e)return!1;if(this.$router){var n=this.$router.resolve(e).route;return i?n.path===this.$route.path:this.matchExactRoute(e)}return i?e===window.location.pathname:this.matchExactRoute(e)},matchExactRoute:function(t){return!!t&&(this.$router?this.$router.resolve(t).route.fullPath===this.$route.fullPath:t===window.location.pathname+window.location.search+window.location.hash)},clickEvent:function(t){this.item.disabled||(this.item.href||t.preventDefault(),this.emitItemClick(t,this.item,this),this.emitMobileItem(t,t.currentTarget.offsetParent),!this.itemHasChild||this.showChild||this.isMobileItem||this.item.href&&!this.exactActive||(this.show=!this.show))},emitMobileItem:function(t,e){var i=this;this.hover||this.isCollapsed&&this.isFirstLevel&&!this.isMobileItem&&(this.$emit(\"unset-mobile-item\",!0),setTimeout((function(){i.mobileItem!==i.item&&i.$emit(\"set-mobile-item\",{item:i.item,itemEl:e}),\"click\"!==t.type||i.itemHasChild||i.$emit(\"unset-mobile-item\",!1)}),0))},initState:function(){this.initActiveState(),this.initShowState()},initActiveState:function(){this.active=this.isLinkActive(this.item),this.exactActive=this.isLinkExactActive(this.item)},initShowState:function(){this.itemHasChild&&!this.showChild&&(this.showOneChild&&this.active&&!this.show||this.active&&!this.show?this.show=!0:this.showOneChild&&!this.active&&this.show&&(this.show=!1))},mouseOverEvent:function(t){this.item.disabled||(t.stopPropagation(),this.itemHover=!0,this.disableHover||this.emitMobileItem(t,t.currentTarget))},mouseOutEvent:function(t){t.stopPropagation(),this.itemHover=!1},expandEnter:function(t){t.style.height=t.scrollHeight+\"px\"},expandAfterEnter:function(t){t.style.height=\"auto\"},expandBeforeLeave:function(t){this.isCollapsed&&this.isFirstLevel?t.style.display=\"none\":t.style.height=t.scrollHeight+\"px\"}},inject:[\"emitActiveShow\",\"emitItemClick\",\"emitItemUpdate\"]},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return t.item.component&&!t.isItemHidden?i(t.item.component,t._b({tag:\"component\"},\"component\",t.item.props,!1)):t.item.header&&!t.isItemHidden?i(\"div\",t._b({staticClass:\"vsm--header\",class:t.item.class},\"div\",t.item.attributes,!1),[t._v(\"\\n \"+t._s(t.item.title)+\"\\n\")]):t.isItemHidden?t._e():i(\"div\",{staticClass:\"vsm--item\",class:[{\"vsm--item_open\":t.show}],on:{mouseover:t.mouseOverEvent,mouseout:t.mouseOutEvent}},[i(\"sidebar-menu-link\",t._b({class:t.itemLinkClass,attrs:{item:t.item},nativeOn:{click:function(e){return t.clickEvent(e)}}},\"sidebar-menu-link\",t.itemLinkAttributes,!1),[t.item.icon&&!t.isMobileItem?i(\"sidebar-menu-icon\",{attrs:{icon:t.item.icon}}):t._e(),t._v(\" \"),i(\"transition\",{attrs:{name:\"fade-animation\",appear:t.isMobileItem}},[t.isCollapsed&&!t.isFirstLevel||!t.isCollapsed||t.isMobileItem?[i(\"span\",{staticClass:\"vsm--title\"},[t._v(t._s(t.item.title))])]:t._e()],2),t._v(\" \"),t.isCollapsed&&!t.isFirstLevel||!t.isCollapsed||t.isMobileItem?[t.item.badge?i(\"sidebar-menu-badge\",{attrs:{badge:t.item.badge}}):t._e(),t._v(\" \"),t.itemHasChild?i(\"div\",{staticClass:\"vsm--arrow\",class:[{\"vsm--arrow_open\":t.show},{\"vsm--arrow_slot\":t.$slots[\"dropdown-icon\"]}]},[t._t(\"dropdown-icon\")],2):t._e()]:t._e()],2),t._v(\" \"),t.itemHasChild?[t.isCollapsed&&!t.isFirstLevel||!t.isCollapsed||t.isMobileItem?[i(\"transition\",{attrs:{appear:t.isMobileItem,name:\"expand\"},on:{enter:t.expandEnter,afterEnter:t.expandAfterEnter,beforeLeave:t.expandBeforeLeave}},[t.show?i(\"div\",{staticClass:\"vsm--dropdown\",class:t.isMobileItem&&\"vsm--dropdown_mobile-item\",style:t.isMobileItem&&t.mobileItemStyle.dropdown},[i(\"div\",{staticClass:\"vsm--list\"},t._l(t.item.child,(function(e,n){return i(\"sidebar-menu-item\",{key:n,attrs:{item:e,level:t.level+1,\"show-child\":t.showChild,rtl:t.rtl,\"is-collapsed\":t.isCollapsed}},[t._t(\"dropdown-icon\",null,{slot:\"dropdown-icon\"})],2)})),1)]):t._e()])]:t._e()]:t._e()],2)}),[],!1,null,null,null);d.options.__file=\"SidebarMenuItem.vue\";var p={name:\"SidebarMenu\",components:{SidebarMenuItem:d.exports},props:{menu:{type:Array,required:!0},collapsed:{type:Boolean,default:!1},width:{type:String,default:\"350px\"},widthCollapsed:{type:String,default:\"50px\"},showChild:{type:Boolean,default:!1},theme:{type:String,default:\"\"},showOneChild:{type:Boolean,default:!1},rtl:{type:Boolean,default:!1},relative:{type:Boolean,default:!1},hideToggle:{type:Boolean,default:!1},disableHover:{type:Boolean,default:!1}},data:function(){return{isCollapsed:this.collapsed,mobileItem:null,mobileItemPos:0,mobileItemHeight:0,mobileItemTimeout:null,activeShow:null,parentHeight:0,parentWidth:0,parentOffsetTop:0,parentOffsetLeft:0}},computed:{sidebarWidth:function(){return this.isCollapsed?this.widthCollapsed:this.width},sidebarClass:function(){return[this.isCollapsed?\"vsm_collapsed\":\"vsm_expanded\",this.theme?\"vsm_\"+this.theme:\"\",this.rtl?\"vsm_rtl\":\"\",this.relative?\"vsm_relative\":\"\"]},mobileItemStyle:function(){return{item:[{position:\"absolute\"},{top:this.mobileItemPos+\"px\"},this.rtl?{right:\"0px\"}:{left:\"0px\"},this.rtl?{\"padding-right\":this.sidebarWidth}:{\"padding-left\":this.sidebarWidth},this.rtl&&{direction:\"rtl\"},{\"z-index\":0},{width:this.parentWidth-this.parentOffsetLeft+\"px\"},{\"max-width\":this.width}],dropdown:[{position:\"absolute\"},{top:this.mobileItemHeight+\"px\"},{width:\"100%\"},{\"max-height\":this.parentHeight-(this.mobileItemPos+this.mobileItemHeight)-this.parentOffsetTop+\"px\"},{\"overflow-y\":\"auto\"}],background:[{position:\"absolute\"},{top:\"0px\"},{left:\"0px\"},{right:\"0px\"},{width:\"100%\"},{height:this.mobileItemHeight+\"px\"},{\"z-index\":-1}]}}},watch:{collapsed:function(t){this.isCollapsed!==this.collapsed&&(this.isCollapsed=t,this.mobileItem=null)}},methods:{onMouseLeave:function(){this.unsetMobileItem(!1,300)},onMouseEnter:function(){this.isCollapsed&&this.mobileItemTimeout&&clearTimeout(this.mobileItemTimeout)},onToggleClick:function(){this.isCollapsed=!this.isCollapsed,this.mobileItem=null,this.$emit(\"toggle-collapse\",this.isCollapsed)},onActiveShow:function(t){this.activeShow=t},onItemClick:function(t,e,i){this.$emit(\"item-click\",t,e,i)},setMobileItem:function(t){var e=t.item,i=t.itemEl;if(this.mobileItem!==e){var n=this.$el.getBoundingClientRect().top,o=i.children[0].getBoundingClientRect(),s=o.top,r=o.height,l=s-n;this.initParentOffsets(),this.mobileItem=e,this.mobileItemPos=l,this.mobileItemHeight=r}},unsetMobileItem:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:800;this.mobileItem&&(this.mobileItemTimeout&&clearTimeout(this.mobileItemTimeout),t?this.mobileItem=null:this.mobileItemTimeout=setTimeout((function(){e.mobileItem=null}),i))},initParentOffsets:function(){var t=this.$el.getBoundingClientRect(),e=t.top,i=t.left,n=t.right,o=this.relative?this.$el.parentElement:document.documentElement;if(this.parentHeight=o.clientHeight,this.parentWidth=o.clientWidth,this.relative){var s=o.getBoundingClientRect(),r=s.top,l=s.left;this.parentOffsetTop=e-(r+o.clientTop),this.parentOffsetLeft=this.rtl?this.parentWidth-n+(l+o.clientLeft):i-(l+o.clientLeft)}else this.parentOffsetTop=e,this.parentOffsetLeft=this.rtl?this.parentWidth-n:i},onItemUpdate:function(t,e){e===this.mobileItem&&(this.mobileItem=t),e===this.activeShow&&(this.activeShow=t)}},provide:function(){return{emitActiveShow:this.onActiveShow,emitItemClick:this.onItemClick,emitItemUpdate:this.onItemUpdate}}},f=(i(3),s(p,(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i(\"div\",{staticClass:\"v-sidebar-menu\",class:t.sidebarClass,style:[{\"max-width\":t.sidebarWidth}],on:{mouseleave:t.onMouseLeave,mouseenter:t.onMouseEnter}},[t._t(\"header\"),t._v(\" \"),i(\"div\",{staticClass:\"vsm--scroll-wrapper\",style:t.isCollapsed&&[t.rtl?{\"margin-left\":\"-17px\"}:{\"margin-right\":\"-17px\"}]},[i(\"div\",{staticClass:\"vsm--list\",style:t.isCollapsed&&{width:t.widthCollapsed}},t._l(t.menu,(function(e,n){return i(\"sidebar-menu-item\",{key:n,attrs:{item:e,\"is-collapsed\":t.isCollapsed,\"active-show\":t.activeShow,\"show-one-child\":t.showOneChild,\"show-child\":t.showChild,rtl:t.rtl,\"mobile-item\":t.mobileItem,\"disable-hover\":t.disableHover},on:{\"set-mobile-item\":t.setMobileItem,\"unset-mobile-item\":t.unsetMobileItem}},[t._t(\"dropdown-icon\",null,{slot:\"dropdown-icon\"})],2)})),1),t._v(\" \"),t.isCollapsed?i(\"div\",{staticClass:\"vsm--mobile-item\",style:t.mobileItemStyle.item},[t.mobileItem?i(\"sidebar-menu-item\",{attrs:{item:t.mobileItem,\"is-mobile-item\":!0,\"mobile-item-style\":t.mobileItemStyle,\"is-collapsed\":t.isCollapsed,\"show-child\":t.showChild,rtl:t.rtl,\"disable-hover\":t.disableHover}},[t._t(\"dropdown-icon\",null,{slot:\"dropdown-icon\"})],2):t._e(),t._v(\" \"),i(\"transition\",{attrs:{name:\"slide-animation\"}},[t.mobileItem?i(\"div\",{staticClass:\"vsm--mobile-bg\",style:t.mobileItemStyle.background}):t._e()])],1):t._e()]),t._v(\" \"),t._t(\"footer\"),t._v(\" \"),t.hideToggle?t._e():i(\"button\",{staticClass:\"vsm--toggle-btn\",class:{\"vsm--toggle-btn_slot\":t.$slots[\"toggle-icon\"]},on:{click:t.onToggleClick}},[t._t(\"toggle-icon\")],2)],2)}),[],!1,null,null,null));f.options.__file=\"SidebarMenu.vue\";var v=f.exports;e.default={install:function(t){t.component(\"sidebar-menu\",v)}}}])}));\n//# sourceMappingURL=vue-sidebar-menu.js.map","/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"x\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"\" ],\n\tcol: [ 2, \"\", \"\" ],\n\ttr: [ 2, \"\", \"\" ],\n\ttd: [ 3, \"\", \"\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\", \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\r\n\r\n\r\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SquareButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SquareButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SquareButton.vue?vue&type=template&id=4d335e1a&scoped=true&\"\nimport script from \"./SquareButton.vue?vue&type=script&lang=js&\"\nexport * from \"./SquareButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SquareButton.vue?vue&type=style&index=0&id=4d335e1a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d335e1a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('4d335e1a')) {\n api.createRecord('4d335e1a', component.options)\n } else {\n api.reload('4d335e1a', component.options)\n }\n module.hot.accept(\"./SquareButton.vue?vue&type=template&id=4d335e1a&scoped=true&\", function () {\n api.rerender('4d335e1a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/common/components/SquareButton.vue\"\nexport default component.exports","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", { staticClass: \"svgicon svgicon--shopping-cart\" }, [\n _c(\n \"svg\",\n {\n attrs: {\n width: _vm.iconSize,\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n \"xml:space\": \"preserve\"\n }\n },\n [\n _c(\"path\", {\n style: \"fill: \" + _vm.color + \";\",\n attrs: {\n d:\n \"M0.5,3H4c0.232,0,0.434,0.16,0.487,0.386L5.809,9H23.5c0.161,0,0.313,0.077,0.406,0.208s0.119,0.299,0.068,0.451l-3,9 C20.906,18.862,20.716,19,20.5,19H8.161l0.235,1H19c1.104,0,2,0.898,2,2c0,1.104-0.896,2-2,2c-1.103,0-2-0.896-2-2 c0-0.365,0.106-0.704,0.278-1H9.723C9.895,21.296,10,21.635,10,22c0,1.104-0.896,2-2,2c-1.103,0-2-0.896-2-2 c0-0.89,0.588-1.637,1.394-1.896L3.604,4H0.5C0.225,4,0,3.776,0,3.5S0.225,3,0.5,3z\"\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _vm.itemsCount > 0\n ? _c(\n \"span\",\n {\n staticClass: \"layoutHeaderButton__badge\",\n style: \"background-color: \" + _vm.colorOfBadge + \";\"\n },\n [_vm._v(_vm._s(_vm.itemsCount))]\n )\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n\r\n \r\n 0\" :style=\"`background-color: ${colorOfBadge};`\" class=\"layoutHeaderButton__badge\">{{ itemsCount }}\r\n \r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CartIcon.vue?vue&type=template&id=a01fb8b8&scoped=true&\"\nimport script from \"./CartIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./CartIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CartIcon.vue?vue&type=style&index=0&id=a01fb8b8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a01fb8b8\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('a01fb8b8')) {\n api.createRecord('a01fb8b8', component.options)\n } else {\n api.reload('a01fb8b8', component.options)\n }\n module.hot.accept(\"./CartIcon.vue?vue&type=template&id=a01fb8b8&scoped=true&\", function () {\n api.rerender('a01fb8b8', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/common/components/CartIcon.vue\"\nexport default component.exports","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"dropdown\" },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.onBlur,\n expression: \"onBlur\"\n }\n ],\n on: { click: _vm.toggleDropdown }\n },\n [_vm._t(\"trigger\", null, { isOpen: _vm.isDropped })],\n 2\n ),\n _vm._v(\" \"),\n _c(\"transition\", { attrs: { name: \"slide-fade\" } }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.isDropped,\n expression: \"isDropped\"\n }\n ],\n staticClass: \"dropdown__content\"\n },\n [\n _vm.data\n ? _c(\n \"ul\",\n _vm._l(_vm.data.data, function(item, index) {\n return _c(\"DropdownItem\", {\n key: index,\n attrs: { item: item, tag: \"li\" }\n })\n }),\n 1\n )\n : _vm._t(\"body\")\n ],\n 2\n )\n ])\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=515cbd5f&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=515cbd5f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"515cbd5f\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('515cbd5f')) {\n api.createRecord('515cbd5f', component.options)\n } else {\n api.reload('515cbd5f', component.options)\n }\n module.hot.accept(\"./index.vue?vue&type=template&id=515cbd5f&scoped=true&\", function () {\n api.rerender('515cbd5f', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/common/components/dropdown/index.vue\"\nexport default component.exports","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.isEmpty\n ? _c(\"div\", { staticClass: \"dropdown--cart p-3\" }, [_vm._m(0)])\n : _c(\"div\", { staticClass: \"dropdown--cart\" }, [\n _c(\n \"ul\",\n { staticClass: \"productList-list\" },\n [\n _vm._l(_vm.basketitems, function(item, index) {\n return _c(\n \"li\",\n { key: index, staticClass: \"productList view-tiny\" },\n [\n _c(\n \"a\",\n {\n staticClass: \"productList-inner\",\n attrs: { href: \"/produkt/\" + item.productSlug }\n },\n [\n _c(\n \"div\",\n { staticClass: \"productList-image thumbnail\" },\n [\n _c(\"img\", {\n attrs: {\n src: item.productPictureUrl,\n alt: item.productName\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"productList-content\" }, [\n _c(\"div\", { staticClass: \"productList-desc\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(item.productName) +\n \"\\n \"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"productList-price\" }, [\n _vm._v(\n \"\\n \" + _vm._s(item.quantity) + \" ks, \"\n ),\n _c(\"strong\", [\n _vm._v(_vm._s(item.productPrice) + \" Kč\")\n ])\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"product-delete-btn\",\n on: {\n click: function($event) {\n return _vm.onBasketItemDelete(item)\n }\n }\n },\n [_c(\"BIcon\", { attrs: { icon: \"x-circle\" } })],\n 1\n )\n ]\n )\n }),\n _vm._v(\" \"),\n _c(\"li\", { staticClass: \"summary\" }, [\n _c(\"span\", { staticClass: \"count-price\" }, [\n _vm._v(\"\\n Celkem \"),\n _c(\"strong\", [_vm._v(_vm._s(_vm.basketItemsCount) + \" ks\")]),\n _vm._v(\" za \"),\n _c(\"strong\", [_vm._v(\" \" + _vm._s(_vm.orderSubTotal) + \" Kč\")])\n ]),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"dropdown--cart__button empty\",\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.trashCart($event)\n }\n }\n },\n [_vm._v(\"Vysypat košík\")]\n ),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"dropdown--cart__button\",\n attrs: { href: \"/cart/\" }\n },\n [_vm._v(\"Objednat\")]\n )\n ])\n ],\n 2\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"span\", [\n _vm._v(\"Váš nákupní \"),\n _c(\"strong\", [_vm._v(\"košík je prázdný.\")])\n ])\n }\n]\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartDropdown.vue?vue&type=script&lang=js&\"","\r\n \r\n \r\n Váš nákupní košík je prázdný.\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ item.productName }}\r\n \r\n \r\n {{ item.quantity }} ks, {{ item.productPrice }} Kč\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Celkem {{ basketItemsCount }} ks za {{ orderSubTotal }} Kč\r\n \r\n Vysypat košík\r\n Objednat\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./CartDropdown.vue?vue&type=template&id=4aee8845&scoped=true&\"\nimport script from \"./CartDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./CartDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CartDropdown.vue?vue&type=style&index=0&id=4aee8845&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4aee8845\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('4aee8845')) {\n api.createRecord('4aee8845', component.options)\n } else {\n api.reload('4aee8845', component.options)\n }\n module.hot.accept(\"./CartDropdown.vue?vue&type=template&id=4aee8845&scoped=true&\", function () {\n api.rerender('4aee8845', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/common/components/cart/CartDropdown.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartMenu.vue?vue&type=script&lang=js&\"","\r\n \r\n \r\n \r\n \r\n \r\n Košík\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Košík\r\n \r\n \r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./CartMenu.vue?vue&type=template&id=5c4addc9&scoped=true&\"\nimport script from \"./CartMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./CartMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CartMenu.vue?vue&type=style&index=0&id=5c4addc9&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c4addc9\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('5c4addc9')) {\n api.createRecord('5c4addc9', component.options)\n } else {\n api.reload('5c4addc9', component.options)\n }\n module.hot.accept(\"./CartMenu.vue?vue&type=template&id=5c4addc9&scoped=true&\", function () {\n api.rerender('5c4addc9', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/layout/components/CartMenu.vue\"\nexport default component.exports","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"b-modal\",\n {\n attrs: {\n id: \"modal-crosseling\",\n size: \"lg\",\n \"hide-footer\": \"\",\n \"hide-header\": \"\",\n centered: \"\",\n title: \"Přidáno do košíku\"\n }\n },\n [\n _vm.lastAddedBasketItem\n ? _c(\"div\", { staticClass: \"box-popup-crosseling\" }, [\n _c(\"div\", { staticClass: \"box-popup-crosseling__header\" }, [\n _c(\n \"svg\",\n {\n staticClass: \"bi mr-3\",\n attrs: { width: \"35px\", height: \"40px\" }\n },\n [\n _c(\"use\", {\n attrs: {\n \"xlink:href\":\n \"/images/icons/bootstrap-icons.svg#check2-circle\"\n }\n })\n ]\n ),\n _vm._v(\"\\n Zboží vloženo do košíku\\n \")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"box-popup-crosseling__content\" }, [\n _c(\"div\", { staticClass: \"box-popup-crosseling__product\" }, [\n _c(\n \"div\",\n {\n staticClass: \"box-popup-crosseling__product__name\",\n attrs: { \"data-attr\": \"Název\" }\n },\n [\n _c(\n \"span\",\n {\n staticClass:\n \"box-popup-crosseling__product__name--in-mobile\"\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.lastAddedBasketItem.quantity) +\n \"x\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"box-popup-crosseling__product__text\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.lastAddedBasketItem.productName) +\n \"\\n \"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"box-popup-crosseling__product__image\",\n attrs: { \"data-attr\": \"Obrázek\" }\n },\n [\n _c(\"img\", {\n staticClass: \"image-product\",\n attrs: {\n src:\n _vm.apiBaseUrl +\n _vm.lastAddedBasketItem.productPictureUrl,\n alt: \"\"\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"box-popup-crosseling__product__unit\",\n attrs: { \"data-attr\": \"Počet\" }\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"box-popup-crosseling__product__name-column\"\n },\n [\n _vm._v(\n \"\\n Počet\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"box-popup-crosseling__product__text\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.lastAddedBasketItem.quantity) +\n \"\\n \"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"box-popup-crosseling__product__price\",\n attrs: { \"data-attr\": \"Cena za kus\" }\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"box-popup-crosseling__product__name-column\"\n },\n [\n _vm._v(\n \"\\n Cena za kus\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"box-popup-crosseling__product__text\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.lastAddedBasketItem.productPrice) +\n \" Kč\\n \"\n )\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass:\n \"box-popup-crosseling__product__price box-popup-crosseling__product__price--main\",\n attrs: { \"data-attr\": \"Cena celkem\" }\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"box-popup-crosseling__product__name-column\"\n },\n [\n _vm._v(\n \"\\n Cena celkem\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"box-popup-crosseling__product__text\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm.lastAddedBasketItem.productPrice *\n _vm.lastAddedBasketItem.quantity\n ) +\n \" Kč\\n \"\n )\n ]\n )\n ]\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"box-popup-crosseling__footer\" }, [\n _c(\"div\", { staticClass: \"box-popup-crosseling__action\" }, [\n _c(\"div\", { staticClass: \"box-actions\" }, [\n _c(\n \"a\",\n {\n staticClass:\n \"box-popup-crosseling__action__btn box-popup-crosseling__action__btn--cancel btn btn-outline btn--icon-left\",\n attrs: { href: \"#\" },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.$root.$emit(\n \"bv::hide::modal\",\n \"modal-crosseling\"\n )\n }\n }\n },\n [\n _vm._v(\n \"\\n Pokračovat v nákupu\\n \"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass:\n \"box-popup-crosseling__action__btn box-popup-crosseling__action__btn--continue btn btn-primary\",\n attrs: { href: \"/cart\" }\n },\n [_vm._v(\"Přejít do košíku\")]\n )\n ])\n ])\n ])\n ])\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrosSellingModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CrosSellingModal.vue?vue&type=script&lang=js&\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n Zboží vloženo do košíku\r\n \r\n\r\n \r\n \r\n \r\n \r\n {{lastAddedBasketItem.quantity}}x\r\n \r\n \r\n {{lastAddedBasketItem.productName}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Počet\r\n \r\n \r\n {{ lastAddedBasketItem.quantity }}\r\n \r\n \r\n \r\n \r\n Cena za kus\r\n \r\n \r\n {{ lastAddedBasketItem.productPrice }} Kč\r\n \r\n \r\n \r\n \r\n Cena celkem\r\n \r\n \r\n {{ lastAddedBasketItem.productPrice * lastAddedBasketItem.quantity }} Kč\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./CrosSellingModal.vue?vue&type=template&id=595b9e1a&\"\nimport script from \"./CrosSellingModal.vue?vue&type=script&lang=js&\"\nexport * from \"./CrosSellingModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CrosSellingModal.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('595b9e1a')) {\n api.createRecord('595b9e1a', component.options)\n } else {\n api.reload('595b9e1a', component.options)\n }\n module.hot.accept(\"./CrosSellingModal.vue?vue&type=template&id=595b9e1a&\", function () {\n api.rerender('595b9e1a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/layout/components/CrosSellingModal.vue\"\nexport default component.exports","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"transition\",\n { attrs: { name: \"slide-fade\" } },\n [\n _vm.isOpen\n ? _c(\"SidebarMenu\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.onBlur,\n expression: \"onBlur\"\n }\n ],\n attrs: {\n menu: _vm.mobileMenu,\n disableHover: true,\n hideToggle: true,\n theme: \"white-theme\"\n }\n })\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _curryN from \"./internal/_curryN.js\";\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curryN =\n/*#__PURE__*/\n_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n\n return _arity(length, _curryN(length, [], fn));\n});\n\nexport default curryN;","import _arity from \"./_arity.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n\n combined[combinedIdx] = result;\n\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n\n combinedIdx += 1;\n }\n\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n * const addFourNumbers = (a, b, c, d) => a + b + c + d;\n *\n * const curriedAddFourNumbers = R.curry(addFourNumbers);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curry =\n/*#__PURE__*/\n_curry1(function curry(fn) {\n return curryN(fn.length, fn);\n});\n\nexport default curry;","import { curry } from \"ramda\";\r\n\r\nfunction hasChildren(node) {\r\n return (typeof node === 'object')\r\n && (typeof node.children !== 'undefined')\r\n && (node.children.length > 0);\r\n}\r\n\r\nconst Tree = {\r\n reduce: curry(function reduce(reducerFn, init, node) {\r\n const acc = reducerFn(init, node);\r\n if (!hasChildren(node)) {\r\n return acc;\r\n }\r\n return node.children.reduce(Tree.reduce(reducerFn), acc);\r\n }),\r\n map: curry(function map(mapFn, node) {\r\n const newNode = mapFn(node);\r\n if (!hasChildren(node)) {\r\n return newNode;\r\n }\r\n newNode.child = node.children.map(Tree.map(mapFn));\r\n return newNode;\r\n }),\r\n};\r\n\r\n\r\nexport default Tree;","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EshopSidebarMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EshopSidebarMenu.vue?vue&type=script&lang=js&\"","\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./EshopSidebarMenu.vue?vue&type=template&id=df36b4ac&\"\nimport script from \"./EshopSidebarMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./EshopSidebarMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EshopSidebarMenu.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('df36b4ac')) {\n api.createRecord('df36b4ac', component.options)\n } else {\n api.reload('df36b4ac', component.options)\n }\n module.hot.accept(\"./EshopSidebarMenu.vue?vue&type=template&id=df36b4ac&\", function () {\n api.rerender('df36b4ac', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/layout/components/EshopSidebarMenu.vue\"\nexport default component.exports","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"transition\", { attrs: { name: \"fade\" } }, [\n _vm.isOpen\n ? _c(\n \"ul\",\n { staticClass: \"cd-accordion-menu\" },\n _vm._l(_vm.mobileMenu, function(menuItem, index) {\n return _c(\"MenuItem\", {\n key: menuItem.title + index,\n attrs: { model: menuItem }\n })\n }),\n 1\n )\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"li\", { class: [_vm.isFolder ? \"folder\" : \"file\"] }, [\n _vm.model.type !== \"delimiter\"\n ? _c(\n \"a\",\n {\n staticClass: \"menu-label\",\n class: { open: _vm.open },\n attrs: { href: _vm.model.href }\n },\n [\n _vm._v(\"\\n \" + _vm._s(_vm.model.title) + \"\\n \"),\n _vm.isFolder\n ? _c(\"span\", {\n staticClass:\n \"cd-accordion-menu--arrow cd-accordion-menu--arrow_default\",\n class: { \"cd-accordion-menu--arrow_open\": _vm.open },\n on: {\n click: function($event) {\n $event.preventDefault()\n $event.stopPropagation()\n return _vm.toggle($event)\n }\n }\n })\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.model.type === \"delimiter\"\n ? _c(\"div\", { staticClass: \"delimiter\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.isFolder\n ? _c(\n \"ul\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.open,\n expression: \"open\"\n }\n ],\n class: { open: _vm.open }\n },\n _vm._l(_vm.model.child, function(model, index) {\n return _c(\"MenuItem\", { key: index, attrs: { model: model } })\n }),\n 1\n )\n : _vm._e()\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n {{ model.title }}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--1!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MenuItem.vue?vue&type=template&id=051a84f6&scoped=true&\"\nimport script from \"./MenuItem.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"051a84f6\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('051a84f6')) {\n api.createRecord('051a84f6', component.options)\n } else {\n api.reload('051a84f6', component.options)\n }\n module.hot.accept(\"./MenuItem.vue?vue&type=template&id=051a84f6&scoped=true&\", function () {\n api.rerender('051a84f6', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/common/components/accordionMenu/MenuItem.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMenu.vue?vue&type=script&lang=js&\"","\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./MobileMenu.vue?vue&type=template&id=7d19d66a&\"\nimport script from \"./MobileMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./MobileMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MobileMenu.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"C:\\\\ProjectsMy\\\\UePP\\\\UePP\\\\src\\\\Hosts\\\\Fibit.UePP.Eshop.Mvc\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7d19d66a')) {\n api.createRecord('7d19d66a', component.options)\n } else {\n api.reload('7d19d66a', component.options)\n }\n module.hot.accept(\"./MobileMenu.vue?vue&type=template&id=7d19d66a&\", function () {\n api.rerender('7d19d66a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"VueApp/layout/components/MobileMenu.vue\"\nexport default component.exports","import CartMenu from \"./components/CartMenu.vue\"\r\nimport CrossSellingModal from \"./components/CrosSellingModal.vue\"\r\nimport EshopSidebarMenu from \"./components/EshopSidebarMenu.vue\"\r\nimport MobileMenu from \"./components/MobileMenu\"\r\nexport default [\r\n {\r\n component: CartMenu,\r\n element: 'CartMenu'\r\n },\r\n {\r\n component: CartMenu,\r\n element: 'CartMenuMobile'\r\n },\r\n {\r\n component: CrossSellingModal,\r\n element: 'CrosSellingModal'\r\n }\r\n ,\r\n {\r\n component: EshopSidebarMenu,\r\n element: 'EshopSidebarMenu'\r\n }\r\n ,\r\n {\r\n component: MobileMenu,\r\n element: 'MobileMenu'\r\n }\r\n];","import $ from \"jquery\";\r\n\r\nconst scrollBtn = document.querySelector(\".totop__button\");\r\n\r\nconst btnVisibility = () => {\r\n if (window.scrollY > 400) {\r\n scrollBtn.style.visibility = \"visible\";\r\n } else {\r\n scrollBtn.style.visibility = \"hidden\";\r\n }\r\n};\r\n\r\nscrollBtn.addEventListener(\"click\", () => {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\"\r\n });\r\n});\r\n\r\ndocument.addEventListener(\"scroll\", () => {\r\n btnVisibility();\r\n});\r\n\r\n(function ($) {\r\n \"use strict\";\r\n\r\n let passiveSupported = false;\r\n\r\n try {\r\n const options = Object.defineProperty({}, 'passive', {\r\n get: function () {\r\n passiveSupported = true;\r\n }\r\n });\r\n\r\n window.addEventListener('test', null, options);\r\n } catch (err) { }\r\n\r\n let DIRECTION = null;\r\n\r\n function direction() {\r\n if (DIRECTION === null) {\r\n DIRECTION = getComputedStyle(document.body).direction;\r\n }\r\n\r\n return DIRECTION;\r\n }\r\n\r\n function isRTL() {\r\n return direction() === 'rtl';\r\n }\r\n\r\n $(function () {\r\n /*\r\n // Touch Click\r\n */\r\n function touchClick(elements, callback) {\r\n elements = $(elements);\r\n\r\n let touchStartData = null;\r\n\r\n const onTouchstart = function (event) {\r\n const originalEvent = event.originalEvent;\r\n\r\n if (originalEvent.touches.length !== 1) {\r\n touchStartData = null;\r\n return;\r\n }\r\n\r\n touchStartData = {\r\n target: originalEvent.currentTarget,\r\n touch: originalEvent.changedTouches[0],\r\n timestamp: (new Date).getTime(),\r\n };\r\n };\r\n const onTouchEnd = function (event) {\r\n const originalEvent = event.originalEvent;\r\n\r\n if (\r\n !touchStartData ||\r\n originalEvent.changedTouches.length !== 1 ||\r\n originalEvent.changedTouches[0].identity !== touchStartData.touch.identity\r\n ) {\r\n return;\r\n }\r\n\r\n const timestamp = (new Date).getTime();\r\n const touch = originalEvent.changedTouches[0];\r\n const distance = Math.abs(\r\n Math.sqrt(\r\n Math.pow(touchStartData.touch.screenX - touch.screenX, 2) +\r\n Math.pow(touchStartData.touch.screenY - touch.screenY, 2)\r\n )\r\n );\r\n\r\n if (touchStartData.target === originalEvent.currentTarget && timestamp - touchStartData.timestamp < 500 && distance < 10) {\r\n callback(event);\r\n }\r\n };\r\n\r\n elements.on('touchstart', onTouchstart);\r\n elements.on('touchend', onTouchEnd);\r\n\r\n return function () {\r\n elements.off('touchstart', onTouchstart);\r\n elements.off('touchend', onTouchEnd);\r\n };\r\n }\r\n\r\n // call this in touchstart/touchend event handler\r\n function preventTouchClick() {\r\n const onClick = function (event) {\r\n event.preventDefault();\r\n\r\n document.removeEventListener('click', onClick);\r\n };\r\n document.addEventListener('click', onClick);\r\n setTimeout(function () {\r\n document.removeEventListener('click', onClick);\r\n }, 100);\r\n }\r\n\r\n\r\n /*\r\n // topbar dropdown\r\n */\r\n $('.topbar-dropdown__btn').on('click', function () {\r\n $(this).closest('.topbar-dropdown').toggleClass('topbar-dropdown--opened');\r\n });\r\n\r\n document.addEventListener('click', function (event) {\r\n $('.topbar-dropdown')\r\n .not($(event.target).closest('.topbar-dropdown'))\r\n .removeClass('topbar-dropdown--opened');\r\n }, true);\r\n\r\n touchClick(document, function (event) {\r\n $('.topbar-dropdown')\r\n .not($(event.target).closest('.topbar-dropdown'))\r\n .removeClass('topbar-dropdown--opened');\r\n });\r\n\r\n\r\n\r\n\r\n /*\r\n // search suggestions\r\n */\r\n $('.search').each(function (index, element) {\r\n let xhr;\r\n const search = $(element);\r\n const categories = search.find('.search__categories');\r\n const input = search.find('.search__input');\r\n const suggestions = search.find('.search__suggestions');\r\n const outsideClick = function (event) {\r\n // If the inner element still has focus, ignore the click.\r\n if ($(document.activeElement).closest('.search').is(search)) {\r\n return;\r\n }\r\n\r\n search\r\n .not($(event.target).closest('.search'))\r\n .removeClass('search--suggestions-open');\r\n };\r\n const setSuggestion = function (html) {\r\n if (html) {\r\n suggestions.html(html);\r\n }\r\n search.toggleClass('search--has-suggestions', !!html);\r\n };\r\n\r\n const debounce = function debounce(func, wait, immediate) {\r\n let timeout;\r\n return function() {\r\n let context = this, args = arguments;\r\n let later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n let callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n }\r\n\r\n search.on('focusout', function () {\r\n setTimeout(function () {\r\n if (document.activeElement === document.body) {\r\n return;\r\n }\r\n\r\n // Close suggestions if the focus received an external element.\r\n search\r\n .not($(document.activeElement).closest('.search'))\r\n .removeClass('search--suggestions-open');\r\n }, 10);\r\n });\r\n input.on('input', debounce(function () {\r\n if (xhr) {\r\n // Abort previous AJAX request.\r\n xhr.abort();\r\n }\r\n\r\n if (input.val()) {\r\n xhr = $.ajax({\r\n url: '/catalog/suggestions?query='+ input.val(),\r\n success: function (data) {\r\n xhr = null;\r\n setSuggestion(data);\r\n }\r\n });\r\n \r\n } else {\r\n // Remove suggestions.\r\n setSuggestion('');\r\n }\r\n }, 500));\r\n input.on('focus', function () {\r\n search.addClass('search--suggestions-open');\r\n });\r\n categories.on('focus', function () {\r\n search.removeClass('search--suggestions-open');\r\n });\r\n\r\n document.addEventListener('click', outsideClick, true);\r\n touchClick(document, outsideClick);\r\n\r\n if (input.is(document.activeElement)) {\r\n input.trigger('focus').trigger('input');\r\n }\r\n });\r\n\r\n\r\n /*\r\n // mobile search\r\n */\r\n const mobileSearch = $('.mobile-header__search');\r\n\r\n if (mobileSearch.length) {\r\n $('.indicator--mobile-search .indicator__button').on('click', function () {\r\n if (mobileSearch.is('.mobile-header__search--open')) {\r\n mobileSearch.removeClass('mobile-header__search--open');\r\n } else {\r\n mobileSearch.addClass('mobile-header__search--open');\r\n mobileSearch.find('input')[0].focus();\r\n }\r\n });\r\n\r\n mobileSearch.find('.search__button--type--close').on('click', function () {\r\n mobileSearch.removeClass('mobile-header__search--open');\r\n });\r\n\r\n document.addEventListener('click', function (event) {\r\n if (!$(event.target).closest('.indicator--mobile-search, .mobile-header__search').length) {\r\n mobileSearch.removeClass('mobile-header__search--open');\r\n }\r\n }, true);\r\n }\r\n\r\n\r\n /*\r\n // nav-links\r\n */\r\n function CNavLinks(element) {\r\n this.element = $(element);\r\n this.items = this.element.find('.nav-links__item');\r\n this.currentItem = null;\r\n\r\n this.element.data('navLinksInstance', this);\r\n\r\n this.onMouseenter = this.onMouseenter.bind(this);\r\n this.onMouseleave = this.onMouseleave.bind(this);\r\n this.onGlobalTouchClick = this.onGlobalTouchClick.bind(this);\r\n this.onTouchClick = this.onTouchClick.bind(this);\r\n\r\n // add event listeners\r\n this.items.on('mouseenter', this.onMouseenter);\r\n this.items.on('mouseleave', this.onMouseleave);\r\n touchClick(document, this.onGlobalTouchClick);\r\n touchClick(this.items, this.onTouchClick);\r\n }\r\n CNavLinks.prototype.onGlobalTouchClick = function (event) {\r\n // check that the click was outside the element\r\n if (this.element.not($(event.target).closest('.nav-links')).length) {\r\n this.unsetCurrentItem();\r\n }\r\n };\r\n CNavLinks.prototype.onTouchClick = function (event) {\r\n if (event.cancelable) {\r\n const targetItem = $(event.currentTarget);\r\n\r\n if (this.currentItem && this.currentItem.is(targetItem)) {\r\n return;\r\n }\r\n\r\n if (this.hasSubmenu(targetItem)) {\r\n event.preventDefault();\r\n\r\n if (this.currentItem) {\r\n this.currentItem.trigger('mouseleave');\r\n }\r\n\r\n targetItem.trigger('mouseenter');\r\n }\r\n }\r\n };\r\n CNavLinks.prototype.onMouseenter = function (event) {\r\n this.setCurrentItem($(event.currentTarget));\r\n };\r\n CNavLinks.prototype.onMouseleave = function () {\r\n this.unsetCurrentItem();\r\n };\r\n CNavLinks.prototype.setCurrentItem = function (item) {\r\n this.currentItem = item;\r\n this.currentItem.addClass('nav-links__item--hover');\r\n\r\n this.openSubmenu(this.currentItem);\r\n };\r\n CNavLinks.prototype.unsetCurrentItem = function () {\r\n if (this.currentItem) {\r\n this.closeSubmenu(this.currentItem);\r\n\r\n this.currentItem.removeClass('nav-links__item--hover');\r\n this.currentItem = null;\r\n }\r\n };\r\n CNavLinks.prototype.hasSubmenu = function (item) {\r\n return !!item.children('.nav-links__submenu').length;\r\n };\r\n CNavLinks.prototype.openSubmenu = function (item) {\r\n const submenu = item.children('.nav-links__submenu');\r\n\r\n if (!submenu.length) {\r\n return;\r\n }\r\n\r\n submenu.addClass('nav-links__submenu--display');\r\n\r\n // calculate max height\r\n const submenuTop = submenu.offset().top - $(window).scrollTop();\r\n const viewportHeight = window.innerHeight;\r\n const paddingBottom = 20;\r\n\r\n submenu.css('maxHeight', (viewportHeight - submenuTop - paddingBottom) + 'px');\r\n submenu.addClass('nav-links__submenu--open');\r\n\r\n // megamenu position\r\n if (submenu.hasClass('nav-links__submenu--type--megamenu')) {\r\n const container = submenu.offsetParent();\r\n const containerWidth = container.width();\r\n const megamenuWidth = submenu.width();\r\n\r\n if (isRTL()) {\r\n const itemPosition = containerWidth - (item.position().left + item.width());\r\n const megamenuPosition = Math.round(Math.min(itemPosition, containerWidth - megamenuWidth));\r\n\r\n submenu.css('right', megamenuPosition + 'px');\r\n } else {\r\n const itemPosition = item.position().left;\r\n const megamenuPosition = Math.round(Math.min(itemPosition, containerWidth - megamenuWidth));\r\n\r\n submenu.css('left', megamenuPosition + 'px');\r\n }\r\n }\r\n };\r\n CNavLinks.prototype.closeSubmenu = function (item) {\r\n const submenu = item.children('.nav-links__submenu');\r\n\r\n if (!submenu.length) {\r\n return;\r\n }\r\n\r\n submenu.removeClass('nav-links__submenu--display');\r\n submenu.removeClass('nav-links__submenu--open');\r\n submenu.css('maxHeight', '');\r\n\r\n if (submenu && submenu.is('.nav-links__submenu--type--menu')) {\r\n const submenuInstance = submenu.find('> .menu').data('menuInstance');\r\n\r\n if (submenuInstance) {\r\n submenuInstance.unsetCurrentItem();\r\n }\r\n }\r\n };\r\n\r\n $('.nav-links').each(function () {\r\n new CNavLinks(this);\r\n });\r\n\r\n\r\n /*\r\n // menu\r\n */\r\n function CMenu(element) {\r\n this.element = $(element);\r\n this.container = this.element.find('> .menu__submenus-container');\r\n this.items = this.element.find('> .menu__list > .menu__item');\r\n this.currentItem = null;\r\n\r\n this.element.data('menuInstance', this);\r\n\r\n this.onMouseenter = this.onMouseenter.bind(this);\r\n this.onMouseleave = this.onMouseleave.bind(this);\r\n this.onTouchClick = this.onTouchClick.bind(this);\r\n\r\n // add event listeners\r\n this.items.on('mouseenter', this.onMouseenter);\r\n this.element.on('mouseleave', this.onMouseleave);\r\n touchClick(this.items, this.onTouchClick);\r\n }\r\n CMenu.prototype.onMouseenter = function (event) {\r\n const targetItem = $(event.currentTarget);\r\n\r\n if (this.currentItem && targetItem.is(this.currentItem)) {\r\n return;\r\n }\r\n\r\n this.unsetCurrentItem();\r\n this.setCurrentItem(targetItem);\r\n };\r\n CMenu.prototype.onMouseleave = function () {\r\n this.unsetCurrentItem();\r\n };\r\n CMenu.prototype.onTouchClick = function (event) {\r\n const targetItem = $(event.currentTarget);\r\n\r\n if (this.currentItem && this.currentItem.is(targetItem)) {\r\n return;\r\n }\r\n\r\n if (this.hasSubmenu(targetItem)) {\r\n preventTouchClick();\r\n\r\n this.unsetCurrentItem();\r\n this.setCurrentItem(targetItem);\r\n }\r\n };\r\n CMenu.prototype.setCurrentItem = function (item) {\r\n this.currentItem = item;\r\n this.currentItem.addClass('menu__item--hover');\r\n\r\n this.openSubmenu(this.currentItem);\r\n };\r\n CMenu.prototype.unsetCurrentItem = function () {\r\n if (this.currentItem) {\r\n this.closeSubmenu(this.currentItem);\r\n\r\n this.currentItem.removeClass('menu__item--hover');\r\n this.currentItem = null;\r\n }\r\n };\r\n CMenu.prototype.getSubmenu = function (item) {\r\n let submenu = item.find('> .menu__submenu');\r\n\r\n if (submenu.length) {\r\n this.container.append(submenu);\r\n item.data('submenu', submenu);\r\n }\r\n\r\n return item.data('submenu');\r\n };\r\n CMenu.prototype.hasSubmenu = function (item) {\r\n return !!this.getSubmenu(item);\r\n };\r\n CMenu.prototype.openSubmenu = function (item) {\r\n const submenu = this.getSubmenu(item);\r\n\r\n if (!submenu) {\r\n return;\r\n }\r\n\r\n submenu.addClass('menu__submenu--display');\r\n\r\n // calc submenu position\r\n const menuTop = this.element.offset().top - $(window).scrollTop();\r\n const itemTop = item.find('> .menu__item-submenu-offset').offset().top - $(window).scrollTop();\r\n const viewportHeight = window.innerHeight;\r\n const paddingY = 20;\r\n const maxHeight = viewportHeight - paddingY * 2;\r\n\r\n submenu.css('maxHeight', maxHeight + 'px');\r\n\r\n const submenuHeight = submenu.height();\r\n const position = Math.min(\r\n Math.max(\r\n itemTop - menuTop,\r\n 0\r\n ),\r\n (viewportHeight - paddingY - submenuHeight) - menuTop\r\n );\r\n\r\n submenu.css('top', position + 'px');\r\n submenu.addClass('menu__submenu--open');\r\n\r\n if (isRTL()) {\r\n const submenuLeft = this.element.offset().left - submenu.width();\r\n\r\n if (submenuLeft < 0) {\r\n submenu.addClass('menu__submenu--reverse');\r\n }\r\n } else {\r\n const submenuRight = this.element.offset().left + this.element.width() + submenu.width();\r\n\r\n if (submenuRight > $('body').innerWidth()) {\r\n submenu.addClass('menu__submenu--reverse');\r\n }\r\n }\r\n };\r\n CMenu.prototype.closeSubmenu = function (item) {\r\n const submenu = this.getSubmenu(item);\r\n\r\n if (submenu) {\r\n submenu.removeClass('menu__submenu--display');\r\n submenu.removeClass('menu__submenu--open');\r\n submenu.removeClass('menu__submenu--reverse');\r\n\r\n const submenuInstance = submenu.find('> .menu').data('menuInstance');\r\n\r\n if (submenuInstance) {\r\n submenuInstance.unsetCurrentItem();\r\n }\r\n }\r\n };\r\n $('.menu').each(function () {\r\n new CMenu($(this));\r\n });\r\n\r\n\r\n /*\r\n // indicator (dropcart, drop search)\r\n */\r\n function CIndicator(element) {\r\n this.element = $(element);\r\n this.dropdown = this.element.find('.indicator__dropdown');\r\n this.button = this.element.find('.indicator__button');\r\n this.trigger = null;\r\n\r\n this.element.data('indicatorInstance', this);\r\n\r\n if (this.element.hasClass('indicator--trigger--hover')) {\r\n this.trigger = 'hover';\r\n } else if (this.element.hasClass('indicator--trigger--click')) {\r\n this.trigger = 'click';\r\n }\r\n\r\n this.onMouseenter = this.onMouseenter.bind(this);\r\n this.onMouseleave = this.onMouseleave.bind(this);\r\n this.onTransitionend = this.onTransitionend.bind(this);\r\n this.onClick = this.onClick.bind(this);\r\n this.onGlobalClick = this.onGlobalClick.bind(this);\r\n\r\n // add event listeners\r\n this.element.on('mouseenter', this.onMouseenter);\r\n this.element.on('mouseleave', this.onMouseleave);\r\n this.dropdown.on('transitionend', this.onTransitionend);\r\n this.button.on('click', this.onClick);\r\n $(document).on('click', this.onGlobalClick);\r\n touchClick(document, this.onGlobalClick);\r\n\r\n this.element.find('.search__input').on('keydown', function (event) {\r\n const ESC_KEY_CODE = 27;\r\n\r\n if (event.which === ESC_KEY_CODE) {\r\n const instance = $(this).closest('.indicator').data('indicatorInstance');\r\n\r\n if (instance) {\r\n instance.close();\r\n }\r\n }\r\n });\r\n }\r\n CIndicator.prototype.toggle = function () {\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n CIndicator.prototype.onMouseenter = function () {\r\n this.element.addClass('indicator--hover');\r\n\r\n if (this.trigger === 'hover') {\r\n this.open();\r\n }\r\n };\r\n CIndicator.prototype.onMouseleave = function () {\r\n this.element.removeClass('indicator--hover');\r\n\r\n if (this.trigger === 'hover') {\r\n this.close();\r\n }\r\n };\r\n CIndicator.prototype.onTransitionend = function (event) {\r\n if (\r\n this.dropdown.is(event.target) &&\r\n event.originalEvent.propertyName === 'visibility' &&\r\n !this.isOpen()\r\n ) {\r\n this.element.removeClass('indicator--display');\r\n }\r\n };\r\n CIndicator.prototype.onClick = function (event) {\r\n if (this.trigger !== 'click') {\r\n return;\r\n }\r\n\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n\r\n this.toggle();\r\n };\r\n CIndicator.prototype.onGlobalClick = function (event) {\r\n // check that the click was outside the element\r\n if (this.element.not($(event.target).closest('.indicator')).length) {\r\n this.close();\r\n }\r\n };\r\n CIndicator.prototype.isOpen = function () {\r\n return this.element.is('.indicator--open');\r\n };\r\n CIndicator.prototype.open = function () {\r\n this.element.addClass('indicator--display');\r\n this.element.width(); // force reflow\r\n this.element.addClass('indicator--open');\r\n this.element.find('.search__input').focus();\r\n\r\n const dropdownTop = this.dropdown.offset().top - $(window).scrollTop();\r\n const viewportHeight = window.innerHeight;\r\n const paddingBottom = 20;\r\n\r\n this.dropdown.css('maxHeight', (viewportHeight - dropdownTop - paddingBottom) + 'px');\r\n };\r\n CIndicator.prototype.close = function () {\r\n this.element.removeClass('indicator--open');\r\n };\r\n CIndicator.prototype.closeImmediately = function () {\r\n this.element.removeClass('indicator--open');\r\n this.element.removeClass('indicator--display');\r\n };\r\n\r\n $('.indicator').each(function () {\r\n new CIndicator(this);\r\n });\r\n\r\n\r\n /*\r\n // departments, sticky header\r\n */\r\n $(function () {\r\n /*\r\n // departments\r\n */\r\n const CDepartments = function (element) {\r\n const self = this;\r\n\r\n element.data('departmentsInstance', self);\r\n\r\n this.element = element;\r\n this.container = this.element.find('.departments__submenus-container');\r\n this.linksWrapper = this.element.find('.departments__links-wrapper');\r\n this.body = this.element.find('.departments__body');\r\n this.button = this.element.find('.departments__button');\r\n this.items = this.element.find('.departments__item');\r\n this.mode = this.element.is('.departments--fixed') ? 'fixed' : 'normal';\r\n this.fixedBy = $(this.element.data('departments-fixed-by'));\r\n this.fixedHeight = 0;\r\n this.currentItem = null;\r\n\r\n if (this.mode === 'fixed' && this.fixedBy.length) {\r\n this.fixedHeight = this.fixedBy.offset().top - this.body.offset().top + this.fixedBy.outerHeight();\r\n this.body.css('height', this.fixedHeight + 'px');\r\n }\r\n\r\n this.linksWrapper.on('transitionend', function (event) {\r\n if (event.originalEvent.propertyName === 'height') {\r\n $(this).css('height', '');\r\n $(this).closest('.departments').removeClass('departments--transition');\r\n }\r\n });\r\n\r\n this.onButtonClick = this.onButtonClick.bind(this);\r\n this.onGlobalClick = this.onGlobalClick.bind(this);\r\n this.onMouseenter = this.onMouseenter.bind(this);\r\n this.onMouseleave = this.onMouseleave.bind(this);\r\n this.onTouchClick = this.onTouchClick.bind(this);\r\n\r\n // add event listeners\r\n this.button.on('click', this.onButtonClick);\r\n document.addEventListener('click', this.onGlobalClick, true);\r\n touchClick(document, this.onGlobalClick);\r\n this.items.on('mouseenter', this.onMouseenter);\r\n this.linksWrapper.on('mouseleave', this.onMouseleave);\r\n touchClick(this.items, this.onTouchClick);\r\n\r\n };\r\n CDepartments.prototype.onButtonClick = function (event) {\r\n event.preventDefault();\r\n\r\n if (this.element.is('.departments--open')) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n CDepartments.prototype.onGlobalClick = function (event) {\r\n if (this.element.not($(event.target).closest('.departments')).length) {\r\n if (this.element.is('.departments--open')) {\r\n this.close();\r\n }\r\n }\r\n };\r\n CDepartments.prototype.setMode = function (mode) {\r\n this.mode = mode;\r\n\r\n if (this.mode === 'normal') {\r\n this.element.removeClass('departments--fixed');\r\n this.element.removeClass('departments--open');\r\n this.body.css('height', 'auto');\r\n }\r\n if (this.mode === 'fixed') {\r\n this.element.addClass('departments--fixed');\r\n this.element.addClass('departments--open');\r\n this.body.css('height', this.fixedHeight + 'px');\r\n $('.departments__links-wrapper', this.element).css('maxHeight', '');\r\n }\r\n };\r\n CDepartments.prototype.close = function () {\r\n if (this.element.is('.departments--fixed')) {\r\n return;\r\n }\r\n\r\n const content = this.element.find('.departments__links-wrapper');\r\n const startHeight = content.height();\r\n\r\n content.css('height', startHeight + 'px');\r\n this.element\r\n .addClass('departments--transition')\r\n .removeClass('departments--open');\r\n\r\n content.height(); // force reflow\r\n content.css('height', '');\r\n content.css('maxHeight', '');\r\n\r\n this.unsetCurrentItem();\r\n };\r\n CDepartments.prototype.closeImmediately = function () {\r\n if (this.element.is('.departments--fixed')) {\r\n return;\r\n }\r\n\r\n const content = this.element.find('.departments__links-wrapper');\r\n\r\n this.element.removeClass('departments--open');\r\n\r\n content.css('height', '');\r\n content.css('maxHeight', '');\r\n\r\n this.unsetCurrentItem();\r\n };\r\n CDepartments.prototype.open = function () {\r\n const content = this.element.find('.departments__links-wrapper');\r\n const startHeight = content.height();\r\n\r\n this.element\r\n .addClass('departments--transition')\r\n .addClass('departments--open');\r\n\r\n const documentHeight = document.documentElement.clientHeight;\r\n const paddingBottom = 20;\r\n const contentRect = content[0].getBoundingClientRect();\r\n const endHeight = Math.min(content.height(), documentHeight - paddingBottom - contentRect.top);\r\n\r\n content.css('height', startHeight + 'px');\r\n content.height(); // force reflow\r\n content.css('maxHeight', endHeight + 'px');\r\n content.css('height', endHeight + 'px');\r\n };\r\n CDepartments.prototype.onMouseenter = function (event) {\r\n const targetItem = $(event.currentTarget);\r\n\r\n if (this.currentItem && targetItem.is(this.currentItem)) {\r\n return;\r\n }\r\n\r\n this.unsetCurrentItem();\r\n this.setCurrentItem(targetItem);\r\n };\r\n CDepartments.prototype.onMouseleave = function () {\r\n this.unsetCurrentItem();\r\n };\r\n CDepartments.prototype.onTouchClick = function (event) {\r\n const targetItem = $(event.currentTarget);\r\n\r\n if (this.currentItem && this.currentItem.is(targetItem)) {\r\n return;\r\n }\r\n\r\n if (this.hasSubmenu(targetItem)) {\r\n preventTouchClick();\r\n\r\n this.unsetCurrentItem();\r\n this.setCurrentItem(targetItem);\r\n }\r\n };\r\n CDepartments.prototype.setCurrentItem = function (item) {\r\n this.unsetCurrentItem();\r\n\r\n this.currentItem = item;\r\n this.currentItem.addClass('departments__item--hover');\r\n\r\n this.openSubmenu(this.currentItem);\r\n };\r\n CDepartments.prototype.unsetCurrentItem = function () {\r\n if (this.currentItem) {\r\n this.closeSubmenu(this.currentItem);\r\n\r\n this.currentItem.removeClass('departments__item--hover');\r\n this.currentItem = null;\r\n }\r\n };\r\n CDepartments.prototype.getSubmenu = function (item) {\r\n let submenu = item.find('> .departments__submenu');\r\n\r\n if (submenu.length) {\r\n this.container.append(submenu);\r\n\r\n item.data('submenu', submenu);\r\n }\r\n\r\n return item.data('submenu');\r\n };\r\n CDepartments.prototype.hasSubmenu = function (item) {\r\n return !!this.getSubmenu(item);\r\n };\r\n CDepartments.prototype.openSubmenu = function (item) {\r\n const submenu = this.getSubmenu(item);\r\n\r\n if (submenu) {\r\n submenu.addClass('departments__submenu--open');\r\n\r\n const documentHeight = document.documentElement.clientHeight;\r\n const paddingBottom = 20;\r\n\r\n if (submenu.hasClass('departments__submenu--type--megamenu')) {\r\n const submenuTop = submenu.offset().top - $(window).scrollTop();\r\n submenu.css('maxHeight', (documentHeight - submenuTop - paddingBottom) + 'px');\r\n }\r\n\r\n if (submenu.hasClass('departments__submenu--type--menu')) {\r\n submenu.css('maxHeight', (documentHeight - paddingBottom - Math.min(\r\n paddingBottom,\r\n this.body.offset().top - $(window).scrollTop()\r\n )) + 'px');\r\n\r\n const submenuHeight = submenu.height();\r\n const itemTop = this.currentItem.offset().top - $(window).scrollTop();\r\n const containerTop = this.container.offset().top - $(window).scrollTop();\r\n\r\n submenu.css('top', (Math.min(itemTop, documentHeight - paddingBottom - submenuHeight) - containerTop) + 'px');\r\n }\r\n }\r\n };\r\n CDepartments.prototype.closeSubmenu = function (item) {\r\n const submenu = item.data('submenu');\r\n\r\n if (submenu) {\r\n submenu.removeClass('departments__submenu--open');\r\n\r\n if (submenu.is('.departments__submenu--type--menu')) {\r\n submenu.find('> .menu').data('menuInstance').unsetCurrentItem();\r\n }\r\n }\r\n };\r\n\r\n const departmentsElement = $('.departments');\r\n const departments = departmentsElement.length ? new CDepartments(departmentsElement) : null;\r\n\r\n\r\n /*\r\n // sticky nav-panel\r\n */\r\n const nav = $('.nav-panel--sticky');\r\n\r\n if (nav.length) {\r\n const mode = nav.data('sticky-mode') ? nav.data('sticky-mode') : 'alwaysOnTop'; // one of [alwaysOnTop, pullToShow]\r\n const media = matchMedia('(min-width: 1200px)');\r\n const departmentsMode = departments ? departments.mode : null;\r\n\r\n let stuck = false;\r\n let shown = false;\r\n let scrollDistance = 0;\r\n let scrollPosition = 0;\r\n let positionWhenToFix = function () { return 0; };\r\n let positionWhenToStick = function () { return 0; };\r\n\r\n const closeAllSubmenus = function () {\r\n if (departments) {\r\n departments.closeImmediately();\r\n }\r\n $('.nav-links').data('navLinksInstance').unsetCurrentItem();\r\n $('.indicator').each(function () {\r\n $(this).data('indicatorInstance').closeImmediately();\r\n });\r\n };\r\n\r\n const show = function () {\r\n nav.addClass('nav-panel--show');\r\n shown = true;\r\n $(document).trigger('stroyka.header.sticky.show');\r\n };\r\n const hide = function () {\r\n nav.removeClass('nav-panel--show');\r\n shown = false;\r\n $(document).trigger('stroyka.header.sticky.hide');\r\n };\r\n\r\n const onScroll = function () {\r\n const scrollDelta = window.pageYOffset - scrollPosition;\r\n\r\n if ((scrollDelta < 0) !== (scrollDistance < 0)) {\r\n scrollDistance = 0;\r\n }\r\n\r\n scrollPosition = window.pageYOffset;\r\n scrollDistance += scrollDelta;\r\n\r\n if (window.pageYOffset > positionWhenToStick()) {\r\n if (!stuck) {\r\n nav.addClass('nav-panel--stuck');\r\n nav.css('transitionDuration', '0s');\r\n\r\n if (mode === 'alwaysOnTop') {\r\n show();\r\n }\r\n\r\n nav.height(); // force reflow\r\n nav.css('transitionDuration', '');\r\n stuck = true;\r\n\r\n if (departments && departmentsMode === 'fixed') {\r\n departments.setMode('normal');\r\n }\r\n\r\n closeAllSubmenus();\r\n }\r\n\r\n if (mode === 'pullToShow') {\r\n const distanceToShow = 10; // in pixels\r\n const distanceToHide = 25; // in pixels\r\n\r\n if (scrollDistance < -distanceToShow && !nav.hasClass('nav-panel--show')) {\r\n show();\r\n }\r\n if (scrollDistance > distanceToHide && nav.hasClass('nav-panel--show')) {\r\n hide();\r\n closeAllSubmenus();\r\n }\r\n }\r\n } else if (window.pageYOffset <= positionWhenToFix()) {\r\n if (stuck) {\r\n nav.removeClass('nav-panel--stuck');\r\n stuck = false;\r\n hide();\r\n\r\n if (departments && departmentsMode === 'fixed') {\r\n departments.setMode('fixed');\r\n }\r\n\r\n closeAllSubmenus();\r\n }\r\n }\r\n };\r\n\r\n const onMediaChange = function () {\r\n if (media.matches) {\r\n scrollDistance = 0;\r\n scrollPosition = window.pageYOffset;\r\n\r\n const navPanelTop = nav.offset().top;\r\n const navPanelBottom = navPanelTop + nav.outerHeight();\r\n const departmentsBottom = departments ? departments.body.offset().top + departments.body.outerHeight() : 0;\r\n\r\n if (departments && departmentsMode === 'fixed' && departmentsBottom > navPanelBottom) {\r\n positionWhenToFix = positionWhenToStick = function () {\r\n return departmentsBottom;\r\n };\r\n } else {\r\n if (mode === 'alwaysOnTop') {\r\n positionWhenToFix = positionWhenToStick = function () {\r\n return navPanelTop;\r\n };\r\n } else {\r\n positionWhenToFix = function () {\r\n return shown ? navPanelTop : navPanelBottom;\r\n };\r\n positionWhenToStick = function () {\r\n return navPanelBottom;\r\n };\r\n }\r\n }\r\n\r\n window.addEventListener('scroll', onScroll, passiveSupported ? { passive: true } : false);\r\n\r\n onScroll();\r\n } else {\r\n if (stuck) {\r\n nav.removeClass('nav-panel--stuck');\r\n stuck = false;\r\n hide();\r\n\r\n if (departments && departmentsMode === 'fixed') {\r\n departments.setMode('fixed');\r\n }\r\n\r\n closeAllSubmenus();\r\n }\r\n\r\n window.removeEventListener('scroll', onScroll, passiveSupported ? { passive: true } : false);\r\n }\r\n };\r\n\r\n if (media.addEventListener) {\r\n media.addEventListener('change', onMediaChange);\r\n } else {\r\n media.addListener(onMediaChange);\r\n }\r\n\r\n onMediaChange();\r\n }\r\n\r\n\r\n /*\r\n // sticky mobile-header\r\n */\r\n const mobileHeader = $('.mobile-header--sticky');\r\n const mobileHeaderPanel = mobileHeader.find('.mobile-header__panel');\r\n\r\n if (mobileHeader.length) {\r\n const mode = mobileHeader.data('sticky-mode') ? mobileHeader.data('sticky-mode') : 'alwaysOnTop'; // one of [alwaysOnTop, pullToShow]\r\n const media = matchMedia('(min-width: 1200px)');\r\n\r\n let stuck = false;\r\n let shown = false;\r\n let scrollDistance = 0;\r\n let scrollPosition = 0;\r\n let positionWhenToFix = 0;\r\n let positionWhenToStick = 0;\r\n\r\n const show = function () {\r\n mobileHeader.addClass('mobile-header--show');\r\n shown = true;\r\n $(document).trigger('stroyka.header.sticky.show');\r\n };\r\n const hide = function () {\r\n mobileHeader.removeClass('mobile-header--show');\r\n shown = false;\r\n $(document).trigger('stroyka.header.sticky.hide');\r\n };\r\n\r\n const onScroll = function () {\r\n const scrollDelta = window.pageYOffset - scrollPosition;\r\n\r\n if ((scrollDelta < 0) !== (scrollDistance < 0)) {\r\n scrollDistance = 0;\r\n }\r\n\r\n scrollPosition = window.pageYOffset;\r\n scrollDistance += scrollDelta;\r\n\r\n if (window.pageYOffset > positionWhenToStick) {\r\n if (!stuck) {\r\n mobileHeader.addClass('mobile-header--stuck');\r\n mobileHeaderPanel.css('transitionDuration', '0s');\r\n\r\n if (mode === 'alwaysOnTop') {\r\n show();\r\n }\r\n\r\n mobileHeader.height(); // force reflow\r\n mobileHeaderPanel.css('transitionDuration', '');\r\n stuck = true;\r\n }\r\n\r\n if (mode === 'pullToShow') {\r\n if (window.pageYOffset > positionWhenToFix) {\r\n const distanceToShow = 10; // in pixels\r\n const distanceToHide = 25; // in pixels\r\n\r\n if (scrollDistance < -distanceToShow && !shown) {\r\n show();\r\n }\r\n if (scrollDistance > distanceToHide && shown) {\r\n hide();\r\n }\r\n } else if (shown) {\r\n hide();\r\n }\r\n }\r\n } else if (window.pageYOffset <= positionWhenToFix) {\r\n if (stuck) {\r\n mobileHeader.removeClass('mobile-header--stuck');\r\n stuck = false;\r\n hide();\r\n }\r\n }\r\n };\r\n\r\n const onMediaChange = function () {\r\n if (!media.matches) {\r\n scrollDistance = 0;\r\n scrollPosition = window.pageYOffset;\r\n positionWhenToFix = mobileHeader.offset().top;\r\n positionWhenToStick = positionWhenToFix + (mode === 'alwaysOnTop' ? 0 : mobileHeader.outerHeight());\r\n\r\n window.addEventListener('scroll', onScroll, passiveSupported ? { passive: true } : false);\r\n\r\n onScroll();\r\n } else {\r\n if (stuck) {\r\n mobileHeader.removeClass('mobile-header--stuck');\r\n mobileHeader.removeClass('mobile-header--show');\r\n stuck = false;\r\n shown = false;\r\n $(document).trigger('stroyka.header.sticky.hide');\r\n }\r\n\r\n window.removeEventListener('scroll', onScroll, passiveSupported ? { passive: true } : false);\r\n }\r\n };\r\n\r\n if (media.addEventListener) {\r\n media.addEventListener('change', onMediaChange);\r\n } else {\r\n media.addListener(onMediaChange);\r\n }\r\n\r\n onMediaChange();\r\n }\r\n });\r\n \r\n });\r\n\r\n})($);\r\n","import { EventBus } from \"@/common/utils/event-bus\";\r\n\r\nexport const state = {\r\n version: '1.0.0',\r\n pageModel: {},\r\n}\r\n\r\nexport const mutations = {\r\n SET_PAGE_MODEL(state, model) {\r\n state.pageModel = model;\r\n }\r\n}\r\n\r\nexport const getters = {\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n mutations,\r\n getters\r\n}\r\n","import Vue from 'vue'\r\nimport store from '@/common/store'\r\nimport components from \"./components\";\r\nimport layout from '@/common/components/layout/layout.js'\r\nimport Ajax from '@/common/utils/ajax'\r\nimport VeeValidate, { Validator } from 'vee-validate'\r\nimport { ValidationObserver, ValidationProvider, extend } from 'vee-validate'\r\nimport CzechVeeValidateLocale from 'vee-validate/dist/locale/cs';\r\nimport pageLayoutModule from \"@/layout/store/pageLayoutModule\";\r\nimport lazySizes from 'lazysizes';\r\nimport 'lazysizes/plugins/parent-fit/ls.parent-fit';\r\nimport { VBScrollspyPlugin, DropdownPlugin, ModalPlugin } from 'bootstrap-vue'\r\nimport { EventBus } from '@/common/utils/event-bus'\r\n\r\nValidator.localize('cs', CzechVeeValidateLocale);\r\nVue.use(VeeValidate, { inject: true, fieldsBagName: 'veeFields', locale: 'cs', events: 'input|change|blur|on-close' }); \r\nVue.use(ValidationObserver);\r\nVue.use(ValidationProvider);\r\n\r\nVue.use(VBScrollspyPlugin)\r\nVue.use(DropdownPlugin)\r\nVue.use(ModalPlugin)\r\n\r\nlazySizes.init();\r\n\r\nstore.registerModule(\"pageLayoutModule\", pageLayoutModule);\r\nstore.commit('pageLayoutModule/SET_PAGE_MODEL', window.pageLayout.model)\r\n\r\ncomponents.forEach(({ component, element }) => {\r\n\r\n // Is the custom element in the DOM?\r\n if (!document.querySelector(element)) {\r\n return;\r\n }\r\n\r\n // Create a new Vue instance and mount it to the custom element.\r\n new Vue({\r\n store,\r\n render: createElement => createElement(component)\r\n }).$mount(element);\r\n\r\n});\r\n\r\nfunction mountRegisterForm() {\r\n return new Vue({\r\n components: { ValidationObserver, ValidationProvider },\r\n store,\r\n methods: {\r\n validate: function () {\r\n return this.$refs.observer.validate()\r\n },\r\n },\r\n data() {\r\n return {\r\n password: \"\",\r\n username: \"\"\r\n }\r\n }\r\n }).$mount('#v-account-menu');\r\n}\r\n\r\nfunction mountNewsLetterForm() {\r\n return new Vue({\r\n components: { ValidationObserver, ValidationProvider },\r\n store,\r\n methods: {\r\n validate() {\r\n return this.$refs.observer.validate();\r\n },\r\n },\r\n data() {\r\n return {\r\n visible: true,\r\n email: \"\",\r\n }\r\n }\r\n }).$mount('#v-newsletter');\r\n}\r\n\r\nfunction mountLoader() {\r\n return new Vue({\r\n store,\r\n computed: {\r\n show() {\r\n return this.$store.state.isLoading;\r\n }\r\n }\r\n }).$mount('#v-preloader');\r\n}\r\n\r\nfunction registerEventHandlers(){\r\n EventBus.$on(\"eshop-cart-item-added\", (data) => {\r\n if(window.gtag){\r\n let itemData = {\r\n \"item_id\": data.productId,\r\n \"item_name\": data.name,\r\n \"currency\": \"CZK\",\r\n \"item_brand\": data.brand,\r\n \"quantity\": data.quantity,\r\n \"price\": data.price\r\n };\r\n\r\n data.category.split(\" > \").forEach((element, index) => {\r\n if(index === 0){\r\n itemData[\"item_category\"] = element; \r\n } else {\r\n let catIndex = index+1;\r\n itemData[\"item_category\"+catIndex] = element;\r\n }\r\n });\r\n \r\n window.gtag('event', 'add_to_cart', {\r\n \"currency\": \"CZK\",\r\n \"value\": data.price,\r\n \"items\": [\r\n itemData\r\n ]\r\n });\r\n }\r\n });\r\n}\r\n\r\nregisterEventHandlers();\r\nlet vPreloader = mountLoader();\r\nlet vRegisterForm = mountRegisterForm();\r\nlet vNewsLetterForm = mountNewsLetterForm();\r\n\r\nconst returnUrlHash = document.getElementsByName('returnUrlHash');\r\nreturnUrlHash.value = location.hash;\r\n\r\nconst loginForm = document.getElementById('loginForm');\r\nconst newsletterForm = document.getElementById('newsletterForm');\r\nconst resetPasswordForm = document.getElementById('resetPasswordForm');\r\n\r\nconst mobileBtnSidebarMenu = document.getElementsByClassName('mobile-header__menu-button');\r\nif (mobileBtnSidebarMenu.length > 0) {\r\n mobileBtnSidebarMenu[0].addEventListener('click', function (e) {\r\n store.commit(\"TOGGLE_SIDEBAR_MENU\")\r\n });\r\n}\r\n\r\nif (newsletterForm) {\r\n newsletterForm.addEventListener('submit', function (e) {\r\n e.preventDefault();\r\n vNewsLetterForm.validate().then(validationResult => {\r\n if (!validationResult)\r\n return;\r\n\r\n Ajax.post(newsletterForm.getAttribute('action'), new FormData(e.target), {\r\n headers: {\r\n contentType: 'application/x-www-form-urlencoded'\r\n }\r\n }).then(response => {\r\n if (response.data.success === true) {\r\n vNewsLetterForm.visible = false;\r\n }\r\n })\r\n \r\n });\r\n });\r\n}\r\n\r\nif (loginForm) {\r\n loginForm.addEventListener('submit', function (e) {\r\n e.preventDefault();\r\n\r\n vRegisterForm.validate().then(validationResult => {\r\n\r\n if (!validationResult)\r\n return;\r\n\r\n Ajax.post(loginForm.getAttribute('action'), new FormData(e.target), {\r\n headers: {\r\n contentType: 'application/x-www-form-urlencoded'\r\n }\r\n }).then(response => {\r\n if (response.data.success === true) {\r\n window.location.reload();\r\n }\r\n })\r\n\r\n });\r\n });\r\n}\r\n","import { NAME_FORM } from '../../constants/components';\nimport Vue, { mergeData } from '../../utils/vue';\nexport var props = {\n id: {\n type: String // default: null\n\n },\n inline: {\n type: Boolean,\n default: false\n },\n novalidate: {\n type: Boolean,\n default: false\n },\n validated: {\n type: Boolean,\n default: false\n }\n}; // @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { MutationObs, isElement } from './dom';\nimport { warnNoMutationObserverSupport } from './warn';\n/**\n * Observe a DOM element changes, falls back to eventListener mode\n * @param {Element} el The DOM element to observe\n * @param {Function} callback callback to be called on change\n * @param {object} [options={childList: true, subtree: true}] observe options\n * @see https://stackoverflow.com/questions/3219758\n */\n\nvar observeDom = function observeDom(el, callback, options)\n/* istanbul ignore next: difficult to test in JSDOM */\n{\n // Handle cases where we might be passed a Vue instance\n el = el ? el.$el || el : null; // Early exit when we have no element\n\n /* istanbul ignore next: difficult to test in JSDOM */\n\n if (!isElement(el)) {\n return null;\n } // Exit and throw a warning when `MutationObserver` isn't available\n\n\n if (warnNoMutationObserverSupport('observeDom')) {\n return null;\n } // Define a new observer\n\n\n var obs = new MutationObs(function (mutations) {\n var changed = false; // A mutation can contain several change records, so we loop\n // through them to see what has changed\n // We break out of the loop early if any \"significant\" change\n // has been detected\n\n for (var i = 0; i < mutations.length && !changed; i++) {\n // The mutation record\n var mutation = mutations[i]; // Mutation type\n\n var type = mutation.type; // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.)\n\n var target = mutation.target; // Detect whether a change happened based on type and target\n\n if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) {\n // We ignore nodes that are not TEXT (i.e. comments, etc.)\n // as they don't change layout\n changed = true;\n } else if (type === 'attributes') {\n changed = true;\n } else if (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) {\n // This includes HTMLElement and text nodes being\n // added/removed/re-arranged\n changed = true;\n }\n } // We only call the callback if a change that could affect\n // layout/size truly happened\n\n\n if (changed) {\n callback();\n }\n }); // Have the observer observe foo for changes in children, etc\n\n obs.observe(el, _objectSpread({\n childList: true,\n subtree: true\n }, options)); // We return a reference to the observer so that `obs.disconnect()`\n // can be called if necessary\n // To reduce overhead when the root element is hidden\n\n return obs;\n};\n\nexport default observeDom;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { assign, defineProperty, defineProperties, readonlyDescriptor } from './object';\n\nvar BvEvent = /*#__PURE__*/function () {\n function BvEvent(type) {\n var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, BvEvent);\n\n // Start by emulating native Event constructor\n if (!type) {\n /* istanbul ignore next */\n throw new TypeError(\"Failed to construct '\".concat(this.constructor.name, \"'. 1 argument required, \").concat(arguments.length, \" given.\"));\n } // Merge defaults first, the eventInit, and the type last\n // so it can't be overwritten\n\n\n assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, {\n type: type\n }); // Freeze some props as readonly, but leave them enumerable\n\n defineProperties(this, {\n type: readonlyDescriptor(),\n cancelable: readonlyDescriptor(),\n nativeEvent: readonlyDescriptor(),\n target: readonlyDescriptor(),\n relatedTarget: readonlyDescriptor(),\n vueTarget: readonlyDescriptor(),\n componentId: readonlyDescriptor()\n }); // Create a private variable using closure scoping\n\n var defaultPrevented = false; // Recreate preventDefault method. One way setter\n\n this.preventDefault = function preventDefault() {\n if (this.cancelable) {\n defaultPrevented = true;\n }\n }; // Create `defaultPrevented` publicly accessible prop that\n // can only be altered by the preventDefault method\n\n\n defineProperty(this, 'defaultPrevented', {\n enumerable: true,\n get: function get() {\n return defaultPrevented;\n }\n });\n }\n\n _createClass(BvEvent, null, [{\n key: \"Defaults\",\n get: function get() {\n return {\n type: '',\n cancelable: true,\n nativeEvent: null,\n target: null,\n relatedTarget: null,\n vueTarget: null,\n componentId: null\n };\n }\n }]);\n\n return BvEvent;\n}(); // Named Exports\n\n\nexport { BvEvent };","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):((e=e||self).__vee_validate_locale__cs=e.__vee_validate_locale__cs||{},e.__vee_validate_locale__cs.js=n())}(this,function(){\"use strict\";var e,n={name:\"cs\",messages:{_default:function(e){return\"Pole \"+e+\" není vyplněno správně\"},after:function(e,n){var t=n[0];return e+\" musí být později než \"+(n[1]?\"nebo se rovnat \":\"\")+t},alpha:function(e){return\"Pole \"+e+\" může obsahovat pouze písmena\"},alpha_dash:function(e){return\"Pole \"+e+\" může obsahovat pouze alfanumerické znaky, pomlčky nebo podtržítka\"},alpha_num:function(e){return\"Pole \"+e+\" může obsahovat pouze alfanumerické znaky\"},alpha_spaces:function(e){return\"Pole \"+e+\" může obsahovat pouze alfanumerické znaky a mezery\"},before:function(e,n){var t=n[0];return e+\" musí být dříve než \"+(n[1]?\"nebo se rovnat \":\"\")+t},between:function(e,n){return\"Pole \"+e+\" musí být mezi \"+n[0]+\" a \"+n[1]},confirmed:function(e){return\"Kontrola pole \"+e+\" se neshoduje\"},credit_card:function(e){return\"Pole \"+e+\" není vyplněno správně\"},date_between:function(e,n){return\"Pole \"+e+\" musí být mezi \"+n[0]+\" a \"+n[1]},date_format:function(e,n){return\"Pole \"+e+\" musí být ve formátu \"+n[0]},decimal:function(e,n){void 0===n&&(n=[]);var t=n[0];return void 0===t&&(t=\"*\"),\"Pole \"+e+\" musí být číslo a může obsahovat\"+(t&&\"*\"!==t?\" \"+t:\"\")+\" desetinných míst\"},digits:function(e,n){return\"Pole \"+e+\" musí být číslo a musí obshovat přesně \"+n[0]+\" číslic\"},dimensions:function(e,n){return e+\" musí mít \"+n[0]+\" pixelů na \"+n[1]+\" pixelů\"},email:function(e){return\"Pole \"+e+\" musí být validní email\"},excluded:function(e){return e+\" musí být správná hodnota\"},ext:function(e){return e+\" musí být validní soubor\"},image:function(e){return e+\" musí být obrázek\"},included:function(e){return e+\" musí být správná hodnota\"},ip:function(e){return e+\" musí být ip addresa\"},max:function(e,n){return e+\" nesmí být delší než \"+n[0]+\" znaků\"},max_value:function(e,n){return\"Pole \"+e+\" musí být \"+n[0]+\", nebo mensí\"},mimes:function(e){return\"Pole \"+e+\" musí být správný typ souboru\"},min:function(e,n){return\"Pole \"+e+\" musí obsahovat alespoň \"+n[0]+\" znaků\"},min_value:function(e,n){return\"Pole \"+e+\" musí být \"+n[0]+\", nebo více\"},numeric:function(e){return\"Pole \"+e+\" může obsahovat pouze číslice\"},regex:function(e){return\"Pole \"+e+\" není vyplněno správně\"},required:function(e){return\"Pole \"+e+\" je povinné\"},size:function(e,n){return e+\" musí být menší než \"+function(e){var n=1024,t=0===(e=Number(e)*n)?0:Math.floor(Math.log(e)/Math.log(n));return 1*(e/Math.pow(n,t)).toFixed(2)+\" \"+[\"Byte\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"][t]}(n[0])},url:function(e){return e+\" není platná URL adresa\"}},attributes:{}};return\"undefined\"!=typeof VeeValidate&&VeeValidate.Validator.localize(((e={})[n.name]=n,e)),n});","// @vue/component\nexport default {\n methods: {\n /**\n * Safely register event listeners on the root Vue node\n * While Vue automatically removes listeners for individual components,\n * when a component registers a listener on root and is destroyed,\n * this orphans a callback because the node is gone,\n * but the root does not clear the callback\n *\n * When registering a `$root` listener, it also registers a listener on\n * the component's `beforeDestroy()` hook to automatically remove the\n * event listener from the `$root` instance\n *\n * @param {string} event\n * @param {function} callback\n */\n listenOnRoot: function listenOnRoot(event, callback) {\n var _this = this;\n\n this.$root.$on(event, callback);\n this.$on('hook:beforeDestroy', function () {\n _this.$root.$off(event, callback);\n });\n },\n\n /**\n * Safely register a `$once()` event listener on the root Vue node\n * While Vue automatically removes listeners for individual components,\n * when a component registers a listener on root and is destroyed,\n * this orphans a callback because the node is gone,\n * but the root does not clear the callback\n *\n * When registering a $root listener, it also registers a listener on\n * the component's `beforeDestroy` hook to automatically remove the\n * event listener from the $root instance.\n *\n * @param {string} event\n * @param {function} callback\n */\n listenOnRootOnce: function listenOnRootOnce(event, callback) {\n var _this2 = this;\n\n this.$root.$once(event, callback);\n this.$on('hook:beforeDestroy', function () {\n _this2.$root.$off(event, callback);\n });\n },\n\n /**\n * Convenience method for calling `vm.$emit()` on `vm.$root`\n *\n * @param {string} event\n * @param {*} args\n */\n emitOnRoot: function emitOnRoot(event) {\n var _this$$root;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_this$$root = this.$root).$emit.apply(_this$$root, [event].concat(args));\n }\n }\n};","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.\n * It will read the variation of the `placement` property.\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.\n * These can be overridden using the `options` argument of Popper.js.\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.\n * By default, it is set to no-op.\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.\n * By default, it is set to no-op.\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import axios from \"axios\";\r\nimport Vue from \"vue\";\r\nimport { EventBus } from '@/common/utils/event-bus'\r\n\r\nconst ajax = axios.create({\r\n withCredentials: true,\r\n baseURL: \"\",\r\n timeout: 30000\r\n});\r\n\r\n/* eslint-disable */\r\n\r\n ajax.interceptors.request.use(function (config) {\r\n if (!!window.abp.auth.getToken()) {\r\n config.headers.common[\"Authorization\"] = \"Bearer \" + window.abp.auth.getToken();\r\n }\r\n config.headers.common[\".AspNetCore.Culture\"] = window.abp.utils.getCookieValue(\"Abp.Localization.CultureName\");\r\n config.headers.common[\"Abp.TenantId\"] = window.abp.multiTenancy.getTenantIdCookie();\r\n\r\n config.headers.common[\"Cache-control\"] = \"no-cache\";\r\n config.headers.common[\"Cache-control\"] = \"no-store\";\r\n config.headers.common[\"Pragma\"] = \"no-cache\";\r\n config.headers.common[\"Expires\"] = 0;\r\n\r\n return config;\r\n }, function (error) {\r\n\r\n return Promise.reject(error);\r\n});\r\n\r\n\r\nlet vm = new Vue({});\r\n\r\n\r\najax.interceptors.response.use((respon) => {\r\n return respon\r\n }, (error) => {\r\n if (!!error.response && !!error.response.data.error && !!error.response.data.error.message && error.response.data.error.details) {\r\n\r\n vm.$swal({\r\n title: error.response.data.error.message,\r\n text: error.response.data.error.details,\r\n type: 'error',\r\n confirmButtonText: 'Zavřít',\r\n });\r\n\r\n } else if (!!error.response && !!error.response.data.error && !!error.response.data.error.message) {\r\n\r\n vm.$swal({\r\n title: window.abp.localization.localize(\"base_result_Error\", \"MyeID\"),\r\n text: error.response.data.error.message,\r\n type: 'error',\r\n confirmButtonText: 'Zavřít',\r\n });\r\n\r\n } else if (!error.response && error.code !== \"ECONNABORTED\") {\r\n\r\n vm.$swal({\r\n title: window.abp.localization.localize('Chyba'),\r\n text: \"Došlo k neočekáváné chybě\",\r\n type: 'error',\r\n confirmButtonText: 'Zavřít',\r\n });\r\n\r\n } else if (error.code === \"ECONNABORTED\") {\r\n console.warn(\"Request timeout.\");\r\n }\r\n\r\n EventBus.$emit(\"page-loading-off\");\r\n\r\n return Promise.reject(error.response);\r\n})\r\n\r\nexport default ajax;\r\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// Plugin for adding `$bvModal` property to all Vue instances\nimport { NAME_MODAL, NAME_MSG_BOX } from '../../../constants/components';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { isUndefined, isFunction } from '../../../utils/inspect';\nimport { assign, defineProperties, defineProperty, hasOwnProperty, keys, omit, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient, warnNoPromiseSupport } from '../../../utils/warn';\nimport { BModal, props as modalProps } from '../modal'; // --- Constants ---\n\nvar PROP_NAME = '$bvModal';\nvar PROP_NAME_PRIV = '_bv__modal'; // Base modal props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\n\nvar BASE_PROPS = ['id'].concat(_toConsumableArray(keys(omit(modalProps, ['busy', 'lazy', 'noStacking', \"static\", 'visible'])))); // Fallback event resolver (returns undefined)\n\nvar defaultResolver = function defaultResolver() {}; // Map prop names to modal slot names\n\n\nvar propsToSlots = {\n msgBoxContent: 'default',\n title: 'modal-title',\n okTitle: 'modal-ok',\n cancelTitle: 'modal-cancel'\n}; // --- Utility methods ---\n// Method to filter only recognized props that are not undefined\n\nvar filterOptions = function filterOptions(options) {\n return BASE_PROPS.reduce(function (memo, key) {\n if (!isUndefined(options[key])) {\n memo[key] = options[key];\n }\n\n return memo;\n }, {});\n}; // Method to install `$bvModal` VM injection\n\n\nvar plugin = function plugin(Vue) {\n // Create a private sub-component that extends BModal\n // which self-destructs after hidden\n // @vue/component\n var BMsgBox = Vue.extend({\n name: NAME_MSG_BOX,\n extends: BModal,\n destroyed: function destroyed() {\n // Make sure we not in document any more\n if (this.$el && this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Self destruct handler\n var handleDestroy = function handleDestroy() {\n _this.$nextTick(function () {\n // In a `requestAF()` to release control back to application\n requestAF(function () {\n _this.$destroy();\n });\n });\n }; // Self destruct if parent destroyed\n\n\n this.$parent.$once('hook:destroyed', handleDestroy); // Self destruct after hidden\n\n this.$once('hidden', handleDestroy); // Self destruct on route change\n\n /* istanbul ignore if */\n\n if (this.$router && this.$route) {\n // Destroy ourselves if route changes\n\n /* istanbul ignore next */\n this.$once('hook:beforeDestroy', this.$watch('$router', handleDestroy));\n } // Show the `BMsgBox`\n\n\n this.show();\n }\n }); // Method to generate the on-demand modal message box\n // Returns a promise that resolves to a value returned by the resolve\n\n var asyncMsgBox = function asyncMsgBox($parent, props) {\n var resolver = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultResolver;\n\n if (warnNotClient(PROP_NAME) || warnNoPromiseSupport(PROP_NAME)) {\n /* istanbul ignore next */\n return;\n } // Create an instance of `BMsgBox` component\n\n\n var msgBox = new BMsgBox({\n // We set parent as the local VM so these modals can emit events on\n // the app `$root`, as needed by things like tooltips and popovers\n // And it helps to ensure `BMsgBox` is destroyed when parent is destroyed\n parent: $parent,\n // Preset the prop values\n propsData: _objectSpread(_objectSpread(_objectSpread({}, filterOptions(getComponentConfig(NAME_MODAL) || {})), {}, {\n // Defaults that user can override\n hideHeaderClose: true,\n hideHeader: !(props.title || props.titleHtml)\n }, omit(props, keys(propsToSlots))), {}, {\n // Props that can't be overridden\n lazy: false,\n busy: false,\n visible: false,\n noStacking: false,\n noEnforceFocus: false\n })\n }); // Convert certain props to scoped slots\n\n keys(propsToSlots).forEach(function (prop) {\n if (!isUndefined(props[prop])) {\n // Can be a string, or array of VNodes.\n // Alternatively, user can use HTML version of prop to pass an HTML string.\n msgBox.$slots[propsToSlots[prop]] = concat(props[prop]);\n }\n }); // Return a promise that resolves when hidden, or rejects on destroyed\n\n return new Promise(function (resolve, reject) {\n var resolved = false;\n msgBox.$once('hook:destroyed', function () {\n if (!resolved) {\n /* istanbul ignore next */\n reject(new Error('BootstrapVue MsgBox destroyed before resolve'));\n }\n });\n msgBox.$on('hide', function (bvModalEvt) {\n if (!bvModalEvt.defaultPrevented) {\n var result = resolver(bvModalEvt); // If resolver didn't cancel hide, we resolve\n\n if (!bvModalEvt.defaultPrevented) {\n resolved = true;\n resolve(result);\n }\n }\n }); // Create a mount point (a DIV) and mount the msgBo which will trigger it to show\n\n var div = document.createElement('div');\n document.body.appendChild(div);\n msgBox.$mount(div);\n });\n }; // Private utility method to open a user defined message box and returns a promise.\n // Not to be used directly by consumers, as this method may change calling syntax\n\n\n var makeMsgBox = function makeMsgBox($parent, content) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var resolver = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!content || warnNoPromiseSupport(PROP_NAME) || warnNotClient(PROP_NAME) || !isFunction(resolver)) {\n /* istanbul ignore next */\n return;\n }\n\n return asyncMsgBox($parent, _objectSpread(_objectSpread({}, filterOptions(options)), {}, {\n msgBoxContent: content\n }), resolver);\n }; // BvModal instance class\n\n\n var BvModal = /*#__PURE__*/function () {\n function BvModal(vm) {\n _classCallCheck(this, BvModal);\n\n // Assign the new properties to this instance\n assign(this, {\n _vm: vm,\n _root: vm.$root\n }); // Set these properties as read-only and non-enumerable\n\n defineProperties(this, {\n _vm: readonlyDescriptor(),\n _root: readonlyDescriptor()\n });\n } // --- Instance methods ---\n // Show modal with the specified ID args are for future use\n\n\n _createClass(BvModal, [{\n key: \"show\",\n value: function show(id) {\n if (id && this._root) {\n var _this$_root;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_this$_root = this._root).$emit.apply(_this$_root, ['bv::show::modal', id].concat(args));\n }\n } // Hide modal with the specified ID args are for future use\n\n }, {\n key: \"hide\",\n value: function hide(id) {\n if (id && this._root) {\n var _this$_root2;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (_this$_root2 = this._root).$emit.apply(_this$_root2, ['bv::hide::modal', id].concat(args));\n }\n } // The following methods require Promise support!\n // IE 11 and others do not support Promise natively, so users\n // should have a Polyfill loaded (which they need anyways for IE 11 support)\n // Open a message box with OK button only and returns a promise\n\n }, {\n key: \"msgBoxOk\",\n value: function msgBoxOk(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Pick the modal props we support from options\n var props = _objectSpread(_objectSpread({}, options), {}, {\n // Add in overrides and our content prop\n okOnly: true,\n okDisabled: false,\n hideFooter: false,\n msgBoxContent: message\n });\n\n return makeMsgBox(this._vm, message, props, function () {\n // Always resolve to true for OK\n return true;\n });\n } // Open a message box modal with OK and CANCEL buttons\n // and returns a promise\n\n }, {\n key: \"msgBoxConfirm\",\n value: function msgBoxConfirm(message) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // Set the modal props we support from options\n var props = _objectSpread(_objectSpread({}, options), {}, {\n // Add in overrides and our content prop\n okOnly: false,\n okDisabled: false,\n cancelDisabled: false,\n hideFooter: false\n });\n\n return makeMsgBox(this._vm, message, props, function (bvModalEvt) {\n var trigger = bvModalEvt.trigger;\n return trigger === 'ok' ? true : trigger === 'cancel' ? false : null;\n });\n }\n }]);\n\n return BvModal;\n }(); // Add our instance mixin\n\n\n Vue.mixin({\n beforeCreate: function beforeCreate() {\n // Because we need access to `$root` for `$emits`, and VM for parenting,\n // we have to create a fresh instance of `BvModal` for each VM\n this[PROP_NAME_PRIV] = new BvModal(this);\n }\n }); // Define our read-only `$bvModal` instance property\n // Placed in an if just in case in HMR mode\n\n if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n defineProperty(Vue.prototype, PROP_NAME, {\n get: function get() {\n /* istanbul ignore next */\n if (!this || !this[PROP_NAME_PRIV]) {\n warn(\"\\\"\".concat(PROP_NAME, \"\\\" must be accessed from a Vue instance \\\"this\\\" context.\"), NAME_MODAL);\n }\n\n return this[PROP_NAME_PRIV];\n }\n });\n }\n};\n\nexport var BVModalPlugin = /*#__PURE__*/pluginFactory({\n plugins: {\n plugin: plugin\n }\n});","function validate(binding) {\n if (typeof binding.value !== 'function') {\n console.warn('[Vue-click-outside:] provided expression', binding.expression, 'is not a function.')\n return false\n }\n\n return true\n}\n\nfunction isPopup(popupItem, elements) {\n if (!popupItem || !elements)\n return false\n\n for (var i = 0, len = elements.length; i < len; i++) {\n try {\n if (popupItem.contains(elements[i])) {\n return true\n }\n if (elements[i].contains(popupItem)) {\n return false\n }\n } catch(e) {\n return false\n }\n }\n\n return false\n}\n\nfunction isServer(vNode) {\n return typeof vNode.componentInstance !== 'undefined' && vNode.componentInstance.$isServer\n}\n\nexports = module.exports = {\n bind: function (el, binding, vNode) {\n if (!validate(binding)) return\n\n // Define Handler and cache it on the element\n function handler(e) {\n if (!vNode.context) return\n\n // some components may have related popup item, on which we shall prevent the click outside event handler.\n var elements = e.path || (e.composedPath && e.composedPath())\n elements && elements.length > 0 && elements.unshift(e.target)\n\n if (el.contains(e.target) || isPopup(vNode.context.popupItem, elements)) return\n\n el.__vueClickOutside__.callback(e)\n }\n\n // add Event Listeners\n el.__vueClickOutside__ = {\n handler: handler,\n callback: binding.value\n }\n const clickHandler = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';\n !isServer(vNode) && document.addEventListener(clickHandler, handler)\n },\n\n update: function (el, binding) {\n if (validate(binding)) el.__vueClickOutside__.callback = binding.value\n },\n\n unbind: function (el, binding, vNode) {\n // Remove Event Listeners\n const clickHandler = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';\n !isServer(vNode) && el.__vueClickOutside__ && document.removeEventListener(clickHandler, el.__vueClickOutside__.handler)\n delete el.__vueClickOutside__\n }\n}\n"],"sourceRoot":""}