{"version":3,"file":"vendor.js","mappings":"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","sources":["webpack://ican/./node_modules/accounting/accounting.js","webpack://ican/./node_modules/aos/dist/aos.js","webpack://ican/./node_modules/axios/index.js","webpack://ican/./node_modules/axios/lib/adapters/xhr.js","webpack://ican/./node_modules/axios/lib/axios.js","webpack://ican/./node_modules/axios/lib/cancel/Cancel.js","webpack://ican/./node_modules/axios/lib/cancel/CancelToken.js","webpack://ican/./node_modules/axios/lib/cancel/isCancel.js","webpack://ican/./node_modules/axios/lib/core/Axios.js","webpack://ican/./node_modules/axios/lib/core/InterceptorManager.js","webpack://ican/./node_modules/axios/lib/core/buildFullPath.js","webpack://ican/./node_modules/axios/lib/core/createError.js","webpack://ican/./node_modules/axios/lib/core/dispatchRequest.js","webpack://ican/./node_modules/axios/lib/core/enhanceError.js","webpack://ican/./node_modules/axios/lib/core/mergeConfig.js","webpack://ican/./node_modules/axios/lib/core/settle.js","webpack://ican/./node_modules/axios/lib/core/transformData.js","webpack://ican/./node_modules/axios/lib/defaults.js","webpack://ican/./node_modules/axios/lib/helpers/bind.js","webpack://ican/./node_modules/axios/lib/helpers/buildURL.js","webpack://ican/./node_modules/axios/lib/helpers/combineURLs.js","webpack://ican/./node_modules/axios/lib/helpers/cookies.js","webpack://ican/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://ican/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://ican/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://ican/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://ican/./node_modules/axios/lib/helpers/spread.js","webpack://ican/./node_modules/axios/lib/utils.js","webpack://ican/./node_modules/body-scroll-lock/lib/bodyScrollLock.min.js","webpack://ican/./node_modules/countup.js/dist/countUp.min.js","webpack://ican/./node_modules/custom-event-polyfill/polyfill.js","webpack://ican/./node_modules/selector-set/selector-set.next.js","webpack://ican/./node_modules/delegated-events/dist/index.js","webpack://ican/./node_modules/desandro-matches-selector/matches-selector.js","webpack://ican/./node_modules/easydropdown/dist/Components/arrow.js","webpack://ican/./node_modules/easydropdown/dist/Components/body.js","webpack://ican/./node_modules/easydropdown/dist/Components/group.js","webpack://ican/./node_modules/easydropdown/dist/Components/head.js","webpack://ican/./node_modules/easydropdown/dist/Components/option.js","webpack://ican/./node_modules/easydropdown/dist/Components/root.js","webpack://ican/./node_modules/easydropdown/dist/Components/value.js","webpack://ican/./node_modules/easydropdown/dist/Config/Behavior.js","webpack://ican/./node_modules/easydropdown/dist/Config/Callbacks.js","webpack://ican/./node_modules/easydropdown/dist/Config/ClassNames.js","webpack://ican/./node_modules/easydropdown/dist/Config/Config.js","webpack://ican/./node_modules/easydropdown/dist/Easydropdown/Easydropdown.js","webpack://ican/./node_modules/easydropdown/dist/Easydropdown/EasydropdownFacade.js","webpack://ican/./node_modules/easydropdown/dist/Easydropdown/Timers.js","webpack://ican/./node_modules/easydropdown/dist/Easydropdown/cache.js","webpack://ican/./node_modules/easydropdown/dist/Easydropdown/factory.js","webpack://ican/./node_modules/easydropdown/dist/Events/Constants/KeyCodes.js","webpack://ican/./node_modules/easydropdown/dist/Events/Constants/Selectors.js","webpack://ican/./node_modules/easydropdown/dist/Events/EventBinding.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleBodyClick.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleBodyMousedown.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleBodyMouseover.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleHeadClick.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleItemsListScroll.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectBlur.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectFocus.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectInvalid.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydown.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydownDown.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeydownUp.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleSelectKeypress.js","webpack://ican/./node_modules/easydropdown/dist/Events/Handlers/handleWindowClick.js","webpack://ican/./node_modules/easydropdown/dist/Events/bindEvents.js","webpack://ican/./node_modules/easydropdown/dist/Events/getEventsList.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/Constants/AttributeChangeType.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/Constants/DomChangeType.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/Dom.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/PatchCommand.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/Renderer.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/domDiff.js","webpack://ican/./node_modules/easydropdown/dist/Renderer/domPatch.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Polyfills/Element.matches.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/Constants/CollisionType.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/closestParent.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/composeClassName.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/createDomElementFromHtml.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/detectBodyCollision.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/dispatchOpen.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/getIsMobilePlatform.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/killSelectReaction.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/pollForSelectChange.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/pollForSelectMutation.js","webpack://ican/./node_modules/easydropdown/dist/Shared/Util/throttle.js","webpack://ican/./node_modules/easydropdown/dist/State/Constants/BodyStatus.js","webpack://ican/./node_modules/easydropdown/dist/State/Constants/ScrollStatus.js","webpack://ican/./node_modules/easydropdown/dist/State/Group.js","webpack://ican/./node_modules/easydropdown/dist/State/InjectedActions/closeOthers.js","webpack://ican/./node_modules/easydropdown/dist/State/InjectedActions/scrollToView.js","webpack://ican/./node_modules/easydropdown/dist/State/Option.js","webpack://ican/./node_modules/easydropdown/dist/State/State.js","webpack://ican/./node_modules/easydropdown/dist/State/StateManager.js","webpack://ican/./node_modules/easydropdown/dist/State/StateMapper.js","webpack://ican/./node_modules/easydropdown/dist/State/resolveActions.js","webpack://ican/./node_modules/easydropdown/dist/index.js","webpack://ican/./node_modules/ev-emitter/ev-emitter.js","webpack://ican/./node_modules/fizzy-ui-utils/utils.js","webpack://ican/./node_modules/flickity-fade/flickity-fade.js","webpack://ican/./node_modules/flickity-sync/flickity-sync.js","webpack://ican/./node_modules/flickity/js/add-remove-cell.js","webpack://ican/./node_modules/flickity/js/animate.js","webpack://ican/./node_modules/flickity/js/cell.js","webpack://ican/./node_modules/flickity/js/drag.js","webpack://ican/./node_modules/flickity/js/flickity.js","webpack://ican/./node_modules/flickity/js/index.js","webpack://ican/./node_modules/flickity/js/lazyload.js","webpack://ican/./node_modules/flickity/js/page-dots.js","webpack://ican/./node_modules/flickity/js/player.js","webpack://ican/./node_modules/flickity/js/prev-next-button.js","webpack://ican/./node_modules/flickity/js/slide.js","webpack://ican/./node_modules/get-size/get-size.js","webpack://ican/./node_modules/helpful-merge/dist/Config.js","webpack://ican/./node_modules/helpful-merge/dist/Constants/ArrayStrategy.js","webpack://ican/./node_modules/helpful-merge/dist/FluentMerge.js","webpack://ican/./node_modules/helpful-merge/dist/Messages.js","webpack://ican/./node_modules/helpful-merge/dist/deriveCustomTypeInstance.js","webpack://ican/./node_modules/helpful-merge/dist/handleMergeError.js","webpack://ican/./node_modules/helpful-merge/dist/index.js","webpack://ican/./node_modules/helpful-merge/dist/merge.js","webpack://ican/./node_modules/imask/esm/_rollupPluginBabelHelpers-67bba7fb.js","webpack://ican/./node_modules/imask/esm/core/change-details.js","webpack://ican/./node_modules/imask/esm/core/utils.js","webpack://ican/./node_modules/imask/esm/core/action-details.js","webpack://ican/./node_modules/imask/esm/core/continuous-tail-details.js","webpack://ican/./node_modules/imask/esm/core/holder.js","webpack://ican/./node_modules/imask/esm/masked/base.js","webpack://ican/./node_modules/imask/esm/masked/factory.js","webpack://ican/./node_modules/imask/esm/masked/pattern/input-definition.js","webpack://ican/./node_modules/imask/esm/masked/pattern/fixed-definition.js","webpack://ican/./node_modules/imask/esm/masked/pattern/chunk-tail-details.js","webpack://ican/./node_modules/imask/esm/masked/pattern/cursor.js","webpack://ican/./node_modules/imask/esm/masked/regexp.js","webpack://ican/./node_modules/imask/esm/masked/pattern.js","webpack://ican/./node_modules/imask/esm/masked/range.js","webpack://ican/./node_modules/imask/esm/masked/date.js","webpack://ican/./node_modules/imask/esm/controls/mask-element.js","webpack://ican/./node_modules/imask/esm/controls/html-mask-element.js","webpack://ican/./node_modules/imask/esm/controls/html-contenteditable-mask-element.js","webpack://ican/./node_modules/imask/esm/controls/input.js","webpack://ican/./node_modules/imask/esm/masked/enum.js","webpack://ican/./node_modules/imask/esm/masked/number.js","webpack://ican/./node_modules/imask/esm/masked/function.js","webpack://ican/./node_modules/imask/esm/masked/dynamic.js","webpack://ican/./node_modules/imask/esm/masked/pipe.js","webpack://ican/./node_modules/imask/esm/index.js","webpack://ican/./node_modules/js-cookie/src/js.cookie.js","webpack://ican/./node_modules/jump.js/dist/jump.module.js","webpack://ican/./node_modules/lg-thumbnail.js/dist/lg-thumbnail.js","webpack://ican/./node_modules/lightgallery.js/dist/js/lightgallery.js","webpack://ican/./node_modules/lightpick/lightpick.js","webpack://ican/./node_modules/lodash/_Symbol.js","webpack://ican/./node_modules/lodash/_baseGetTag.js","webpack://ican/./node_modules/lodash/_baseTrim.js","webpack://ican/./node_modules/lodash/_freeGlobal.js","webpack://ican/./node_modules/lodash/_getRawTag.js","webpack://ican/./node_modules/lodash/_objectToString.js","webpack://ican/./node_modules/lodash/_root.js","webpack://ican/./node_modules/lodash/_trimmedEndIndex.js","webpack://ican/./node_modules/lodash/debounce.js","webpack://ican/./node_modules/lodash/isObject.js","webpack://ican/./node_modules/lodash/isObjectLike.js","webpack://ican/./node_modules/lodash/isSymbol.js","webpack://ican/./node_modules/lodash/now.js","webpack://ican/./node_modules/lodash/throttle.js","webpack://ican/./node_modules/lodash/toNumber.js","webpack://ican/./node_modules/moment/moment.js","webpack://ican/./node_modules/object-fit-images/dist/ofi.common-js.js","webpack://ican/./node_modules/pristinejs/dist/pristine.js","webpack://ican/./node_modules/ssr-window/ssr-window.esm.js","webpack://ican/./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack://ican/./node_modules/swiper/esm/utils/get-support.js","webpack://ican/./node_modules/swiper/esm/utils/get-device.js","webpack://ican/./node_modules/swiper/esm/utils/get-browser.js","webpack://ican/./node_modules/swiper/esm/modules/resize/resize.js","webpack://ican/./node_modules/swiper/esm/modules/observer/observer.js","webpack://ican/./node_modules/swiper/esm/components/core/events-emitter.js","webpack://ican/./node_modules/swiper/esm/components/core/update/index.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateSize.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack://ican/./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/index.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack://ican/./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack://ican/./node_modules/swiper/esm/components/core/loop/index.js","webpack://ican/./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack://ican/./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack://ican/./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack://ican/./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack://ican/./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack://ican/./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack://ican/./node_modules/swiper/esm/components/core/events/onResize.js","webpack://ican/./node_modules/swiper/esm/components/core/events/onClick.js","webpack://ican/./node_modules/swiper/esm/components/core/events/onScroll.js","webpack://ican/./node_modules/swiper/esm/components/core/events/index.js","webpack://ican/./node_modules/swiper/esm/components/core/classes/index.js","webpack://ican/./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack://ican/./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack://ican/./node_modules/swiper/esm/components/core/defaults.js","webpack://ican/./node_modules/swiper/esm/components/core/core-class.js","webpack://ican/./node_modules/swiper/esm/components/core/modular.js","webpack://ican/./node_modules/swiper/esm/components/core/translate/index.js","webpack://ican/./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack://ican/./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack://ican/./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack://ican/./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack://ican/./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack://ican/./node_modules/swiper/esm/components/core/transition/index.js","webpack://ican/./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack://ican/./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack://ican/./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack://ican/./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack://ican/./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack://ican/./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack://ican/./node_modules/swiper/esm/components/core/manipulation/index.js","webpack://ican/./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack://ican/./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack://ican/./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack://ican/./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack://ican/./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack://ican/./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack://ican/./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack://ican/./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack://ican/./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack://ican/./node_modules/swiper/esm/components/core/images/index.js","webpack://ican/./node_modules/swiper/esm/components/core/images/loadImage.js","webpack://ican/./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack://ican/./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack://ican/./node_modules/swiper/esm/components/navigation/navigation.js","webpack://ican/./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack://ican/./node_modules/dom7/dom7.esm.js","webpack://ican/./node_modules/swiper/esm/utils/dom.js","webpack://ican/./node_modules/swiper/esm/utils/utils.js","webpack://ican/./node_modules/tingle.js/dist/tingle.min.js","webpack://ican/./node_modules/unidragger/unidragger.js","webpack://ican/./node_modules/unipointer/unipointer.js","webpack://ican/./node_modules/verge/verge.js"],"sourcesContent":["/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.1';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.AOS=t()}(this,function(){\"use strict\";var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},t=\"Expected a function\",n=NaN,o=\"[object Symbol]\",i=/^\\s+|\\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,c=/^0o[0-7]+$/i,s=parseInt,u=\"object\"==typeof e&&e&&e.Object===Object&&e,d=\"object\"==typeof self&&self&&self.Object===Object&&self,l=u||d||Function(\"return this\")(),f=Object.prototype.toString,m=Math.max,p=Math.min,b=function(){return l.Date.now()};function v(e,n,o){var i,a,r,c,s,u,d=0,l=!1,f=!1,v=!0;if(\"function\"!=typeof e)throw new TypeError(t);function y(t){var n=i,o=a;return i=a=void 0,d=t,c=e.apply(o,n)}function h(e){var t=e-u;return void 0===u||t>=n||t<0||f&&e-d>=r}function k(){var e=b();if(h(e))return x(e);s=setTimeout(k,function(e){var t=n-(e-u);return f?p(t,r-(e-d)):t}(e))}function x(e){return s=void 0,v&&i?y(e):(i=a=void 0,c)}function O(){var e=b(),t=h(e);if(i=arguments,a=this,u=e,t){if(void 0===s)return function(e){return d=e,s=setTimeout(k,n),l?y(e):c}(u);if(f)return s=setTimeout(k,n),y(u)}return void 0===s&&(s=setTimeout(k,n)),c}return n=w(n)||0,g(o)&&(l=!!o.leading,r=(f=\"maxWait\"in o)?m(w(o.maxWait)||0,n):r,v=\"trailing\"in o?!!o.trailing:v),O.cancel=function(){void 0!==s&&clearTimeout(s),d=0,i=u=a=s=void 0},O.flush=function(){return void 0===s?c:x(b())},O}function g(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function w(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&f.call(e)==o}(e))return n;if(g(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(i,\"\");var u=r.test(e);return u||c.test(e)?s(e.slice(2),u?2:8):a.test(e)?n:+e}var y=function(e,n,o){var i=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(t);return g(o)&&(i=\"leading\"in o?!!o.leading:i,a=\"trailing\"in o?!!o.trailing:a),v(e,n,{leading:i,maxWait:n,trailing:a})},h=\"Expected a function\",k=NaN,x=\"[object Symbol]\",O=/^\\s+|\\s+$/g,j=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,N=/^0o[0-7]+$/i,z=parseInt,C=\"object\"==typeof e&&e&&e.Object===Object&&e,A=\"object\"==typeof self&&self&&self.Object===Object&&self,q=C||A||Function(\"return this\")(),L=Object.prototype.toString,T=Math.max,M=Math.min,S=function(){return q.Date.now()};function D(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function H(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&L.call(e)==x}(e))return k;if(D(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=D(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(O,\"\");var n=E.test(e);return n||N.test(e)?z(e.slice(2),n?2:8):j.test(e)?k:+e}var $=function(e,t,n){var o,i,a,r,c,s,u=0,d=!1,l=!1,f=!0;if(\"function\"!=typeof e)throw new TypeError(h);function m(t){var n=o,a=i;return o=i=void 0,u=t,r=e.apply(a,n)}function p(e){var n=e-s;return void 0===s||n>=t||n<0||l&&e-u>=a}function b(){var e=S();if(p(e))return v(e);c=setTimeout(b,function(e){var n=t-(e-s);return l?M(n,a-(e-u)):n}(e))}function v(e){return c=void 0,f&&o?m(e):(o=i=void 0,r)}function g(){var e=S(),n=p(e);if(o=arguments,i=this,s=e,n){if(void 0===c)return function(e){return u=e,c=setTimeout(b,t),d?m(e):r}(s);if(l)return c=setTimeout(b,t),m(s)}return void 0===c&&(c=setTimeout(b,t)),r}return t=H(t)||0,D(n)&&(d=!!n.leading,a=(l=\"maxWait\"in n)?T(H(n.maxWait)||0,t):a,f=\"trailing\"in n?!!n.trailing:f),g.cancel=function(){void 0!==c&&clearTimeout(c),u=0,o=s=i=c=void 0},g.flush=function(){return void 0===c?r:v(S())},g},W=function(){};function P(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes);if(function e(t){var n=void 0,o=void 0;for(n=0;n=o.out&&!n.once?a():t>=o.in?e.animated||(function(e,t){t&&t.forEach(function(t){return e.classList.add(t)})}(i,n.animatedClassNames),V(\"aos:in\",i),e.options.id&&V(\"aos:in:\"+e.options.id,i),e.animated=!0):e.animated&&!n.once&&a()}(e,window.pageYOffset)})},Z=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}},ee=function(e,t,n){var o=e.getAttribute(\"data-aos-\"+t);if(void 0!==o){if(\"true\"===o)return!0;if(\"false\"===o)return!1}return o||n},te=function(e,t){return e.forEach(function(e,n){var o=ee(e.node,\"mirror\",t.mirror),i=ee(e.node,\"once\",t.once),a=ee(e.node,\"id\"),r=t.useClassNames&&e.node.getAttribute(\"data-aos\"),c=[t.animatedClassName].concat(r?r.split(\" \"):[]).filter(function(e){return\"string\"==typeof e});t.initClassName&&e.node.classList.add(t.initClassName),e.position={in:function(e,t,n){var o=window.innerHeight,i=ee(e,\"anchor\"),a=ee(e,\"anchor-placement\"),r=Number(ee(e,\"offset\",a?0:t)),c=a||n,s=e;i&&document.querySelectorAll(i)&&(s=document.querySelectorAll(i)[0]);var u=Z(s).top-o;switch(c){case\"top-bottom\":break;case\"center-bottom\":u+=s.offsetHeight/2;break;case\"bottom-bottom\":u+=s.offsetHeight;break;case\"top-center\":u+=o/2;break;case\"center-center\":u+=o/2+s.offsetHeight/2;break;case\"bottom-center\":u+=o/2+s.offsetHeight;break;case\"top-top\":u+=o;break;case\"bottom-top\":u+=o+s.offsetHeight;break;case\"center-top\":u+=o+s.offsetHeight/2}return u+r}(e.node,t.offset,t.anchorPlacement),out:o&&function(e,t){window.innerHeight;var n=ee(e,\"anchor\"),o=ee(e,\"offset\",t),i=e;return n&&document.querySelectorAll(n)&&(i=document.querySelectorAll(n)[0]),Z(i).top+i.offsetHeight-o}(e.node,t.offset)},e.options={once:i,mirror:o,animatedClassNames:c,id:a}}),e},ne=function(){var e=document.querySelectorAll(\"[data-aos]\");return Array.prototype.map.call(e,function(e){return{node:e}})},oe=[],ie=!1,ae={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,mirror:!1,anchorPlacement:\"top-bottom\",startEvent:\"DOMContentLoaded\",animatedClassName:\"aos-animate\",initClassName:\"aos-init\",useClassNames:!1,disableMutationObserver:!1,throttleDelay:99,debounceDelay:50},re=function(){return document.all&&!window.atob},ce=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(ie=!0),ie&&(oe=te(oe,ae),X(oe),window.addEventListener(\"scroll\",y(function(){X(oe,ae.once)},ae.throttleDelay)))},se=function(){if(oe=ne(),de(ae.disable)||re())return ue();ce()},ue=function(){oe.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\"),ae.initClassName&&e.node.classList.remove(ae.initClassName),ae.animatedClassName&&e.node.classList.remove(ae.animatedClassName)})},de=function(e){return!0===e||\"mobile\"===e&&U.mobile()||\"phone\"===e&&U.phone()||\"tablet\"===e&&U.tablet()||\"function\"==typeof e&&!0===e()};return{init:function(e){return ae=I(ae,e),oe=ne(),ae.disableMutationObserver||_.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),ae.disableMutationObserver=!0),ae.disableMutationObserver||_.ready(\"[data-aos]\",se),de(ae.disable)||re()?ue():(document.querySelector(\"body\").setAttribute(\"data-aos-easing\",ae.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",ae.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",ae.delay),-1===[\"DOMContentLoaded\",\"load\"].indexOf(ae.startEvent)?document.addEventListener(ae.startEvent,function(){ce(!0)}):window.addEventListener(\"load\",function(){ce(!0)}),\"DOMContentLoaded\"===ae.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1&&ce(!0),window.addEventListener(\"resize\",$(ce,ae.debounceDelay,!0)),window.addEventListener(\"orientationchange\",$(ce,ae.debounceDelay,!0)),oe)},refresh:ce,refreshHard:se}});\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","!function(e,t){if(\"function\"==typeof define&&define.amd)define([\"exports\"],t);else if(\"undefined\"!=typeof exports)t(exports);else{var o={};t(o),e.bodyScrollLock=o}}(this,function(exports){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);ts.endVal;s.frameVal=n?s.endVal:s.frameVal,s.frameVal=Number(s.frameVal.toFixed(s.options.decimalPlaces)),s.printValue(s.frameVal),i1?s.options.decimal+o[1]:\"\",s.options.useGrouping){e=\"\";for(var l=0,h=n.length;lwindow.scrollY&&t.paused?(t.paused=!1,setTimeout(function(){return t.start()},t.options.scrollSpyDelay),t.options.scrollSpyOnce&&(t.once=!0)):window.scrollY>s&&!t.paused&&t.reset()}},t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold&&this.options.useEasing){this.finalEndVal=t;var n=this.countDown?1:-1;this.endVal=t+n*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;null!==this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,null==this.finalEndVal&&this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \".concat(t),null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","// Public: Create a new SelectorSet.\nexport default function SelectorSet() {\n // Construct new SelectorSet if called as a function.\n if (!(this instanceof SelectorSet)) {\n return new SelectorSet();\n }\n\n // Public: Number of selectors added to the set\n this.size = 0;\n\n // Internal: Incrementing ID counter\n this.uid = 0;\n\n // Internal: Array of String selectors in the set\n this.selectors = [];\n\n // Internal: Map of selector ids to objects\n this.selectorObjects = {};\n\n // Internal: All Object index String names mapping to Index objects.\n this.indexes = Object.create(this.indexes);\n\n // Internal: Used Object index String names mapping to Index objects.\n this.activeIndexes = [];\n}\n\n// Detect prefixed Element#matches function.\nvar docElem = window.document.documentElement;\nvar matches =\n docElem.matches ||\n docElem.webkitMatchesSelector ||\n docElem.mozMatchesSelector ||\n docElem.oMatchesSelector ||\n docElem.msMatchesSelector;\n\n// Public: Check if element matches selector.\n//\n// Maybe overridden with custom Element.matches function.\n//\n// el - An Element\n// selector - String CSS selector\n//\n// Returns true or false.\nSelectorSet.prototype.matchesSelector = function(el, selector) {\n return matches.call(el, selector);\n};\n\n// Public: Find all elements in the context that match the selector.\n//\n// Maybe overridden with custom querySelectorAll function.\n//\n// selectors - String CSS selectors.\n// context - Element context\n//\n// Returns non-live list of Elements.\nSelectorSet.prototype.querySelectorAll = function(selectors, context) {\n return context.querySelectorAll(selectors);\n};\n\n// Public: Array of indexes.\n//\n// name - Unique String name\n// selector - Function that takes a String selector and returns a String key\n// or undefined if it can't be used by the index.\n// element - Function that takes an Element and returns an Array of String\n// keys that point to indexed values.\n//\nSelectorSet.prototype.indexes = [];\n\n// Index by element id\nvar idRe = /^#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'ID',\n selector: function matchIdSelector(sel) {\n var m;\n if ((m = sel.match(idRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementId(el) {\n if (el.id) {\n return [el.id];\n }\n }\n});\n\n// Index by all of its class names\nvar classRe = /^\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'CLASS',\n selector: function matchClassSelector(sel) {\n var m;\n if ((m = sel.match(classRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementClassNames(el) {\n var className = el.className;\n if (className) {\n if (typeof className === 'string') {\n return className.split(/\\s/);\n } else if (typeof className === 'object' && 'baseVal' in className) {\n // className is a SVGAnimatedString\n // global SVGAnimatedString is not an exposed global in Opera 12\n return className.baseVal.split(/\\s/);\n }\n }\n }\n});\n\n// Index by tag/node name: `DIV`, `FORM`, `A`\nvar tagRe = /^((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'TAG',\n selector: function matchTagSelector(sel) {\n var m;\n if ((m = sel.match(tagRe))) {\n return m[0].toUpperCase();\n }\n },\n element: function getElementTagName(el) {\n return [el.nodeName.toUpperCase()];\n }\n});\n\n// Default index just contains a single array of elements.\nSelectorSet.prototype.indexes['default'] = {\n name: 'UNIVERSAL',\n selector: function() {\n return true;\n },\n element: function() {\n return [true];\n }\n};\n\n// Use ES Maps when supported\nvar Map;\nif (typeof window.Map === 'function') {\n Map = window.Map;\n} else {\n Map = (function() {\n function Map() {\n this.map = {};\n }\n Map.prototype.get = function(key) {\n return this.map[key + ' '];\n };\n Map.prototype.set = function(key, value) {\n this.map[key + ' '] = value;\n };\n return Map;\n })();\n}\n\n// Regexps adopted from Sizzle\n// https://github.com/jquery/sizzle/blob/1.7/sizzle.js\n//\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n\n// Internal: Get indexes for selector.\n//\n// selector - String CSS selector\n//\n// Returns Array of {index, key}.\nfunction parseSelectorIndexes(allIndexes, selector) {\n allIndexes = allIndexes.slice(0).concat(allIndexes['default']);\n\n var allIndexesLen = allIndexes.length,\n i,\n j,\n m,\n dup,\n rest = selector,\n key,\n index,\n indexes = [];\n\n do {\n chunker.exec('');\n if ((m = chunker.exec(rest))) {\n rest = m[3];\n if (m[2] || !rest) {\n for (i = 0; i < allIndexesLen; i++) {\n index = allIndexes[i];\n if ((key = index.selector(m[1]))) {\n j = indexes.length;\n dup = false;\n while (j--) {\n if (indexes[j].index === index && indexes[j].key === key) {\n dup = true;\n break;\n }\n }\n if (!dup) {\n indexes.push({ index: index, key: key });\n }\n break;\n }\n }\n }\n }\n } while (m);\n\n return indexes;\n}\n\n// Internal: Find first item in Array that is a prototype of `proto`.\n//\n// ary - Array of objects\n// proto - Prototype of expected item in `ary`\n//\n// Returns object from `ary` if found. Otherwise returns undefined.\nfunction findByPrototype(ary, proto) {\n var i, len, item;\n for (i = 0, len = ary.length; i < len; i++) {\n item = ary[i];\n if (proto.isPrototypeOf(item)) {\n return item;\n }\n }\n}\n\n// Public: Log when added selector falls under the default index.\n//\n// This API should not be considered stable. May change between\n// minor versions.\n//\n// obj - {selector, data} Object\n//\n// SelectorSet.prototype.logDefaultIndexUsed = function(obj) {\n// console.warn(obj.selector, \"could not be indexed\");\n// };\n//\n// Returns nothing.\nSelectorSet.prototype.logDefaultIndexUsed = function() {};\n\n// Public: Add selector to set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.add = function(selector, data) {\n var obj,\n i,\n indexProto,\n key,\n index,\n objs,\n selectorIndexes,\n selectorIndex,\n indexes = this.activeIndexes,\n selectors = this.selectors,\n selectorObjects = this.selectorObjects;\n\n if (typeof selector !== 'string') {\n return;\n }\n\n obj = {\n id: this.uid++,\n selector: selector,\n data: data\n };\n selectorObjects[obj.id] = obj;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n key = selectorIndex.key;\n indexProto = selectorIndex.index;\n\n index = findByPrototype(indexes, indexProto);\n if (!index) {\n index = Object.create(indexProto);\n index.map = new Map();\n indexes.push(index);\n }\n\n if (indexProto === this.indexes['default']) {\n this.logDefaultIndexUsed(obj);\n }\n objs = index.map.get(key);\n if (!objs) {\n objs = [];\n index.map.set(key, objs);\n }\n objs.push(obj);\n }\n\n this.size++;\n selectors.push(selector);\n};\n\n// Public: Remove selector from set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.remove = function(selector, data) {\n if (typeof selector !== 'string') {\n return;\n }\n\n var selectorIndexes,\n selectorIndex,\n i,\n j,\n k,\n selIndex,\n objs,\n obj,\n indexes = this.activeIndexes,\n selectors = (this.selectors = []),\n selectorObjects = this.selectorObjects,\n removedIds = {},\n removeAll = arguments.length === 1;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n\n j = indexes.length;\n while (j--) {\n selIndex = indexes[j];\n if (selectorIndex.index.isPrototypeOf(selIndex)) {\n objs = selIndex.map.get(selectorIndex.key);\n if (objs) {\n k = objs.length;\n while (k--) {\n obj = objs[k];\n if (obj.selector === selector && (removeAll || obj.data === data)) {\n objs.splice(k, 1);\n removedIds[obj.id] = true;\n }\n }\n }\n break;\n }\n }\n }\n\n for (i in removedIds) {\n delete selectorObjects[i];\n this.size--;\n }\n\n for (i in selectorObjects) {\n selectors.push(selectorObjects[i].selector);\n }\n};\n\n// Sort by id property handler.\n//\n// a - Selector obj.\n// b - Selector obj.\n//\n// Returns Number.\nfunction sortById(a, b) {\n return a.id - b.id;\n}\n\n// Public: Find all matching decendants of the context element.\n//\n// context - An Element\n//\n// Returns Array of {selector, data, elements} matches.\nSelectorSet.prototype.queryAll = function(context) {\n if (!this.selectors.length) {\n return [];\n }\n\n var matches = {},\n results = [];\n var els = this.querySelectorAll(this.selectors.join(', '), context);\n\n var i, j, len, len2, el, m, match, obj;\n for (i = 0, len = els.length; i < len; i++) {\n el = els[i];\n m = this.matches(el);\n for (j = 0, len2 = m.length; j < len2; j++) {\n obj = m[j];\n if (!matches[obj.id]) {\n match = {\n id: obj.id,\n selector: obj.selector,\n data: obj.data,\n elements: []\n };\n matches[obj.id] = match;\n results.push(match);\n } else {\n match = matches[obj.id];\n }\n match.elements.push(el);\n }\n }\n\n return results.sort(sortById);\n};\n\n// Public: Match element against all selectors in set.\n//\n// el - An Element\n//\n// Returns Array of {selector, data} matches.\nSelectorSet.prototype.matches = function(el) {\n if (!el) {\n return [];\n }\n\n var i, j, k, len, len2, len3, index, keys, objs, obj, id;\n var indexes = this.activeIndexes,\n matchedIds = {},\n matches = [];\n\n for (i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n keys = index.element(el);\n if (keys) {\n for (j = 0, len2 = keys.length; j < len2; j++) {\n if ((objs = index.map.get(keys[j]))) {\n for (k = 0, len3 = objs.length; k < len3; k++) {\n obj = objs[k];\n id = obj.id;\n if (!matchedIds[id] && this.matchesSelector(el, obj.selector)) {\n matchedIds[id] = true;\n matches.push(obj);\n }\n }\n }\n }\n }\n }\n\n return matches.sort(sortById);\n};\n","import SelectorSet from 'selector-set';\n\nvar bubbleEvents = {};\nvar captureEvents = {};\nvar propagationStopped = new WeakMap();\nvar immediatePropagationStopped = new WeakMap();\nvar currentTargets = new WeakMap();\nvar currentTargetDesc = Object.getOwnPropertyDescriptor(Event.prototype, 'currentTarget');\n\nfunction before(subject, verb, fn) {\n var source = subject[verb];\n\n subject[verb] = function () {\n fn.apply(subject, arguments);\n return source.apply(subject, arguments);\n };\n\n return subject;\n}\n\nfunction matches(selectors, target, reverse) {\n var queue = [];\n var node = target;\n\n do {\n if (node.nodeType !== 1) break;\n\n var _matches = selectors.matches(node);\n\n if (_matches.length) {\n var matched = {\n node: node,\n observers: _matches\n };\n\n if (reverse) {\n queue.unshift(matched);\n } else {\n queue.push(matched);\n }\n }\n } while (node = node.parentElement);\n\n return queue;\n}\n\nfunction trackPropagation() {\n propagationStopped.set(this, true);\n}\n\nfunction trackImmediate() {\n propagationStopped.set(this, true);\n immediatePropagationStopped.set(this, true);\n}\n\nfunction getCurrentTarget() {\n return currentTargets.get(this) || null;\n}\n\nfunction defineCurrentTarget(event, getter) {\n if (!currentTargetDesc) return;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n enumerable: true,\n get: getter || currentTargetDesc.get\n });\n}\n\nfunction canDispatch(event) {\n try {\n event.eventPhase;\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction dispatch(event) {\n if (!canDispatch(event)) return;\n var events = event.eventPhase === 1 ? captureEvents : bubbleEvents;\n var selectors = events[event.type];\n if (!selectors) return;\n var queue = matches(selectors, event.target, event.eventPhase === 1);\n if (!queue.length) return;\n before(event, 'stopPropagation', trackPropagation);\n before(event, 'stopImmediatePropagation', trackImmediate);\n defineCurrentTarget(event, getCurrentTarget);\n\n for (var i = 0, len1 = queue.length; i < len1; i++) {\n if (propagationStopped.get(event)) break;\n var matched = queue[i];\n currentTargets.set(event, matched.node);\n\n for (var j = 0, len2 = matched.observers.length; j < len2; j++) {\n if (immediatePropagationStopped.get(event)) break;\n matched.observers[j].data.call(matched.node, event);\n }\n }\n\n currentTargets[\"delete\"](event);\n defineCurrentTarget(event);\n}\n\nfunction on(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n\n if (!selectors) {\n selectors = new SelectorSet();\n events[name] = selectors;\n document.addEventListener(name, dispatch, capture);\n }\n\n selectors.add(selector, fn);\n}\nfunction off(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n if (!selectors) return;\n selectors.remove(selector, fn);\n if (selectors.size) return;\n delete events[name];\n document.removeEventListener(name, dispatch, capture);\n}\nfunction fire(target, name, detail) {\n return target.dispatchEvent(new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: detail\n }));\n}\n\nexport { fire, off, on };\n","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow = function (_, classNames) { return \"
\"; };\nexports.default = arrow;\n//# sourceMappingURL=arrow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar group_1 = require(\"./group\");\nfunction body(state, classNames) {\n var className = composeClassName_1.default([\n classNames.body,\n [state.isAtTop, classNames.bodyAtTop],\n [state.isAtBottom, classNames.bodyAtBottom],\n [state.isScrollable, classNames.bodyScrollable]\n ]);\n var styleAttr = state.isOpen ?\n \"style=\\\"max-height: \" + state.maxBodyHeight + \"px;\\\"\" : '';\n return (\"\\n \\n
\\n \" + state.groups.map(function (groupState) { return group_1.default(groupState, state, classNames); }).join('') + \"\\n
\\n
\\n
\\n \\n \");\n}\nexports.default = body;\n//# sourceMappingURL=body.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar option_1 = require(\"./option\");\nvar group = function (groupState, state, classNames) {\n var className = composeClassName_1.default([\n classNames.group,\n [groupState.isDisabled, classNames.groupDisabled],\n [groupState.hasLabel, classNames.groupHasLabel]\n ]);\n return (\"\\n
\\n \" + (groupState.hasLabel ?\n \"
\" + groupState.label + \"
\" : '') + \"\\n \" + groupState.options.map(function (optionState) { return option_1.default(optionState, state, classNames); }).join('') + \"\\n
\\n \");\n};\nexports.default = group;\n//# sourceMappingURL=group.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arrow_1 = require(\"./arrow\");\nvar value_1 = require(\"./value\");\nvar head = function (state, classNames) { return (\"\\n
\\n \" + value_1.default(state, classNames) + \"\\n \" + arrow_1.default(state, classNames) + \"\\n \\n
\\n\"); };\nexports.default = head;\n//# sourceMappingURL=head.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nfunction option(optionState, state, classNames) {\n var isSelected = state.selectedOption === optionState;\n var className = composeClassName_1.default([\n classNames.option,\n [isSelected, classNames.optionSelected],\n [optionState === state.focusedOption, classNames.optionFocused],\n [optionState.isDisabled, classNames.optionDisabled]\n ]);\n return (\"\\n \\n \" + optionState.label + \"\\n \\n \");\n}\nexports.default = option;\n//# sourceMappingURL=option.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar composeClassName_1 = require(\"../Shared/Util/composeClassName\");\nvar body_1 = require(\"./body\");\nvar head_1 = require(\"./head\");\nvar root = function (state, classNames) {\n var className = composeClassName_1.default([\n classNames.root,\n [state.isDisabled, classNames.rootDisabled],\n [state.isInvalid, classNames.rootInvalid],\n [state.isOpen, classNames.rootOpen],\n [state.isFocused, classNames.rootFocused],\n [state.hasValue, classNames.rootHasValue],\n [state.isOpenAbove, classNames.rootOpenAbove],\n [state.isOpenBelow, classNames.rootOpenBelow],\n [state.isUseNativeMode, classNames.rootNative]\n ]);\n return (\"\\n \\n \" + head_1.default(state, classNames) + \"\\n \" + (state.isUseNativeMode ? '' : body_1.default(state, classNames)) + \"\\n \\n \");\n};\nexports.default = root;\n//# sourceMappingURL=root.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar value = function (state, classNames) {\n return (\"\\n \\n \" + state.humanReadableValue + \"\\n \\n \");\n};\nexports.default = value;\n//# sourceMappingURL=value.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior = /** @class */ (function () {\n function Behavior() {\n this.showPlaceholderWhenOpen = false;\n this.openOnFocus = false;\n this.closeOnSelect = true;\n this.useNativeUiOnMobile = true;\n this.loop = false;\n this.clampMaxVisibleItems = true;\n this.liveUpdates = false;\n this.maxVisibleItems = 15;\n Object.seal(this);\n }\n return Behavior;\n}());\nexports.default = Behavior;\n//# sourceMappingURL=Behavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Callbacks = /** @class */ (function () {\n function Callbacks() {\n this.onOpen = null;\n this.onClose = null;\n this.onSelect = null;\n this.onOptionClick = null;\n Object.seal(this);\n }\n return Callbacks;\n}());\nexports.default = Callbacks;\n//# sourceMappingURL=Callbacks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ClassNames = /** @class */ (function () {\n function ClassNames() {\n this.root = 'edd-root';\n this.rootOpen = 'edd-root-open';\n this.rootOpenAbove = 'edd-root-open-above';\n this.rootOpenBelow = 'edd-root-open-below';\n this.rootDisabled = 'edd-root-disabled';\n this.rootInvalid = 'edd-root-invalid';\n this.rootFocused = 'edd-root-focused';\n this.rootHasValue = 'edd-root-has-value';\n this.rootNative = 'edd-root-native';\n this.gradientTop = 'edd-gradient-top';\n this.gradientBottom = 'edd-gradient-bottom';\n this.head = 'edd-head';\n this.value = 'edd-value';\n this.arrow = 'edd-arrow';\n this.select = 'edd-select';\n this.body = 'edd-body';\n this.bodyScrollable = 'edd-body-scrollable';\n this.bodyAtTop = 'edd-body-at-top';\n this.bodyAtBottom = 'edd-body-at-bottom';\n this.itemsList = 'edd-items-list';\n this.group = 'edd-group';\n this.groupDisabled = 'edd-group-disabled';\n this.groupHasLabel = 'edd-group-has-label';\n this.groupLabel = 'edd-group-label';\n this.option = 'edd-option';\n this.optionDisabled = 'edd-option-disabled';\n this.optionFocused = 'edd-option-focused';\n this.optionSelected = 'edd-option-selected';\n Object.seal(this);\n }\n return ClassNames;\n}());\nexports.default = ClassNames;\n//# sourceMappingURL=ClassNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Behavior_1 = require(\"./Behavior\");\nvar Callbacks_1 = require(\"./Callbacks\");\nvar ClassNames_1 = require(\"./ClassNames\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.callbacks = new Callbacks_1.default();\n this.classNames = new ClassNames_1.default();\n this.behavior = new Behavior_1.default();\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar Config_1 = require(\"../Config/Config\");\nvar bindEvents_1 = require(\"../Events/bindEvents\");\nvar Renderer_1 = require(\"../Renderer/Renderer\");\nvar dispatchOpen_1 = require(\"../Shared/Util/dispatchOpen\");\nvar pollForSelectChange_1 = require(\"../Shared/Util/pollForSelectChange\");\nvar pollForSelectMutation_1 = require(\"../Shared/Util/pollForSelectMutation\");\nvar closeOthers_1 = require(\"../State/InjectedActions/closeOthers\");\nvar scrollToView_1 = require(\"../State/InjectedActions/scrollToView\");\nvar StateManager_1 = require(\"../State/StateManager\");\nvar StateMapper_1 = require(\"../State/StateMapper\");\nvar cache_1 = require(\"./cache\");\nvar Timers_1 = require(\"./Timers\");\nvar Easydropdown = /** @class */ (function () {\n function Easydropdown(selectElement, options) {\n this.config = helpful_merge_1.default(new Config_1.default(), options, true);\n this.state = StateMapper_1.default.mapFromSelect(selectElement, this.config);\n this.renderer = new Renderer_1.default(this.config.classNames);\n this.dom = this.renderer.render(this.state, selectElement);\n this.timers = new Timers_1.default();\n this.actions = StateManager_1.default.proxyActions(this.state, {\n closeOthers: closeOthers_1.default.bind(null, this, cache_1.default),\n scrollToView: scrollToView_1.default.bind(null, this.dom, this.timers)\n }, this.handleStateUpdate.bind(this));\n this.eventBindings = bindEvents_1.default({\n actions: this.actions,\n config: this.config,\n dom: this.dom,\n state: this.state,\n timers: this.timers\n });\n this.timers.pollChangeIntervalId = pollForSelectChange_1.default(this.dom.select, this.state, this.actions, this.config);\n if (this.config.behavior.liveUpdates) {\n this.timers.pollMutationIntervalId = pollForSelectMutation_1.default(this.dom.select, this.state, this.refresh.bind(this));\n }\n }\n Object.defineProperty(Easydropdown.prototype, \"selectElement\", {\n get: function () {\n return this.dom.select;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Easydropdown.prototype, \"value\", {\n get: function () {\n return this.state.value;\n },\n set: function (nextValue) {\n if (typeof nextValue !== 'string') {\n throw new TypeError('[EasyDropDown] Provided value not a valid string');\n }\n this.dom.select.value = nextValue;\n },\n enumerable: true,\n configurable: true\n });\n Easydropdown.prototype.open = function () {\n dispatchOpen_1.default(this.actions, this.config, this.dom);\n };\n Easydropdown.prototype.close = function () {\n this.actions.close();\n };\n Easydropdown.prototype.refresh = function () {\n this.state = helpful_merge_1.default(this.state, StateMapper_1.default.mapFromSelect(this.dom.select, this.config));\n this.renderer.update(this.state);\n this.dom.group.length = this.dom.option.length = this.dom.item.length = 0;\n Renderer_1.default.queryDomRefs(this.dom, ['group', 'option', 'item']);\n };\n Easydropdown.prototype.validate = function () {\n if (!this.state.isRequired || this.state.hasValue) {\n return true;\n }\n this.actions.invalidate();\n return false;\n };\n Easydropdown.prototype.destroy = function () {\n this.timers.clear();\n this.eventBindings.forEach(function (binding) { return binding.unbind(); });\n this.renderer.destroy();\n var cacheIndex = cache_1.default.indexOf(this);\n cache_1.default.splice(cacheIndex, 1);\n };\n Easydropdown.prototype.handleStateUpdate = function (state, key) {\n var callbacks = this.config.callbacks;\n this.renderer.update(state, key);\n switch (key) {\n case 'bodyStatus': {\n var cb = void 0;\n if (state.isOpen) {\n cb = callbacks.onOpen;\n }\n else {\n cb = callbacks.onClose;\n }\n if (typeof cb === 'function')\n cb();\n break;\n }\n case 'selectedIndex': {\n var cb = callbacks.onSelect;\n if (typeof cb === 'function')\n cb(state.value);\n break;\n }\n case 'isClickSelecting': {\n var cb = callbacks.onOptionClick;\n if (state[key] === false) {\n var nextValue = state.getOptionFromIndex(state.focusedIndex).value;\n if (typeof cb === 'function')\n cb(nextValue);\n }\n }\n }\n };\n return Easydropdown;\n}());\nexports.default = Easydropdown;\n//# sourceMappingURL=Easydropdown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EasydropdownFacade = /** @class */ (function () {\n function EasydropdownFacade(implementation) {\n this.open = implementation.open.bind(implementation);\n this.close = implementation.close.bind(implementation);\n this.refresh = implementation.refresh.bind(implementation);\n this.destroy = implementation.destroy.bind(implementation);\n this.validate = implementation.validate.bind(implementation);\n Object.defineProperties(this, {\n value: {\n get: function () { return implementation.value; },\n set: function (nextValue) { return implementation.value = nextValue; }\n }\n });\n }\n return EasydropdownFacade;\n}());\nexports.default = EasydropdownFacade;\n//# sourceMappingURL=EasydropdownFacade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Timers = /** @class */ (function () {\n function Timers() {\n }\n Timers.prototype.clear = function () {\n var _this = this;\n Object.keys(this).forEach(function (key) { return window.clearInterval(_this[key]); });\n };\n return Timers;\n}());\nexports.default = Timers;\n//# sourceMappingURL=Timers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache = [];\nexports.default = cache;\n//# sourceMappingURL=cache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache_1 = require(\"./cache\");\nvar Easydropdown_1 = require(\"./Easydropdown\");\nvar EasydropdownFacade_1 = require(\"./EasydropdownFacade\");\nfunction factory(selectElementOrSelector, options) {\n if (options === void 0) { options = {}; }\n var selectElement = selectElementOrSelector;\n if (typeof selectElementOrSelector === 'string') {\n selectElement = document.querySelector(selectElementOrSelector);\n }\n if (!(selectElement instanceof HTMLSelectElement)) {\n throw new TypeError('[EasyDropDown] Invalid select element provided');\n }\n if (selectElement.multiple) {\n throw new Error('[EasyDropDown] EasyDropDown does not support the `multiple`' +\n ' attribute on select elements.');\n }\n for (var _i = 0, cache_2 = cache_1.default; _i < cache_2.length; _i++) {\n var cachedInstance = cache_2[_i];\n if (cachedInstance.selectElement === selectElement) {\n return new EasydropdownFacade_1.default(cachedInstance);\n }\n }\n var instance = new Easydropdown_1.default(selectElement, options);\n // @ts-ignore\n cache_1.default.push(instance);\n return new EasydropdownFacade_1.default(instance);\n}\nfunction decorateFactory(factoryFn) {\n factoryFn.all = function (options) {\n if (options === void 0) { options = {}; }\n var selects = document.querySelectorAll('select');\n Array.prototype.forEach.call(selects, function (select) {\n var instance = factory(select, options);\n return instance;\n });\n };\n factoryFn.destroy = function () {\n var cacheCopy = cache_1.default.slice();\n cacheCopy.forEach(function (instance) { return instance.destroy(); });\n };\n return factoryFn;\n}\nvar decoratedFactory = decorateFactory(factory);\nexports.default = decoratedFactory;\n//# sourceMappingURL=factory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UP = 38;\nexports.DOWN = 40;\nexports.SPACE = 32;\nexports.ENTER = 13;\nexports.ESC = 27;\n//# sourceMappingURL=KeyCodes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPTION = '[data-ref~=\"option\"]';\n//# sourceMappingURL=Selectors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpful_merge_1 = require(\"helpful-merge\");\nvar EventBinding = /** @class */ (function () {\n function EventBinding(eventBindingRaw) {\n this.type = '';\n this.target = null;\n this.debounce = 0;\n this.throttle = 0;\n this.handler = null;\n this.boundHandler = null;\n this.passive = false;\n helpful_merge_1.default(this, eventBindingRaw);\n Object.seal(this);\n }\n EventBinding.prototype.unbind = function () {\n if (!this.target)\n return;\n this.target.removeEventListener(this.type, this.boundHandler);\n };\n return EventBinding;\n}());\nexports.default = EventBinding;\n//# sourceMappingURL=EventBinding.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyClick(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.selectOption(optionIndex, config.behavior.closeOnSelect);\n}\nexports.default = handleBodyClick;\n//# sourceMappingURL=handleBodyClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMousedown(e, _a) {\n var actions = _a.actions;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option)\n return;\n actions.startClickSelecting();\n}\nexports.default = handleBodyMousedown;\n//# sourceMappingURL=handleBodyMousedown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar closestParent_1 = require(\"../../Shared/Util/closestParent\");\nvar Selectors = require(\"../Constants/Selectors\");\nfunction handleBodyMouseover(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var option = closestParent_1.default(e.target, Selectors.OPTION, true);\n if (!option || state.isKeying)\n return;\n var optionIndex = Array.prototype.indexOf.call(dom.option, option);\n actions.focusOption(optionIndex);\n}\nexports.default = handleBodyMouseover;\n//# sourceMappingURL=handleBodyMouseover.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar getIsMobilePlatform_1 = require(\"../../Shared/Util/getIsMobilePlatform\");\nfunction handleHeadClick(injectedGetIsMobilePlatform, e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom, config = _a.config;\n if (state.isUseNativeMode)\n return;\n var isMobilePlatform = injectedGetIsMobilePlatform(window.navigator.userAgent);\n e.stopPropagation();\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n if (isMobilePlatform) {\n actions.focus();\n }\n else {\n dom.select.focus();\n }\n }\n else {\n actions.close();\n }\n}\nexports.handleHeadClick = handleHeadClick;\nvar boundHandleHeadClick = handleHeadClick.bind(null, getIsMobilePlatform_1.default);\nexports.default = boundHandleHeadClick;\n//# sourceMappingURL=handleHeadClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleItemsListScroll(e, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n e.stopPropagation();\n var _b = dom.itemsList, offsetHeight = _b.offsetHeight, scrollHeight = _b.scrollHeight, scrollTop = _b.scrollTop;\n if (scrollTop === 0) {\n actions.topOut();\n }\n else if (scrollTop === scrollHeight - offsetHeight) {\n actions.bottomOut();\n }\n else {\n actions.scroll();\n }\n}\nexports.default = handleItemsListScroll;\n//# sourceMappingURL=handleItemsListScroll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectBlur(e, _a) {\n var actions = _a.actions, state = _a.state, config = _a.config;\n if (state.isKeying)\n return;\n actions.blur();\n if (config.behavior.openOnFocus && !state.isClickSelecting)\n actions.close();\n}\nexports.default = handleSelectBlur;\n//# sourceMappingURL=handleSelectBlur.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nfunction handleSelectFocus(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom, state = _a.state;\n actions.focus();\n if (config.behavior.openOnFocus && !state.isUseNativeMode) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectFocus;\n//# sourceMappingURL=handleSelectFocus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleSelectInvalid(e, _a) {\n var actions = _a.actions, config = _a.config, dom = _a.dom;\n actions.invalidate();\n}\nexports.default = handleSelectInvalid;\n//# sourceMappingURL=handleSelectInvalid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar handleSelectKeydownDown_1 = require(\"./handleSelectKeydownDown\");\nvar handleSelectKeydownUp_1 = require(\"./handleSelectKeydownUp\");\nfunction handleSelectKeydown(e, handlerParams) {\n var keyCode = e.keyCode, target = e.target;\n var state = handlerParams.state, actions = handlerParams.actions, dom = handlerParams.dom, config = handlerParams.config;\n if (state.isUseNativeMode || state.isDisabled)\n return;\n switch (keyCode) {\n case KeyCodes.DOWN:\n handleSelectKeydownDown_1.default(e, handlerParams);\n break;\n case KeyCodes.UP:\n handleSelectKeydownUp_1.default(e, handlerParams);\n break;\n case KeyCodes.SPACE:\n if (state.isSearching) {\n e.stopPropagation();\n return;\n }\n case KeyCodes.ENTER:\n e.stopPropagation();\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (state.isOpen) {\n actions.selectOption(state.focusedIndex, config.behavior.closeOnSelect);\n }\n else {\n dispatchOpen_1.default(actions, config, dom);\n }\n break;\n case KeyCodes.ESC:\n actions.close();\n break;\n }\n}\nexports.default = handleSelectKeydown;\n//# sourceMappingURL=handleSelectKeydown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownDown(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, dom = handlerParams.dom, actions = handlerParams.actions, config = handlerParams.config;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex += incrementAmount;\n incrementAmount = 1;\n if (focusedIndex >= state.totalOptions) {\n focusedIndex = config.behavior.loop ? 0 : state.totalOptions - 1;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations <= state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n return;\n }\n}\nexports.default = handleSelectKeydownDown;\n//# sourceMappingURL=handleSelectKeydownDown.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dispatchOpen_1 = require(\"../../Shared/Util/dispatchOpen\");\nvar killSelectReaction_1 = require(\"../../Shared/Util/killSelectReaction\");\nfunction handleSelectKeydownUp(e, handlerParams) {\n var metaKey = e.metaKey, target = e.target;\n var state = handlerParams.state, config = handlerParams.config, dom = handlerParams.dom, actions = handlerParams.actions;\n var focusedIndex = state.focusedIndex > -1 ?\n state.focusedIndex : state.selectedIndex;\n var iterations = 0;\n var incrementAmount = 1;\n e.preventDefault();\n killSelectReaction_1.default(target, handlerParams);\n if (metaKey) {\n incrementAmount = Math.round(Math.max(state.totalOptions / 2, config.behavior.maxVisibleItems));\n }\n do {\n focusedIndex -= incrementAmount;\n incrementAmount = 1;\n if (focusedIndex < 0) {\n focusedIndex = config.behavior.loop ? state.totalOptions - 1 : 0;\n }\n actions.focusOption(focusedIndex, true);\n iterations++;\n } while (state.focusedOption &&\n state.focusedOption.isDisabled &&\n iterations < state.totalOptions);\n if (state.isClosed) {\n dispatchOpen_1.default(actions, config, dom);\n }\n}\nexports.default = handleSelectKeydownUp;\n//# sourceMappingURL=handleSelectKeydownUp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar KeyCodes = require(\"../Constants/KeyCodes\");\nvar SEARCH_RESET_DURATION = 1200;\nfunction handleSelectKeypress(_a, _b, searchResetDuration) {\n var keyCode = _a.keyCode;\n var actions = _b.actions, timers = _b.timers, state = _b.state;\n if (searchResetDuration === void 0) { searchResetDuration = SEARCH_RESET_DURATION; }\n if (state.isUseNativeMode || [KeyCodes.UP, KeyCodes.DOWN].includes(keyCode))\n return;\n window.clearTimeout(timers.searchTimeoutId);\n actions.search();\n timers.searchTimeoutId = window.setTimeout(function () { return actions.resetSearch(); }, searchResetDuration);\n}\nexports.default = handleSelectKeypress;\n//# sourceMappingURL=handleSelectKeypress.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleWindowClick(_, _a) {\n var state = _a.state, actions = _a.actions, dom = _a.dom;\n if (!state.isOpen)\n return;\n actions.close();\n dom.select.blur();\n}\nexports.default = handleWindowClick;\n//# sourceMappingURL=handleWindowClick.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar throttle_1 = require(\"../Shared/Util/throttle\");\nvar EventBinding_1 = require(\"./EventBinding\");\nvar getEventsList_1 = require(\"./getEventsList\");\nfunction bindEvent(handlerParams, eventBindingRaw) {\n var eventBinding = new EventBinding_1.default(eventBindingRaw);\n if (!eventBinding.target)\n return eventBinding;\n var boundHandler = function (e) { return eventBinding.handler(e, handlerParams); };\n if (eventBinding.throttle > 0) {\n eventBinding.boundHandler = throttle_1.default(boundHandler, eventBinding.throttle);\n }\n else {\n eventBinding.boundHandler = boundHandler;\n }\n eventBinding.target.addEventListener(eventBinding.type, eventBinding.boundHandler);\n return eventBinding;\n}\nexports.bindEvent = bindEvent;\nfunction bindEvents(handlerParams) {\n return getEventsList_1.default(handlerParams.dom).map(bindEvent.bind(null, handlerParams));\n}\nexports.default = bindEvents;\n//# sourceMappingURL=bindEvents.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar handleBodyClick_1 = require(\"./Handlers/handleBodyClick\");\nvar handleBodyMousedown_1 = require(\"./Handlers/handleBodyMousedown\");\nvar handleBodyMouseover_1 = require(\"./Handlers/handleBodyMouseover\");\nvar handleHeadClick_1 = require(\"./Handlers/handleHeadClick\");\nvar handleItemsListScroll_1 = require(\"./Handlers/handleItemsListScroll\");\nvar handleSelectBlur_1 = require(\"./Handlers/handleSelectBlur\");\nvar handleSelectFocus_1 = require(\"./Handlers/handleSelectFocus\");\nvar handleSelectInvalid_1 = require(\"./Handlers/handleSelectInvalid\");\nvar handleSelectKeydown_1 = require(\"./Handlers/handleSelectKeydown\");\nvar handleSelectKeypress_1 = require(\"./Handlers/handleSelectKeypress\");\nvar handleWindowClick_1 = require(\"./Handlers/handleWindowClick\");\nvar handleWindowClick_2 = require(\"./Handlers/handleWindowClick\");\nvar getEventsList = function (dom) { return [\n {\n target: dom.head,\n type: 'click',\n handler: handleHeadClick_1.default\n },\n {\n target: dom.body,\n type: 'mousedown',\n handler: handleBodyMousedown_1.default\n },\n {\n target: dom.body,\n type: 'click',\n handler: handleBodyClick_1.default\n },\n {\n target: dom.body,\n type: 'mouseover',\n handler: handleBodyMouseover_1.default\n },\n {\n target: dom.itemsList,\n type: 'scroll',\n handler: handleItemsListScroll_1.default\n },\n {\n target: dom.select,\n type: 'keydown',\n handler: handleSelectKeydown_1.default\n },\n {\n target: dom.select,\n type: 'invalid',\n handler: handleSelectInvalid_1.default\n },\n {\n target: dom.select,\n type: 'keypress',\n handler: handleSelectKeypress_1.default\n },\n {\n target: dom.select,\n type: 'focus',\n handler: handleSelectFocus_1.default\n },\n {\n target: dom.select,\n type: 'blur',\n handler: handleSelectBlur_1.default\n },\n {\n target: document.documentElement,\n type: 'click',\n handler: handleWindowClick_1.default\n },\n {\n target: window,\n type: 'resize',\n handler: handleWindowClick_2.default,\n throttle: 100\n }\n]; };\nexports.default = getEventsList;\n//# sourceMappingURL=getEventsList.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AttributeChangeType;\n(function (AttributeChangeType) {\n AttributeChangeType[\"ADD\"] = \"ADD\";\n AttributeChangeType[\"EDIT\"] = \"EDIT\";\n AttributeChangeType[\"REMOVE\"] = \"REMOVE\";\n})(AttributeChangeType || (AttributeChangeType = {}));\nexports.default = AttributeChangeType;\n//# sourceMappingURL=AttributeChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DomChangeType;\n(function (DomChangeType) {\n DomChangeType[\"NONE\"] = \"NONE\";\n DomChangeType[\"FULL\"] = \"FULL\";\n DomChangeType[\"REPLACE\"] = \"REPLACE\";\n DomChangeType[\"INNER\"] = \"INNER\";\n DomChangeType[\"OUTER\"] = \"OUTER\";\n})(DomChangeType = exports.DomChangeType || (exports.DomChangeType = {}));\nexports.default = DomChangeType;\n//# sourceMappingURL=DomChangeType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Dom = /** @class */ (function () {\n function Dom() {\n this.select = null;\n this.root = null;\n this.head = null;\n this.value = null;\n this.body = null;\n this.arrow = null;\n this.itemsList = null;\n this.item = [];\n this.group = [];\n this.option = [];\n }\n Dom.prototype.sumItemsHeight = function (max) {\n if (max === void 0) { max = Infinity; }\n var totalHeight = 0;\n for (var i = 0, item = void 0; (item = this.item[i]); i++) {\n if (i === max)\n break;\n totalHeight += item.offsetHeight;\n }\n return totalHeight;\n };\n return Dom;\n}());\nexports.default = Dom;\n//# sourceMappingURL=Dom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PatchCommand = /** @class */ (function () {\n function PatchCommand() {\n this.newNode = null;\n this.newInnerHtml = '';\n this.newTextContent = '';\n this.attributeChanges = [];\n this.childCommands = [];\n this.index = null;\n }\n return PatchCommand;\n}());\nexports.default = PatchCommand;\n//# sourceMappingURL=PatchCommand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar root_1 = require(\"../Components/root\");\nvar createDomElementFromHtml_1 = require(\"../Shared/Util/createDomElementFromHtml\");\nvar Dom_1 = require(\"./Dom\");\nvar domDiff_1 = require(\"./domDiff\");\nvar domPatch_1 = require(\"./domPatch\");\nvar Renderer = /** @class */ (function () {\n function Renderer(classNames) {\n this.dom = new Dom_1.default();\n this.classNames = classNames;\n }\n Renderer.prototype.render = function (state, selectElement) {\n var html = root_1.default(state, this.classNames);\n var rootElement = createDomElementFromHtml_1.default(html);\n this.dom = new Dom_1.default();\n this.dom.root = rootElement;\n this.dom.option.length = this.dom.group.length = 0;\n Renderer.queryDomRefs(this.dom);\n this.injectSelect(selectElement);\n return this.dom;\n };\n Renderer.prototype.update = function (state, key) {\n var nextHtml = root_1.default(state, this.classNames);\n var nextRoot = createDomElementFromHtml_1.default(nextHtml);\n var diffCommand = domDiff_1.default(this.dom.root, nextRoot);\n domPatch_1.default(this.dom.root, diffCommand);\n if (key === 'selectedIndex') {\n this.syncSelectWithValue(state.value);\n }\n };\n Renderer.prototype.destroy = function () {\n this.dom.select.classList.remove(this.classNames.select);\n try {\n this.dom.root.parentElement.replaceChild(this.dom.select, this.dom.root);\n }\n catch (err) { /**/ }\n };\n Renderer.prototype.injectSelect = function (selectElement) {\n var parent = selectElement.parentElement;\n var tempSelect = this.dom.select;\n if (!parent)\n throw new Error('[EasyDropDown] The provided `` element\");\n }\n }\n return Object.seal(state);\n };\n StateMapper.mapGroup = function (group) {\n if (group === void 0) { group = null; }\n return helpful_merge_1.default(new Group_1.default(), {\n label: group ? group.label : '',\n isDisabled: group ? group.disabled : false\n });\n };\n StateMapper.mapOption = function (option, group) {\n if (group === void 0) { group = null; }\n if (!(option instanceof HTMLOptionElement))\n throw new TypeError('[EasyDropDown] Invalid markup structure');\n var isParentGroupDisabled = group !== null && group.disabled;\n return helpful_merge_1.default(new Option_1.default(), {\n label: option.textContent,\n value: option.value,\n isDisabled: option.disabled || isParentGroupDisabled\n });\n };\n return StateMapper;\n}());\nexports.default = StateMapper;\n//# sourceMappingURL=StateMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CollisionType_1 = require(\"../Shared/Util/Constants/CollisionType\");\nvar BodyStatus_1 = require(\"./Constants/BodyStatus\");\nvar ScrollStatus_1 = require(\"./Constants/ScrollStatus\");\nvar resolveActions = function (state) { return ({\n focus: function () {\n state.isFocused = true;\n },\n blur: function () {\n state.isFocused = false;\n },\n invalidate: function () {\n state.isInvalid = true;\n },\n validate: function () {\n state.isInvalid = false;\n },\n topOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_TOP;\n },\n bottomOut: function () {\n state.scrollStatus = ScrollStatus_1.default.AT_BOTTOM;\n },\n scroll: function () {\n state.scrollStatus = ScrollStatus_1.default.SCROLLED;\n },\n makeScrollable: function () {\n state.isScrollable = true;\n },\n makeUnscrollable: function () {\n state.isScrollable = false;\n },\n open: function (maxBodyHeight, collisionType, isScrollable) {\n if (state.isDisabled)\n return;\n this.closeOthers();\n switch (collisionType) {\n case CollisionType_1.default.NONE:\n case CollisionType_1.default.TOP:\n state.bodyStatus = BodyStatus_1.default.OPEN_BELOW;\n break;\n case CollisionType_1.default.BOTTOM:\n state.bodyStatus = BodyStatus_1.default.OPEN_ABOVE;\n break;\n }\n state.isScrollable = isScrollable;\n state.maxBodyHeight = maxBodyHeight;\n this.scrollToView(state, true);\n },\n close: function () {\n state.bodyStatus = BodyStatus_1.default.CLOSED;\n state.focusedIndex = -1;\n this.blur();\n },\n startClickSelecting: function () {\n state.isClickSelecting = true;\n },\n selectOption: function (index, close) {\n if (close === void 0) { close = true; }\n var optionAtIndex = state.getOptionFromIndex(index);\n state.isClickSelecting = false;\n if (index > -1 && (!optionAtIndex || optionAtIndex.isDisabled))\n return;\n state.selectedIndex = index;\n if (state.isInvalid && state.hasValue) {\n this.validate();\n }\n if (state.isSearching) {\n this.scrollToView(state);\n }\n else if (close) {\n this.close();\n }\n },\n focusOption: function (index, shouldScrollToView) {\n if (shouldScrollToView === void 0) { shouldScrollToView = false; }\n var scrollToMiddle = Math.abs(index - state.focusedIndex) > 1;\n state.focusedIndex = index;\n if (shouldScrollToView) {\n this.scrollToView(state, scrollToMiddle);\n }\n },\n search: function () {\n state.isSearching = true;\n },\n resetSearch: function () {\n state.isSearching = false;\n },\n keying: function () {\n state.isKeying = true;\n },\n resetKeying: function () {\n state.isKeying = false;\n },\n useNative: function () {\n state.isUseNativeMode = true;\n }\n}); };\nexports.default = resolveActions;\n//# sourceMappingURL=resolveActions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"custom-event-polyfill\");\nrequire(\"./Shared/Polyfills/Element.matches\");\nvar factory_1 = require(\"./Easydropdown/factory\");\nexports.default = factory_1.default;\n//# sourceMappingURL=index.js.map","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/**\n * Flickity fade v1.0.0\n * Fade between Flickity slides\n */\n\n/* jshint browser: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( this, function factory( Flickity, utils ) {\n\n// ---- Slide ---- //\n\nvar Slide = Flickity.Slide;\n\nvar slideUpdateTarget = Slide.prototype.updateTarget;\nSlide.prototype.updateTarget = function() {\n slideUpdateTarget.apply( this, arguments );\n if ( !this.parent.options.fade ) {\n return;\n }\n // position cells at selected target\n var slideTargetX = this.target - this.x;\n var firstCellX = this.cells[0].x;\n this.cells.forEach( function( cell ) {\n var targetX = cell.x - firstCellX - slideTargetX;\n cell.renderPosition( targetX );\n });\n};\n\nSlide.prototype.setOpacity = function( alpha ) {\n this.cells.forEach( function( cell ) {\n cell.element.style.opacity = alpha;\n });\n};\n\n// ---- Flickity ---- //\n\nvar proto = Flickity.prototype;\n\nFlickity.createMethods.push('_createFade');\n\nproto._createFade = function() {\n this.fadeIndex = this.selectedIndex;\n this.prevSelectedIndex = this.selectedIndex;\n this.on( 'select', this.onSelectFade );\n this.on( 'dragEnd', this.onDragEndFade );\n this.on( 'settle', this.onSettleFade );\n this.on( 'activate', this.onActivateFade );\n this.on( 'deactivate', this.onDeactivateFade );\n};\n\nvar updateSlides = proto.updateSlides;\nproto.updateSlides = function() {\n updateSlides.apply( this, arguments );\n if ( !this.options.fade ) {\n return;\n }\n // set initial opacity\n this.slides.forEach( function( slide, i ) {\n var alpha = i == this.selectedIndex ? 1 : 0;\n slide.setOpacity( alpha );\n }, this );\n};\n\n/* ---- events ---- */\n\nproto.onSelectFade = function() {\n // in case of resize, keep fadeIndex within current count\n this.fadeIndex = Math.min( this.prevSelectedIndex, this.slides.length - 1 );\n this.prevSelectedIndex = this.selectedIndex;\n};\n\nproto.onSettleFade = function() {\n delete this.didDragEnd;\n if ( !this.options.fade ) {\n return;\n }\n // set full and 0 opacity on selected & faded slides\n this.selectedSlide.setOpacity( 1 );\n var fadedSlide = this.slides[ this.fadeIndex ];\n if ( fadedSlide && this.fadeIndex != this.selectedIndex ) {\n this.slides[ this.fadeIndex ].setOpacity( 0 );\n }\n};\n\nproto.onDragEndFade = function() {\n // set flag\n this.didDragEnd = true;\n};\n\nproto.onActivateFade = function() {\n if ( this.options.fade ) {\n this.element.classList.add('is-fade');\n }\n};\n\nproto.onDeactivateFade = function() {\n if ( !this.options.fade ) {\n return;\n }\n this.element.classList.remove('is-fade');\n // reset opacity\n this.slides.forEach( function( slide ) {\n slide.setOpacity('');\n });\n};\n\n/* ---- position & fading ---- */\n\nvar positionSlider = proto.positionSlider;\nproto.positionSlider = function() {\n if ( !this.options.fade ) {\n positionSlider.apply( this, arguments );\n return;\n }\n\n this.fadeSlides();\n this.dispatchScrollEvent();\n};\n\nvar positionSliderAtSelected = proto.positionSliderAtSelected;\nproto.positionSliderAtSelected = function() {\n if ( this.options.fade ) {\n // position fade slider at origin\n this.setTranslateX( 0 );\n }\n positionSliderAtSelected.apply( this, arguments );\n};\n\nproto.fadeSlides = function() {\n if ( this.slides.length < 2 ) {\n return;\n }\n // get slides to fade-in & fade-out\n var indexes = this.getFadeIndexes();\n var fadeSlideA = this.slides[ indexes.a ];\n var fadeSlideB = this.slides[ indexes.b ];\n var distance = this.wrapDifference( fadeSlideA.target, fadeSlideB.target );\n var progress = this.wrapDifference( fadeSlideA.target, -this.x );\n progress = progress / distance;\n\n fadeSlideA.setOpacity( 1 - progress );\n fadeSlideB.setOpacity( progress );\n\n // hide previous slide\n var fadeHideIndex = indexes.a;\n if ( this.isDragging ) {\n fadeHideIndex = progress > 0.5 ? indexes.a : indexes.b;\n }\n var isNewHideIndex = this.fadeHideIndex != undefined &&\n this.fadeHideIndex != fadeHideIndex &&\n this.fadeHideIndex != indexes.a &&\n this.fadeHideIndex != indexes.b;\n if ( isNewHideIndex ) {\n // new fadeHideSlide set, hide previous\n this.slides[ this.fadeHideIndex ].setOpacity( 0 );\n }\n this.fadeHideIndex = fadeHideIndex;\n};\n\nproto.getFadeIndexes = function() {\n if ( !this.isDragging && !this.didDragEnd ) {\n return {\n a: this.fadeIndex,\n b: this.selectedIndex,\n };\n }\n if ( this.options.wrapAround ) {\n return this.getFadeDragWrapIndexes();\n } else {\n return this.getFadeDragLimitIndexes();\n }\n};\n\nproto.getFadeDragWrapIndexes = function() {\n var distances = this.slides.map( function( slide, i ) {\n return this.getSlideDistance( -this.x, i );\n }, this );\n var absDistances = distances.map( function( distance ) {\n return Math.abs( distance );\n });\n var minDistance = Math.min.apply( Math, absDistances );\n var closestIndex = absDistances.indexOf( minDistance );\n var distance = distances[ closestIndex ];\n var len = this.slides.length;\n\n var delta = distance >= 0 ? 1 : -1;\n return {\n a: closestIndex,\n b: utils.modulo( closestIndex + delta, len ),\n };\n};\n\nproto.getFadeDragLimitIndexes = function() {\n // calculate closest previous slide\n var dragIndex = 0;\n for ( var i=0; i < this.slides.length - 1; i++ ) {\n var slide = this.slides[i];\n if ( -this.x < slide.target ) {\n break;\n }\n dragIndex = i;\n }\n return {\n a: dragIndex,\n b: dragIndex + 1,\n };\n};\n\nproto.wrapDifference = function( a, b ) {\n var diff = b - a;\n\n if ( !this.options.wrapAround ) {\n return diff;\n }\n\n var diffPlus = diff + this.slideableWidth;\n var diffMinus = diff - this.slideableWidth;\n if ( Math.abs( diffPlus ) < Math.abs( diff ) ) {\n diff = diffPlus;\n }\n if ( Math.abs( diffMinus ) < Math.abs( diff ) ) {\n diff = diffMinus;\n }\n return diff;\n};\n\n// ---- wrapAround ---- //\n\nvar _getWrapShiftCells = proto._getWrapShiftCells;\nproto._getWrapShiftCells = function() {\n if ( !this.options.fade ) {\n _getWrapShiftCells.apply( this, arguments );\n }\n};\n\nvar shiftWrapCells = proto.shiftWrapCells;\nproto.shiftWrapCells = function() {\n if ( !this.options.fade ) {\n shiftWrapCells.apply( this, arguments );\n }\n};\n\nreturn Flickity;\n\n}));\n","/*!\n * Flickity sync v2.0.0\n * enable sync for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n'use strict';\n\n// -------------------------- sync prototype -------------------------- //\n\n// Flickity.defaults.sync = false;\n\nFlickity.createMethods.push('_createSync');\n\nFlickity.prototype._createSync = function() {\n this.syncers = {};\n var syncOption = this.options.sync;\n\n this.on( 'destroy', this.unsyncAll );\n\n if ( !syncOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initSyncCompanion() {\n _this.sync( syncOption );\n });\n};\n\n/**\n * sync\n * @param {Element} or {String} elem\n */\nFlickity.prototype.sync = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n if ( !companion ) {\n return;\n }\n // two hearts, that beat as one\n this._syncCompanion( companion );\n companion._syncCompanion( this );\n};\n\n/**\n * @param {Flickity} companion\n */\nFlickity.prototype._syncCompanion = function( companion ) {\n var _this = this;\n function syncListener() {\n var index = _this.selectedIndex;\n // do not select if already selected, prevent infinite loop\n if ( companion.selectedIndex != index ) {\n companion.select( index );\n }\n }\n this.on( 'select', syncListener );\n // keep track of all synced flickities\n // hold on to listener to unsync\n this.syncers[ companion.guid ] = {\n flickity: companion,\n listener: syncListener\n };\n};\n\n/**\n * unsync\n * @param {Element} or {String} elem\n */\nFlickity.prototype.unsync = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n this._unsync( companion );\n};\n\n/**\n * @param {Flickity} companion\n */\nFlickity.prototype._unsync = function( companion ) {\n if ( !companion ) {\n return;\n }\n // I love you but I've chosen darkness\n this._unsyncCompanion( companion );\n companion._unsyncCompanion( this );\n};\n\n/**\n * @param {Flickity} companion\n */\nFlickity.prototype._unsyncCompanion = function( companion ) {\n var id = companion.guid;\n var syncer = this.syncers[ id ];\n this.off( 'select', syncer.listener );\n delete this.syncers[ id ];\n};\n\nFlickity.prototype.unsyncAll = function() {\n for ( var id in this.syncers ) {\n var syncer = this.syncers[ id ];\n this._unsync( syncer.flickity );\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar Messages = require(\"./Messages\");\nvar Config = /** @class */ (function () {\n function Config() {\n this.deep = false;\n this.useReferenceIfTargetUnset = false;\n this.useReferenceIfArray = false;\n this.preserveTypeIfTargetUnset = false;\n this.includeReadOnly = false;\n this.includeNonEmurable = false;\n this.arrayStrategy = ArrayStrategy_1.default.REPLACE;\n this.errorMessage = Messages.MERGE_ERROR;\n Object.seal(this);\n }\n return Config;\n}());\nexports.default = Config;\n//# sourceMappingURL=Config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArrayStrategy;\n(function (ArrayStrategy) {\n ArrayStrategy[\"PUSH\"] = \"PUSH\";\n ArrayStrategy[\"REPLACE\"] = \"REPLACE\";\n})(ArrayStrategy || (ArrayStrategy = {}));\nexports.default = ArrayStrategy;\n//# sourceMappingURL=ArrayStrategy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar FluentMerge = /** @class */ (function () {\n function FluentMerge() {\n this.target = null;\n this.sources = [];\n this.config = {};\n }\n /**\n * Supplies a fluent merge instance with a target object to merge into and return.\n */\n FluentMerge.prototype.to = function (target) {\n this.target = target;\n return this;\n };\n /**\n * Supplies a fluent merge instance with one or more source objects to merge from, in right to left order.\n */\n FluentMerge.prototype.from = function () {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n this.sources = sources;\n return this;\n };\n /**\n * Supplies a fluent merge instance with a configuration object of one or more options.\n */\n FluentMerge.prototype.with = function (options) {\n this.config = options;\n return this;\n };\n /**\n * Executes a fluent merge instance, merging all provided sources into the\n * target, as per any provided configuration, and returning a reference to\n * the target.\n */\n FluentMerge.prototype.exec = function () {\n var _this = this;\n return this.sources.reduce(function (target, source) { return merge_1.default(target, source, _this.config); }, this.target || {});\n };\n return FluentMerge;\n}());\nexports.default = FluentMerge;\n//# sourceMappingURL=FluentMerge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MERGE_ERROR = function (offender, suggestion) {\n if (suggestion === void 0) { suggestion = ''; }\n return \"Unknown property \\\"\" + offender + \"\\\"\" + (suggestion ? \". Did you mean \\\"\" + suggestion + \"\\\"?\" : '');\n};\nexports.TYPE_ERROR_TARGET = function (target) {\n return \"[Helpful Merge] Target \\\"\" + target + \"\\\" must be a valid object\";\n};\nexports.TYPE_ERROR_SOURCE = function (source) {\n return \"[Helpful Merge] Source \\\"\" + source + \"\\\" must be a valid object\";\n};\nexports.INVALID_ARRAY_STRATEGY = function (strategy) {\n return \"[Helpful Merge] Invalid array strategy \\\"\" + strategy + \"\\\"\";\n};\n//# sourceMappingURL=Messages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction deriveCustoTypeInstance(_a) {\n var constructor = _a.constructor;\n if (typeof constructor === 'function' && constructor !== Object) {\n return new constructor();\n }\n return {};\n}\nexports.default = deriveCustoTypeInstance;\n//# sourceMappingURL=deriveCustomTypeInstance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction handleMergeError(err, target, offendingKey, message) {\n // Rethrow if any of the following:\n // - offending key already exists on target\n // - object not sealed\n // - is extensible\n // - error not a TypeError\n if (Object.hasOwnProperty.call(target, offendingKey) ||\n !Object.isSealed(target) ||\n Object.isExtensible(target) ||\n !(err instanceof TypeError))\n throw err;\n var reducer = reduceBestMatch.bind(null, offendingKey, offendingKey.toLowerCase());\n var primer = { key: '', delta: Infinity, totalMatching: 0 };\n // Iterate through keys in target, for each key, compare with\n // the offending key. Greatest number of matching characters wins.\n var bestMatch = Object.keys(target).reduce(reducer, primer);\n var suggestion = bestMatch && bestMatch.totalMatching > 1 ? bestMatch.key : '';\n throw new TypeError(message(offendingKey, suggestion));\n}\n/**\n * Compares current key with current best match.\n */\nfunction reduceBestMatch(offendingKeyLower, offendingKey, currBestMatch, currKey) {\n var totalMatching = getTotalMatching(currKey.toLowerCase(), offendingKeyLower);\n var delta = Math.abs(currKey.length - offendingKey.length);\n if (totalMatching > currBestMatch.totalMatching ||\n (totalMatching === currBestMatch.totalMatching && delta < currBestMatch.delta)) {\n // If a greater number of matching characters, or the same\n // number, but a lesser delta, usurp the best match\n return { key: currKey, delta: delta, totalMatching: totalMatching };\n }\n return currBestMatch;\n}\n/**\n * Returns the number of common, consecutive characters\n * between two strings.\n */\nfunction getTotalMatching(possibleKey, offendingKey) {\n var longer = possibleKey.length > offendingKey.length ? possibleKey : offendingKey;\n var shorter = longer === possibleKey ? offendingKey : possibleKey;\n var leftPointer = 0;\n var leftInnerPointer = 0;\n var leftTotalMatching = 0;\n var lastCommonIndex = -1;\n for (; leftPointer < longer.length; leftPointer++) {\n while (leftTotalMatching === 0 &&\n longer[leftPointer] !== shorter[leftInnerPointer] &&\n leftInnerPointer < shorter.length) {\n // No match at present, move innerPointer through all possible\n // indices until a match is found\n leftInnerPointer++;\n }\n if (longer[leftPointer] === shorter[leftInnerPointer]) {\n // Match found\n if (lastCommonIndex !== leftPointer - 1) {\n // If beginning of a new match, reset total common\n leftTotalMatching = 0;\n }\n lastCommonIndex = leftPointer;\n leftTotalMatching++;\n leftInnerPointer++;\n // Whole word matched, end\n if (leftTotalMatching === shorter.length)\n break;\n }\n else if (leftTotalMatching > 1) {\n // No match, but at least two common characters found, end\n break;\n }\n else {\n // No match at this index, reset\n leftTotalMatching = leftInnerPointer = 0;\n }\n }\n lastCommonIndex = -1;\n var rightPointer = 0;\n var rightInnerPointer = 0;\n var rightTotalMatching = 0;\n var longerLastIndex = longer.length - 1;\n var shorterLastIndex = shorter.length - 1;\n // As above, but from right to left\n for (; rightPointer < longer.length - leftPointer; rightPointer++) {\n while (rightTotalMatching === 0 &&\n longer[longerLastIndex - rightPointer] !== shorter[shorterLastIndex - rightInnerPointer] &&\n rightInnerPointer < shorter.length) {\n rightInnerPointer++;\n }\n if (longer[longerLastIndex - rightPointer] === shorter[shorterLastIndex - rightInnerPointer]) {\n if (lastCommonIndex !== rightPointer - 1)\n rightTotalMatching = 0;\n lastCommonIndex = rightPointer;\n rightTotalMatching++;\n rightInnerPointer++;\n }\n else if (rightTotalMatching > 1) {\n break;\n }\n else {\n rightTotalMatching = rightInnerPointer = 0;\n }\n }\n return Math.min(shorter.length, leftTotalMatching + rightTotalMatching);\n}\nexports.getTotalMatching = getTotalMatching;\nexports.default = handleMergeError;\n//# sourceMappingURL=handleMergeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"./merge\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nexports.ArrayStrategy = ArrayStrategy_1.default;\nexports.default = merge_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Config_1 = require(\"./Config\");\nvar ArrayStrategy_1 = require(\"./Constants/ArrayStrategy\");\nvar deriveCustomTypeInstance_1 = require(\"./deriveCustomTypeInstance\");\nvar FluentMerge_1 = require(\"./FluentMerge\");\nvar handleMergeError_1 = require(\"./handleMergeError\");\nvar Messages = require(\"./Messages\");\nfunction merge(target, source, options) {\n if (options === void 0) { options = null; }\n var isClientSide = typeof window !== 'undefined';\n var sourceKeys = [];\n var config;\n if (options instanceof Config_1.default) {\n config = options;\n }\n else {\n config = new Config_1.default();\n }\n if (typeof options === 'boolean' && options === true) {\n config.deep = true;\n }\n else if (options && config !== options && typeof options === 'object') {\n merge(config, options);\n if ([ArrayStrategy_1.default.PUSH, ArrayStrategy_1.default.REPLACE].indexOf(config.arrayStrategy) < 0) {\n throw RangeError(Messages.INVALID_ARRAY_STRATEGY(config.arrayStrategy));\n }\n }\n if (!target || typeof target !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_TARGET(target));\n }\n if (!source || typeof source !== 'object') {\n throw new TypeError(Messages.TYPE_ERROR_SOURCE(source));\n }\n if (Array.isArray(source)) {\n if (config.arrayStrategy === ArrayStrategy_1.default.PUSH) {\n // Merge arrays via push()\n target.push.apply(target, source);\n return target;\n }\n for (var i = 0; i < source.length; i++) {\n sourceKeys.push(i.toString());\n }\n }\n else {\n sourceKeys = Object.getOwnPropertyNames(source);\n }\n for (var _i = 0, sourceKeys_1 = sourceKeys; _i < sourceKeys_1.length; _i++) {\n var key = sourceKeys_1[_i];\n var descriptor = Object.getOwnPropertyDescriptor(source, key);\n // Skip read-only properties\n if (typeof descriptor.get === 'function' && !descriptor.set && !config.includeReadOnly)\n continue;\n // Skip non-enumerable properties\n if (!descriptor.enumerable && !config.includeNonEmurable)\n continue;\n if (!config.deep ||\n typeof source[key] !== 'object' ||\n (isClientSide && source[key] instanceof window.Node) ||\n (isClientSide && source[key] === window.document.body) ||\n (isClientSide && source[key] === window.document.documentElement) ||\n source[key] === null ||\n (Array.isArray(source[key]) && config.useReferenceIfArray) ||\n (!target[key] && config.useReferenceIfTargetUnset)) {\n // If:\n // - Shallow merge\n // - All non-object primatives\n // - , , or DOM Nodes\n // - Null pointers\n // - Arrays, if `useReferenceIfArray` set\n // - Target prop null or undefined and `useRererenceIfTargetUnset` set\n try {\n target[key] = source[key];\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n else {\n // Deep merge objects/arrays\n if (!Object.prototype.hasOwnProperty.call(target, key) || target[key] === null) {\n // If property does not exist on target, instantiate an empty\n // object, custom type or array to merge into\n try {\n target[key] = Array.isArray(source[key]) ?\n [] : config.preserveTypeIfTargetUnset ?\n deriveCustomTypeInstance_1.default(source[key]) : {};\n }\n catch (err) {\n handleMergeError_1.default(err, target, key, config.errorMessage);\n }\n }\n // Recursively deep copy objects or arrays\n merge(target[key], source[key], config);\n }\n }\n return target;\n}\nvar createFluent = function (method) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = new FluentMerge_1.default())[method].apply(_a, args);\n var _a;\n}; };\nObject\n .keys(FluentMerge_1.default.prototype)\n .forEach(function (method) { return merge[method] = createFluent(method); });\nexports.default = merge;\n//# sourceMappingURL=merge.js.map","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(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\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n 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}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nexport { _createClass as _, _classCallCheck as a, _objectWithoutProperties as b, _typeof as c, _inherits as d, _createSuper as e, _slicedToArray as f, _get as g, _getPrototypeOf as h, _set as i, _toConsumableArray as j };\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-67bba7fb.js';\n\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nvar ChangeDetails = /*#__PURE__*/function () {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n function ChangeDetails(details) {\n _classCallCheck(this, ChangeDetails);\n\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n\n\n _createClass(ChangeDetails, [{\n key: \"aggregate\",\n value: function aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n /** Total offset considering all changes */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.tailShift + this.inserted.length;\n }\n }]);\n\n return ChangeDetails;\n}();\n\nexport { ChangeDetails as default };\n","import { c as _typeof } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport ChangeDetails from './change-details.js';\n\n/** Checks if value is string */\n\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\n\nvar DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\n Direction\n @enum {string}\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n/** Returns next char position in direction */\n\nfunction posInDirection(pos, direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n\n default:\n return pos;\n }\n}\n/** */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n\n default:\n return direction;\n }\n}\n/** Escapes regular expression control chars */\n\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction normalizePrepare(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n} // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n\n for (i = 0; i < a.length; i++) {\n if (!objectIncludes(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) {\n // $FlowFixMe ... ???\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n\n for (i = 0; i < keys.length; i++) {\n if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n }\n\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n\n return false;\n}\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, normalizePrepare, objectIncludes, posInDirection };\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport { DIRECTION } from './utils.js';\nimport './change-details.js';\n\n/** Provides details of changing input */\n\nvar ActionDetails = /*#__PURE__*/function () {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n _classCallCheck(this, ActionDetails);\n\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection; // double check if left part was changed (autofilling, other non-standard input triggers)\n\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n /**\n Start changing position\n @readonly\n */\n\n\n _createClass(ActionDetails, [{\n key: \"startChangePos\",\n get: function get() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n /**\n Inserted symbols count\n @readonly\n */\n\n }, {\n key: \"insertedCount\",\n get: function get() {\n return this.cursorPos - this.startChangePos;\n }\n /**\n Inserted symbols\n @readonly\n */\n\n }, {\n key: \"inserted\",\n get: function get() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n /**\n Removed symbols count\n @readonly\n */\n\n }, {\n key: \"removedCount\",\n get: function get() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos || // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n /**\n Removed symbols\n @readonly\n */\n\n }, {\n key: \"removed\",\n get: function get() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n /**\n Unchanged head symbols\n @readonly\n */\n\n }, {\n key: \"head\",\n get: function get() {\n return this.value.substring(0, this.startChangePos);\n }\n /**\n Unchanged tail symbols\n @readonly\n */\n\n }, {\n key: \"tail\",\n get: function get() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n /**\n Remove direction\n @readonly\n */\n\n }, {\n key: \"removeDirection\",\n get: function get() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; // align right if delete at right\n\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) && // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }]);\n\n return ActionDetails;\n}();\n\nexport { ActionDetails as default };\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-67bba7fb.js';\n\n/** Provides details of continuous extracted tail */\nvar ContinuousTailDetails = /*#__PURE__*/function () {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n function ContinuousTailDetails() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stop = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, ContinuousTailDetails);\n\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n _createClass(ContinuousTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"extend\",\n value: function extend(tail) {\n this.value += String(tail);\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }, {\n key: \"unshift\",\n value: function unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n var shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (!this.value.length) return '';\n var shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n }]);\n\n return ContinuousTailDetails;\n}();\n\nexport { ContinuousTailDetails as default };\n","/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { _ as _createClass, a as _classCallCheck, f as _slicedToArray } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, normalizePrepare, forceDirection, DIRECTION } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Provides common masking stuff */\nvar Masked = /*#__PURE__*/function () {\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */\n // $FlowFixMe no ideas\n\n /** Transforms value before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing in the end of editing */\n\n /** Format typed value to string */\n\n /** Parse strgin to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n function Masked(opts) {\n _classCallCheck(this, Masked);\n\n this._value = '';\n\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n\n this.isInitialized = true;\n }\n /** Sets and applies new options */\n\n\n _createClass(Masked, [{\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n if (!Object.keys(opts).length) return; // $FlowFixMe\n\n this.withValueRefresh(this._update.bind(this, opts));\n }\n /**\n Sets new options\n @protected\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n Object.assign(this, opts);\n }\n /** Mask state */\n\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this.value\n };\n },\n set: function set(state) {\n this._value = state._value;\n }\n /** Resets value */\n\n }, {\n key: \"reset\",\n value: function reset() {\n this._value = '';\n }\n /** */\n\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(value) {\n this.resolve(value);\n }\n /** Resolve new value */\n\n }, {\n key: \"resolve\",\n value: function resolve(value) {\n this.reset();\n this.append(value, {\n input: true\n }, '');\n this.doCommit();\n return this.value;\n }\n /** */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.value;\n },\n set: function set(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.doParse(this.value);\n },\n set: function set(value) {\n this.value = this.doFormat(value);\n }\n /** Value that includes raw user input */\n\n }, {\n key: \"rawInputValue\",\n get: function get() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n },\n set: function set(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n /** */\n\n }, {\n key: \"isFilled\",\n get: function get() {\n return this.isComplete;\n }\n /** Finds nearest input position in direction */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n /** Extracts value in range considering flags */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n /** Extracts tail in range */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n /** Appends tail */\n // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n /** Appends char */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n /** Appends char */\n\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var checkTail = arguments.length > 2 ? arguments[2] : undefined;\n var consistentState = this.state;\n var details;\n\n var _normalizePrepare = normalizePrepare(this.doPrepare(ch, flags));\n\n var _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2);\n\n ch = _normalizePrepare2[0];\n details = _normalizePrepare2[1];\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n if (details.inserted) {\n var consistentTail;\n var appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n var beforeTailState = this.state;\n\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.value.length);\n }\n\n var tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString(); // not ok, try shift\n\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n } // if ok, rollback state after tail\n\n\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n } // revert all if something went wrong\n\n\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n\n return details;\n }\n /** Appends optional placeholder at end */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n return new ChangeDetails();\n }\n /** Appends optional eager placeholder at end */\n\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n return new ChangeDetails();\n }\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n var details = new ChangeDetails();\n var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags !== null && flags !== void 0 && flags.tail) flags._beforeTailState = this.state;\n\n for (var ci = 0; ci < str.length; ++ci) {\n details.aggregate(this._appendChar(str[ci], flags, checkTail));\n } // append tail but aggregate only tailShift\n\n\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift; // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n if (this.eager && flags !== null && flags !== void 0 && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n return details;\n }\n /** */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n /** Calls function and reapplies current value */\n\n }, {\n key: \"withValueRefresh\",\n value: function withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n var rawInput = this.rawInputValue;\n var value = this.value;\n var ret = fn();\n this.rawInputValue = rawInput; // append lost trailing chars at end\n\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n\n delete this._refreshing;\n return ret;\n }\n /** */\n\n }, {\n key: \"runIsolated\",\n value: function runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n var state = this.state;\n var ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n /**\n Prepares string before mask processing\n @protected\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n /**\n Validates if value is acceptable\n @protected\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n /**\n Does additional processing in the end of editing\n @protected\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n /** */\n\n }, {\n key: \"doFormat\",\n value: function doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n /** */\n\n }, {\n key: \"doParse\",\n value: function doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n /** */\n\n }, {\n key: \"splice\",\n value: function splice(start, deleteCount, inserted, removeDirection) {\n var flags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n input: true\n };\n var tailPos = start + deleteCount;\n var tail = this.extractTail(tailPos);\n var oldRawValue;\n\n if (this.eager) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n\n var startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !this.eager ? DIRECTION.NONE : removeDirection);\n var details = new ChangeDetails({\n tailShift: startChangePos - start // adjust tailShift if start was aligned\n\n }).aggregate(this.remove(startChangePos));\n\n if (this.eager && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n var valLength;\n\n while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n\n return details.aggregate(this.append(inserted, flags, tail));\n }\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return this.mask === mask;\n }\n }, {\n key: \"typedValueEquals\",\n value: function typedValueEquals(value) {\n var tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || this.doFormat(value) === this.doFormat(this.typedValue);\n }\n }]);\n\n return Masked;\n}();\nMasked.DEFAULTS = {\n format: function format(v) {\n return v;\n },\n parse: function parse(v) {\n return v;\n }\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport '../core/change-details.js';\n\n/** Get Masked class by mask type */\n\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n } // $FlowFixMe\n\n\n if (mask instanceof RegExp) return IMask.MaskedRegExp; // $FlowFixMe\n\n if (isString(mask)) return IMask.MaskedPattern; // $FlowFixMe\n\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate; // $FlowFixMe\n\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; // $FlowFixMe\n\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; // $FlowFixMe\n\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; // $FlowFixMe\n\n if (mask instanceof IMask.Masked) return mask.constructor; // $FlowFixMe\n\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n\n return IMask.Masked;\n}\n/** Creates new {@link Masked} depending on mask type */\n\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n var mask = opts.mask; // $FlowFixMe\n\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n var MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass };\n","import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-67bba7fb.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nvar _excluded = [\"mask\"];\nvar DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n/** */\n\nvar PatternInputDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternInputDefinition(opts) {\n _classCallCheck(this, PatternInputDefinition);\n\n var mask = opts.mask,\n blockOpts = _objectWithoutProperties(opts, _excluded);\n\n this.masked = createMask({\n mask: mask\n });\n Object.assign(this, blockOpts);\n }\n\n _createClass(PatternInputDefinition, [{\n key: \"reset\",\n value: function reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n\n return new ChangeDetails();\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.masked.unmaskedValue;\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.isFilled) return new ChangeDetails();\n var state = this.masked.state; // simulate input\n\n var details = this.masked._appendChar(ch, flags);\n\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n }, {\n key: \"append\",\n value: function append() {\n var _this$masked;\n\n // TODO probably should be done via _appendChar\n return (_this$masked = this.masked).append.apply(_this$masked, arguments);\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n return new ChangeDetails();\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$masked2;\n\n return (_this$masked2 = this.masked).extractTail.apply(_this$masked2, arguments);\n }\n }, {\n key: \"appendTail\",\n value: function appendTail() {\n var _this$masked3;\n\n return (_this$masked3 = this.masked).appendTail.apply(_this$masked3, arguments);\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this.value.length;\n var boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this$masked4, _this$parent;\n\n return (_this$masked4 = this.masked).doValidate.apply(_this$masked4, arguments) && (!this.parent || (_this$parent = this.parent).doValidate.apply(_this$parent, arguments));\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this.masked.doCommit();\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n },\n set: function set(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n }]);\n\n return PatternInputDefinition;\n}();\n\nexport { DEFAULT_INPUT_DEFINITIONS, PatternInputDefinition as default };\n","import { _ as _createClass, a as _classCallCheck } from '../../_rollupPluginBabelHelpers-67bba7fb.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\n\nvar PatternFixedDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternFixedDefinition(opts) {\n _classCallCheck(this, PatternFixedDefinition);\n\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n\n _createClass(PatternFixedDefinition, [{\n key: \"value\",\n get: function get() {\n return this._value;\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.isUnmasking ? this.value : '';\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._isRawInput = false;\n this._value = '';\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this._value.length;\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n }, {\n key: \"isFilled\",\n get: function get() {\n return Boolean(this._value);\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details = new ChangeDetails();\n if (this._value) return details;\n var appended = this.char === ch;\n var isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !this.eager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._value) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n var details = this._appendChar(str[0], flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {}\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }]);\n\n return PatternFixedDefinition;\n}();\n\nexport { PatternFixedDefinition as default };\n","import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-67bba7fb.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nvar _excluded = [\"chunks\"];\n\nvar ChunksTailDetails = /*#__PURE__*/function () {\n /** */\n function ChunksTailDetails() {\n var chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, ChunksTailDetails);\n\n this.chunks = chunks;\n this.from = from;\n }\n\n _createClass(ChunksTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.chunks.map(String).join('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"extend\",\n value: function extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n var lastChunk = this.chunks[this.chunks.length - 1];\n var extendLast = lastChunk && ( // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n var firstTailChunk;\n\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n } // if tail chunk still has value\n\n\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n var tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n var details = new ChangeDetails();\n\n for (var ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n var chunk = this.chunks[ci];\n\n var lastBlockIter = masked._mapPosToBlock(masked.value.length);\n\n var stop = chunk.stop;\n var chunkBlock = void 0;\n\n if (stop != null && ( // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails || // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n var tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted; // get not inserted chars\n\n var remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n chunks: this.chunks.map(function (c) {\n return c.state;\n }),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n },\n set: function set(state) {\n var chunks = state.chunks,\n props = _objectWithoutProperties(state, _excluded);\n\n Object.assign(this, props);\n this.chunks = chunks.map(function (cstate) {\n var chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); // $FlowFixMe already checked above\n\n chunk.state = cstate;\n return chunk;\n });\n }\n }, {\n key: \"unshift\",\n value: function unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n var chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n var ci = 0;\n\n while (ci < this.chunks.length) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.unshift(chunkShiftPos);\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (!this.chunks.length) return '';\n var ci = this.chunks.length - 1;\n\n while (0 <= ci) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.shift();\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n }]);\n\n return ChunksTailDetails;\n}();\n\nexport { ChunksTailDetails as default };\n","import { _ as _createClass, a as _classCallCheck } from '../../_rollupPluginBabelHelpers-67bba7fb.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/change-details.js';\n\nvar PatternCursor = /*#__PURE__*/function () {\n function PatternCursor(masked, pos) {\n _classCallCheck(this, PatternCursor);\n\n this.masked = masked;\n this._log = [];\n\n var _ref = masked._mapPosToBlock(pos) || (pos < 0 ? // first\n {\n index: 0,\n offset: 0\n } : // last\n {\n index: this.masked._blocks.length,\n offset: 0\n }),\n offset = _ref.offset,\n index = _ref.index;\n\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n\n _createClass(PatternCursor, [{\n key: \"block\",\n get: function get() {\n return this.masked._blocks[this.index];\n }\n }, {\n key: \"pos\",\n get: function get() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n },\n set: function set(s) {\n Object.assign(this, s);\n }\n }, {\n key: \"pushState\",\n value: function pushState() {\n this._log.push(this.state);\n }\n }, {\n key: \"popState\",\n value: function popState() {\n var s = this._log.pop();\n\n this.state = s;\n return s;\n }\n }, {\n key: \"bindBlock\",\n value: function bindBlock() {\n if (this.block) return;\n\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.value.length;\n }\n }\n }, {\n key: \"_pushLeft\",\n value: function _pushLeft(fn) {\n this.pushState();\n\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) === null || _this$block === void 0 ? void 0 : _this$block.value.length) || 0) {\n var _this$block;\n\n if (fn()) return this.ok = true;\n }\n\n return this.ok = false;\n }\n }, {\n key: \"_pushRight\",\n value: function _pushRight(fn) {\n this.pushState();\n\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n\n return this.ok = false;\n }\n }, {\n key: \"pushLeftBeforeFilled\",\n value: function pushLeftBeforeFilled() {\n var _this = this;\n\n return this._pushLeft(function () {\n if (_this.block.isFixed || !_this.block.value) return;\n _this.offset = _this.block.nearestInputPos(_this.offset, DIRECTION.FORCE_LEFT);\n if (_this.offset !== 0) return true;\n });\n }\n }, {\n key: \"pushLeftBeforeInput\",\n value: function pushLeftBeforeInput() {\n var _this2 = this;\n\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(function () {\n if (_this2.block.isFixed) return;\n _this2.offset = _this2.block.nearestInputPos(_this2.offset, DIRECTION.LEFT);\n return true;\n });\n }\n }, {\n key: \"pushLeftBeforeRequired\",\n value: function pushLeftBeforeRequired() {\n var _this3 = this;\n\n return this._pushLeft(function () {\n if (_this3.block.isFixed || _this3.block.isOptional && !_this3.block.value) return;\n _this3.offset = _this3.block.nearestInputPos(_this3.offset, DIRECTION.LEFT);\n return true;\n });\n }\n }, {\n key: \"pushRightBeforeFilled\",\n value: function pushRightBeforeFilled() {\n var _this4 = this;\n\n return this._pushRight(function () {\n if (_this4.block.isFixed || !_this4.block.value) return;\n _this4.offset = _this4.block.nearestInputPos(_this4.offset, DIRECTION.FORCE_RIGHT);\n if (_this4.offset !== _this4.block.value.length) return true;\n });\n }\n }, {\n key: \"pushRightBeforeInput\",\n value: function pushRightBeforeInput() {\n var _this5 = this;\n\n return this._pushRight(function () {\n if (_this5.block.isFixed) return; // const o = this.offset;\n\n _this5.offset = _this5.block.nearestInputPos(_this5.offset, DIRECTION.NONE); // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n\n return true;\n });\n }\n }, {\n key: \"pushRightBeforeRequired\",\n value: function pushRightBeforeRequired() {\n var _this6 = this;\n\n return this._pushRight(function () {\n if (_this6.block.isFixed || _this6.block.isOptional && !_this6.block.value) return; // TODO check |[*]XX_\n\n _this6.offset = _this6.block.nearestInputPos(_this6.offset, DIRECTION.NONE);\n return true;\n });\n }\n }]);\n\n return PatternCursor;\n}();\n\nexport { PatternCursor as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\n\nvar MaskedRegExp = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedRegExp, _Masked);\n\n var _super = _createSuper(MaskedRegExp);\n\n function MaskedRegExp() {\n _classCallCheck(this, MaskedRegExp);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRegExp, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n if (opts.mask) opts.validate = function (value) {\n return value.search(opts.mask) >= 0;\n };\n\n _get(_getPrototypeOf(MaskedRegExp.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedRegExp;\n}(Masked);\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf, b as _objectWithoutProperties, i as _set } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport { DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\nvar _excluded = [\"_blocks\"];\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {boolean} opts.lazy\n*/\nvar MaskedPattern = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedPattern, _Masked);\n\n var _super = _createSuper(MaskedPattern);\n\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Show placeholder only when needed */\n function MaskedPattern() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, MaskedPattern);\n\n // TODO type $Shape={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n return _super.call(this, Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n /**\n @override\n @param {Object} opts\n */\n\n\n _createClass(MaskedPattern, [{\n key: \"_update\",\n value: function _update() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"_update\", this).call(this, opts);\n\n this._rebuildMask();\n }\n /** */\n\n }, {\n key: \"_rebuildMask\",\n value: function _rebuildMask() {\n var _this = this;\n\n var defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n var pattern = this.mask;\n if (!pattern || !defs) return;\n var unmaskingBlock = false;\n var optionalBlock = false;\n\n for (var i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n var _ret = function () {\n var p = pattern.slice(i);\n var bNames = Object.keys(_this.blocks).filter(function (bName) {\n return p.indexOf(bName) === 0;\n }); // order by key length\n\n bNames.sort(function (a, b) {\n return b.length - a.length;\n }); // use block name with max length\n\n var bName = bNames[0];\n\n if (bName) {\n // $FlowFixMe no ideas\n var maskedBlock = createMask(Object.assign({\n parent: _this,\n lazy: _this.lazy,\n eager: _this.eager,\n placeholderChar: _this.placeholderChar,\n overwrite: _this.overwrite\n }, _this.blocks[bName]));\n\n if (maskedBlock) {\n _this._blocks.push(maskedBlock); // store block index\n\n\n if (!_this._maskedBlocks[bName]) _this._maskedBlocks[bName] = [];\n\n _this._maskedBlocks[bName].push(_this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n return \"continue\";\n }\n }();\n\n if (_ret === \"continue\") continue;\n }\n\n var char = pattern[i];\n var isInput = (char in defs);\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n\n var def = isInput ? new PatternInputDefinition({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n mask: defs[char],\n isOptional: optionalBlock\n }) : new PatternFixedDefinition({\n char: char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n\n this._blocks.push(def);\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedPattern.prototype), \"state\", this), {\n _blocks: this._blocks.map(function (b) {\n return b.state;\n })\n });\n },\n set: function set(state) {\n var _blocks = state._blocks,\n maskedState = _objectWithoutProperties(state, _excluded);\n\n this._blocks.forEach(function (b, bi) {\n return b.state = _blocks[bi];\n });\n\n _set(_getPrototypeOf(MaskedPattern.prototype), \"state\", maskedState, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n _get(_getPrototypeOf(MaskedPattern.prototype), \"reset\", this).call(this);\n\n this._blocks.forEach(function (b) {\n return b.reset();\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isComplete;\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"isFilled\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isFilled;\n });\n }\n }, {\n key: \"isFixed\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isFixed;\n });\n }\n }, {\n key: \"isOptional\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isOptional;\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this._blocks.forEach(function (b) {\n return b.doCommit();\n });\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"doCommit\", this).call(this);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._blocks.reduce(function (str, b) {\n return str += b.unmaskedValue;\n }, '');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // TODO return _value when not in change?\n return this._blocks.reduce(function (str, b) {\n return str += b.value;\n }, '');\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"value\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n return _get(_getPrototypeOf(MaskedPattern.prototype), \"appendTail\", this).call(this, tail).aggregate(this._appendPlaceholder());\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n var _this$_mapPosToBlock;\n\n var details = new ChangeDetails();\n var startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.value.length)) === null || _this$_mapPosToBlock === void 0 ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details; // TODO test if it works for nested pattern masks\n\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n\n for (var bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n var d = this._blocks[bi]._appendEager();\n\n if (!d.inserted) break;\n details.aggregate(d);\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var blockIter = this._mapPosToBlock(this.value.length);\n\n var details = new ChangeDetails();\n if (!blockIter) return details;\n\n for (var bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n\n var _block = this._blocks[bi];\n if (!_block) break;\n\n var blockDetails = _block._appendChar(ch, Object.assign({}, flags, {\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : (_flags$_beforeTailSta2 = _flags$_beforeTailSta._blocks) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2[bi]\n }));\n\n var skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this2 = this;\n\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {\n var blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = _this2._findStopBefore(bi);\n blockChunk.from = _this2._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n var input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n }, {\n key: \"_findStopBefore\",\n value: function _findStopBefore(blockIndex) {\n var stopBefore;\n\n for (var si = 0; si < this._stops.length; ++si) {\n var stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n\n return stopBefore;\n }\n /** Appends placeholder depending on laziness */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder(toBlockIndex) {\n var _this3 = this;\n\n var details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n\n var startBlockIter = this._mapPosToBlock(this.value.length);\n\n if (!startBlockIter) return details;\n var startBlockIndex = startBlockIter.index;\n var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n var args = b._blocks != null ? [b._blocks.length] : [];\n\n var bDetails = b._appendPlaceholder.apply(b, args);\n\n _this3._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n\n return details;\n }\n /** Finds block in pos */\n\n }, {\n key: \"_mapPosToBlock\",\n value: function _mapPosToBlock(pos) {\n var accVal = '';\n\n for (var bi = 0; bi < this._blocks.length; ++bi) {\n var _block2 = this._blocks[bi];\n var blockStartPos = accVal.length;\n accVal += _block2.value;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n /** */\n\n }, {\n key: \"_blockStartPos\",\n value: function _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce(function (pos, b) {\n return pos += b.value.length;\n }, 0);\n }\n /** */\n\n }, {\n key: \"_forEachBlocksInRange\",\n value: function _forEachBlocksInRange(fromPos) {\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var fn = arguments.length > 2 ? arguments[2] : undefined;\n\n var fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n var toBlockIter = this._mapPosToBlock(toPos); // process first block\n\n\n var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n var fromBlockStartPos = fromBlockIter.offset;\n var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n } // process last block\n\n\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var removeDetails = _get(_getPrototypeOf(MaskedPattern.prototype), \"remove\", this).call(this, fromPos, toPos);\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n\n return removeDetails;\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n if (!this._blocks.length) return 0;\n var cursor = new PatternCursor(this, cursorPos);\n\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.value.length;\n } // FORCE is only about a|* otherwise is 0\n\n\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n } // forward flow\n\n\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled(); // backward flow\n\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos; // cursor.popState();\n // if (\n // cursor.pushRightBeforeInput() &&\n // // TODO HACK for lazy if has aligned left inside fixed and has came to the start - use start position\n // (!this.lazy || this.extractInput())\n // ) return cursor.pos;\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.value.length; // backward flow\n\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n\n return cursorPos;\n }\n /** Get block by name */\n\n }, {\n key: \"maskedBlock\",\n value: function maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n /** Get all blocks by name */\n\n }, {\n key: \"maskedBlocks\",\n value: function maskedBlocks(name) {\n var _this4 = this;\n\n var indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(function (gi) {\n return _this4._blocks[gi];\n });\n }\n }]);\n\n return MaskedPattern;\n}(Masked);\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf, f as _slicedToArray } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport MaskedPattern from './pattern.js';\nimport { normalizePrepare } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\n\nvar MaskedRange = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedRange, _MaskedPattern);\n\n var _super = _createSuper(MaskedRange);\n\n function MaskedRange() {\n _classCallCheck(this, MaskedRange);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRange, [{\n key: \"_matchFrom\",\n get:\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n function get() {\n return this.maxLength - String(this.from).length;\n }\n /**\n @override\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0,\n maxLength: this.maxLength || 0\n }, opts);\n var maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n var fromStr = String(opts.from).padStart(maxLength, '0');\n var toStr = String(opts.to).padStart(maxLength, '0');\n var sameCharsCount = 0;\n\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {\n ++sameCharsCount;\n }\n\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n _get(_getPrototypeOf(MaskedRange.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return _get(_getPrototypeOf(MaskedRange.prototype), \"isComplete\", this) && Boolean(this.value);\n }\n }, {\n key: \"boundaries\",\n value: function boundaries(str) {\n var minstr = '';\n var maxstr = '';\n\n var _ref = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n _ref2 = _slicedToArray(_ref, 3),\n placeholder = _ref2[1],\n num = _ref2[2];\n\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n } // TODO str is a single char everytime\n\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details;\n\n var _normalizePrepare = normalizePrepare(_get(_getPrototypeOf(MaskedRange.prototype), \"doPrepare\", this).call(this, ch.replace(/\\D/g, ''), flags));\n\n var _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2);\n\n ch = _normalizePrepare2[0];\n details = _normalizePrepare2[1];\n if (!this.autofix || !ch) return ch;\n var fromStr = String(this.from).padStart(this.maxLength, '0');\n var toStr = String(this.to).padStart(this.maxLength, '0');\n var nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return '';\n\n var _this$boundaries = this.boundaries(nextVal),\n _this$boundaries2 = _slicedToArray(_this$boundaries, 2),\n minstr = _this$boundaries2[0],\n maxstr = _this$boundaries2[1];\n\n if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1];\n\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n\n return toStr[nextVal.length - 1];\n }\n\n return ch;\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var str = this.value;\n var firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n var _this$boundaries3 = this.boundaries(str),\n _this$boundaries4 = _slicedToArray(_this$boundaries3, 2),\n minstr = _this$boundaries4[0],\n maxstr = _this$boundaries4[1];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedRange;\n}(MaskedPattern);\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, f as _slicedToArray, a as _classCallCheck, g as _get, h as _getPrototypeOf, i as _set } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Date mask */\n\nvar MaskedDate = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedDate, _MaskedPattern);\n\n var _super = _createSuper(MaskedDate);\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\n @param {Object} opts\n */\n function MaskedDate(opts) {\n _classCallCheck(this, MaskedDate);\n\n return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n /**\n @override\n */\n\n\n _createClass(MaskedDate, [{\n key: \"_update\",\n value: function _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n var blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block\n\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n\n Object.assign(opts.blocks, this.blocks, blocks); // add autofix\n\n Object.keys(opts.blocks).forEach(function (bk) {\n var b = opts.blocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n\n _get(_getPrototypeOf(MaskedDate.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var date = this.date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n /** Checks if date is exists */\n\n }, {\n key: \"isDateExist\",\n value: function isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n /** Parsed Date */\n\n }, {\n key: \"date\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(date) {\n this.typedValue = date;\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", this) : null;\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return mask === Date || _get(_getPrototypeOf(MaskedDate.prototype), \"maskEquals\", this).call(this, mask);\n }\n }]);\n\n return MaskedDate;\n}(MaskedPattern);\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: function format(date) {\n if (!date) return '';\n var day = String(date.getDate()).padStart(2, '0');\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: function parse(str) {\n var _str$split = str.split('.'),\n _str$split2 = _slicedToArray(_str$split, 3),\n day = _str$split2[0],\n month = _str$split2[1],\n year = _str$split2[2];\n\n return new Date(year, month - 1, day);\n }\n};\n\nMaskedDate.GET_DEFAULT_BLOCKS = function () {\n return {\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n };\n};\n\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport IMask from '../core/holder.js';\n\n/**\n Generic element API to use with mask\n @interface\n*/\nvar MaskElement = /*#__PURE__*/function () {\n function MaskElement() {\n _classCallCheck(this, MaskElement);\n }\n\n _createClass(MaskElement, [{\n key: \"selectionStart\",\n get:\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n function get() {\n var start;\n\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ? start : this.value.length;\n }\n /** Safely returns selection end */\n\n }, {\n key: \"selectionEnd\",\n get: function get() {\n var end;\n\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ? end : this.value.length;\n }\n /** Safely sets element selection */\n\n }, {\n key: \"select\",\n value: function select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"isActive\",\n get: function get() {\n return false;\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {}\n }]);\n\n return MaskElement;\n}();\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\n\nvar HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {\n _inherits(HTMLMaskElement, _MaskElement);\n\n var _super = _createSuper(HTMLMaskElement);\n\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n function HTMLMaskElement(input) {\n var _this;\n\n _classCallCheck(this, HTMLMaskElement);\n\n _this = _super.call(this);\n _this.input = input;\n _this._handlers = {};\n return _this;\n }\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n\n\n _createClass(HTMLMaskElement, [{\n key: \"rootElement\",\n get: function get() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) === null || _this$input$getRootNo2 === void 0 ? void 0 : _this$input$getRootNo2.call(_this$input)) !== null && _this$input$getRootNo !== void 0 ? _this$input$getRootNo : document;\n }\n /**\n Is element in focus\n @readonly\n */\n\n }, {\n key: \"isActive\",\n get: function get() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n /**\n Returns HTMLElement selection start\n @override\n */\n\n }, {\n key: \"_unsafeSelectionStart\",\n get: function get() {\n return this.input.selectionStart;\n }\n /**\n Returns HTMLElement selection end\n @override\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n return this.input.selectionEnd;\n }\n /**\n Sets HTMLElement selection\n @override\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n /**\n HTMLElement value\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.input.value;\n },\n set: function set(value) {\n this.input.value = value;\n }\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {\n var _this2 = this;\n\n Object.keys(handlers).forEach(function (event) {\n return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n });\n }\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n var _this3 = this;\n\n Object.keys(this._handlers).forEach(function (event) {\n return _this3._toggleEventHandler(event);\n });\n }\n /** */\n\n }, {\n key: \"_toggleEventHandler\",\n value: function _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n }]);\n\n return HTMLMaskElement;\n}(MaskElement);\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nvar HTMLContenteditableMaskElement = /*#__PURE__*/function (_HTMLMaskElement) {\n _inherits(HTMLContenteditableMaskElement, _HTMLMaskElement);\n\n var _super = _createSuper(HTMLContenteditableMaskElement);\n\n function HTMLContenteditableMaskElement() {\n _classCallCheck(this, HTMLContenteditableMaskElement);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(HTMLContenteditableMaskElement, [{\n key: \"_unsafeSelectionStart\",\n get:\n /**\n Returns HTMLElement selection start\n @override\n */\n function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n var anchorOffset = selection && selection.anchorOffset;\n var focusOffset = selection && selection.focusOffset;\n\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n\n return focusOffset;\n }\n /**\n Returns HTMLElement selection end\n @override\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n var anchorOffset = selection && selection.anchorOffset;\n var focusOffset = selection && selection.focusOffset;\n\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n\n return focusOffset;\n }\n /**\n Sets HTMLElement selection\n @override\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n var range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n /**\n HTMLElement value\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // $FlowFixMe\n return this.input.textContent;\n },\n set: function set(value) {\n this.input.textContent = value;\n }\n }]);\n\n return HTMLContenteditableMaskElement;\n}(HTMLMaskElement);\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../masked/pattern.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/pattern/cursor.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\nvar _excluded = [\"mask\"];\n/** Listens to element events and controls changes between element and {@link Masked} */\n\nvar InputMask = /*#__PURE__*/function () {\n /**\n View element\n @readonly\n */\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n function InputMask(el, opts) {\n _classCallCheck(this, InputMask);\n\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents(); // refresh\n\n\n this.updateValue();\n\n this._onChange();\n }\n /** Read or update mask */\n\n\n _createClass(InputMask, [{\n key: \"mask\",\n get: function get() {\n return this.masked.mask;\n },\n set: function set(mask) {\n if (this.maskEquals(mask)) return; // $FlowFixMe No ideas ... after update\n\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask: mask\n });\n return;\n }\n\n var masked = createMask({\n mask: mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n /** Raw value */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n var _this$masked;\n\n return mask == null || ((_this$masked = this.masked) === null || _this$masked === void 0 ? void 0 : _this$masked.maskEquals(mask));\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Unmasked value */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._unmaskedValue;\n },\n set: function set(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Typed unmasked value */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.masked.typedValue;\n },\n set: function set(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n /**\n Starts listening to element events\n @protected\n */\n\n }, {\n key: \"_bindEvents\",\n value: function _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n /**\n Stops listening to element events\n @protected\n */\n\n }, {\n key: \"_unbindEvents\",\n value: function _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n /**\n Fires custom event\n @protected\n */\n\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(ev) {\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 var listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(function (l) {\n return l.apply(void 0, args);\n });\n }\n /**\n Current selection start\n @readonly\n */\n\n }, {\n key: \"selectionStart\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n /** Current cursor position */\n\n }, {\n key: \"cursorPos\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n },\n set: function set(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n\n this._saveSelection();\n }\n /**\n Stores current selection\n @protected\n */\n\n }, {\n key: \"_saveSelection\",\n value: function\n /* ev */\n _saveSelection() {\n if (this.value !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n /** Syncronizes model value from view */\n\n }, {\n key: \"updateValue\",\n value: function updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n /** Syncronizes view from model value, fires change events */\n\n }, {\n key: \"updateControl\",\n value: function updateControl() {\n var newUnmaskedValue = this.masked.unmaskedValue;\n var newValue = this.masked.value;\n var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n var mask = opts.mask,\n restOpts = _objectWithoutProperties(opts, _excluded);\n\n var updateMask = !this.maskEquals(mask);\n var updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n /** Updates cursor */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos; // also queue change cursor for mobile browsers\n\n this._delayUpdateCursor(cursorPos);\n }\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n\n }, {\n key: \"_delayUpdateCursor\",\n value: function _delayUpdateCursor(cursorPos) {\n var _this = this;\n\n this._abortUpdateCursor();\n\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(function () {\n if (!_this.el) return; // if was destroyed\n\n _this.cursorPos = _this._changingCursorPos;\n\n _this._abortUpdateCursor();\n }, 10);\n }\n /**\n Fires custom events\n @protected\n */\n\n }, {\n key: \"_fireChangeEvents\",\n value: function _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n /**\n Aborts delayed cursor update\n @private\n */\n\n }, {\n key: \"_abortUpdateCursor\",\n value: function _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n /** Aligns cursor to nearest available position */\n\n }, {\n key: \"alignCursor\",\n value: function alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n /** Aligns cursor only if selection is empty */\n\n }, {\n key: \"alignCursorFriendly\",\n value: function alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n\n this.alignCursor();\n }\n /** Adds listener on custom event */\n\n }, {\n key: \"on\",\n value: function on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n\n this._listeners[ev].push(handler);\n\n return this;\n }\n /** Removes custom event listener */\n\n }, {\n key: \"off\",\n value: function off(ev, handler) {\n if (!this._listeners[ev]) return this;\n\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n\n var hIndex = this._listeners[ev].indexOf(handler);\n\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n /** Handles view input event */\n\n }, {\n key: \"_onInput\",\n value: function _onInput(e) {\n this._inputEvent = e;\n\n this._abortUpdateCursor(); // fix strange IE behavior\n\n\n if (!this._selection) return this.updateValue();\n var details = new ActionDetails( // new state\n this.el.value, this.cursorPos, // old state\n this.value, this._selection);\n var oldRawValue = this.masked.rawInputValue;\n var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset; // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n\n var removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n /** Handles view change event and commits model value */\n\n }, {\n key: \"_onChange\",\n value: function _onChange() {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n\n this.masked.doCommit();\n this.updateControl();\n\n this._saveSelection();\n }\n /** Handles view drop event, prevents by default */\n\n }, {\n key: \"_onDrop\",\n value: function _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onFocus\",\n value: function _onFocus(ev) {\n this.alignCursorFriendly();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onClick\",\n value: function _onClick(ev) {\n this.alignCursorFriendly();\n }\n /** Unbind view events and removes element reference */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._unbindEvents(); // $FlowFixMe why not do so?\n\n\n this._listeners.length = 0; // $FlowFixMe\n\n delete this.el;\n }\n }]);\n\n return InputMask;\n}();\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\n\nvar MaskedEnum = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedEnum, _MaskedPattern);\n\n var _super = _createSuper(MaskedEnum);\n\n function MaskedEnum() {\n _classCallCheck(this, MaskedEnum);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedEnum, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n\n _get(_getPrototypeOf(MaskedEnum.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this = this,\n _get2;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.enum.some(function (e) {\n return e.indexOf(_this.unmaskedValue) >= 0;\n }) && (_get2 = _get(_getPrototypeOf(MaskedEnum.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedEnum;\n}(MaskedPattern);\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import { j as _toConsumableArray, d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf, f as _slicedToArray, i as _set } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport { escapeRegExp, normalizePrepare, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nvar MaskedNumber = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedNumber, _Masked);\n\n var _super = _createSuper(MaskedNumber);\n\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n function MaskedNumber(opts) {\n _classCallCheck(this, MaskedNumber);\n\n return _super.call(this, Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n /**\n @override\n */\n\n\n _createClass(MaskedNumber, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedNumber.prototype), \"_update\", this).call(this, opts);\n\n this._updateRegExps();\n }\n /** */\n\n }, {\n key: \"_updateRegExps\",\n value: function _updateRegExps() {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n var start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n var midInput = '(0|([1-9]+\\\\d*))?';\n var mid = '\\\\d*';\n var end = (this.scale ? '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n /** */\n\n }, {\n key: \"_removeThousandsSeparators\",\n value: function _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n /** */\n\n }, {\n key: \"_insertThousandsSeparators\",\n value: function _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n var parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(ch) {\n var _get2;\n\n ch = ch.replace(this._mapToRadixRegExp, this.radix);\n\n var noSepCh = this._removeThousandsSeparators(ch);\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 var _normalizePrepare = normalizePrepare((_get2 = _get(_getPrototypeOf(MaskedNumber.prototype), \"doPrepare\", this)).call.apply(_get2, [this, noSepCh].concat(args))),\n _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2),\n prepCh = _normalizePrepare2[0],\n details = _normalizePrepare2[1];\n\n if (ch && !noSepCh) details.skip = true;\n return [prepCh, details];\n }\n /** */\n\n }, {\n key: \"_separatorsCount\",\n value: function _separatorsCount(to) {\n var extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var count = 0;\n\n for (var pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n\n return count;\n }\n /** */\n\n }, {\n key: \"_separatorsCountFromSlice\",\n value: function _separatorsCountFromSlice() {\n var slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n\n var _this$_adjustRangeWit = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit2 = _slicedToArray(_this$_adjustRangeWit, 2);\n\n fromPos = _this$_adjustRangeWit2[0];\n toPos = _this$_adjustRangeWit2[1];\n return this._removeThousandsSeparators(_get(_getPrototypeOf(MaskedNumber.prototype), \"extractInput\", this).call(this, fromPos, toPos, flags));\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n var prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n\n this._value = this._removeThousandsSeparators(this.value);\n\n var appendDetails = _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n\n this._value = this._insertThousandsSeparators(this._value);\n var beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n /** */\n\n }, {\n key: \"_findSeparatorAround\",\n value: function _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n var searchFrom = pos - this.thousandsSeparator.length + 1;\n var separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n\n return -1;\n }\n }, {\n key: \"_adjustRangeWithSeparators\",\n value: function _adjustRangeWithSeparators(from, to) {\n var separatorAroundFromPos = this._findSeparatorAround(from);\n\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n var separatorAroundToPos = this._findSeparatorAround(to);\n\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var _this$_adjustRangeWit3 = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit4 = _slicedToArray(_this$_adjustRangeWit3, 2);\n\n fromPos = _this$_adjustRangeWit4[0];\n toPos = _this$_adjustRangeWit4[1];\n var valueBeforePos = this.value.slice(0, fromPos);\n var valueAfterPos = this.value.slice(toPos);\n\n var prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n var separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n\n if (separatorAtLeftPos >= 0) {\n var separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n\n break;\n }\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n var separatorAtRightPos = this._findSeparatorAround(cursorPos);\n\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp; // validate as string\n\n var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n var number = this.number;\n valid = valid && !isNaN(number) && ( // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && ( // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && _get(_getPrototypeOf(MaskedNumber.prototype), \"doValidate\", this).call(this, flags);\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.value) {\n var number = this.number;\n var validnum = number; // check bounds\n\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = String(validnum);\n var formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n\n _get(_getPrototypeOf(MaskedNumber.prototype), \"doCommit\", this).call(this);\n }\n /** */\n\n }, {\n key: \"_normalizeZeros\",\n value: function _normalizeZeros(value) {\n var parts = this._removeThousandsSeparators(value).split(this.radix); // remove leading zeros\n\n\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n return sign + num;\n }); // add leading zero\n\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n /** */\n\n }, {\n key: \"_padFractionalZeros\",\n value: function _padFractionalZeros(value) {\n if (!value) return value;\n var parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", unmaskedValue.replace('.', this.radix), this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return Number(this.unmaskedValue);\n },\n set: function set(n) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", String(n), this, true);\n }\n /** Parsed Number */\n\n }, {\n key: \"number\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(number) {\n this.typedValue = number;\n }\n /**\n Is negative allowed\n @readonly\n */\n\n }, {\n key: \"allowNegative\",\n get: function get() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValueEquals\",\n value: function typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (_get(_getPrototypeOf(MaskedNumber.prototype), \"typedValueEquals\", this).call(this, value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n }]);\n\n return MaskedNumber;\n}(Masked);\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false\n};\nMaskedNumber.EMPTY_VALUES = [].concat(_toConsumableArray(Masked.EMPTY_VALUES), [0]);\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\n\nvar MaskedFunction = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedFunction, _Masked);\n\n var _super = _createSuper(MaskedFunction);\n\n function MaskedFunction() {\n _classCallCheck(this, MaskedFunction);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedFunction, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n if (opts.mask) opts.validate = opts.mask;\n\n _get(_getPrototypeOf(MaskedFunction.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedFunction;\n}(Masked);\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf, f as _slicedToArray, i as _set, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport { normalizePrepare } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\nvar _excluded = [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"];\n\n/** Dynamic mask for choosing apropriate mask in run-time */\nvar MaskedDynamic = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedDynamic, _Masked);\n\n var _super = _createSuper(MaskedDynamic);\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n /**\n @param {Object} opts\n */\n function MaskedDynamic(opts) {\n var _this;\n\n _classCallCheck(this, MaskedDynamic);\n\n _this = _super.call(this, Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n _this.currentMask = null;\n return _this;\n }\n /**\n @override\n */\n\n\n _createClass(MaskedDynamic, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedDynamic.prototype), \"_update\", this).call(this, opts);\n\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(function (m) {\n return createMask(m);\n }) : [];\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var details = this._applyDispatch(ch, flags);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n\n return details;\n }\n }, {\n key: \"_applyDispatch\",\n value: function _applyDispatch() {\n var appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n var inputValue = this.rawInputValue;\n var insertValue = flags.tail && flags._beforeTailState != null ? // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue : inputValue;\n var tailValue = inputValue.slice(insertValue.length);\n var prevMask = this.currentMask;\n var details = new ChangeDetails();\n var prevMaskState = prevMask === null || prevMask === void 0 ? void 0 : prevMask.state; // clone flags to prevent overwriting `_beforeTailState`\n\n this.currentMask = this.doDispatch(appended, Object.assign({}, flags)); // restore state after dispatch\n\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n var d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n\n return details;\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = this._applyDispatch.apply(this, arguments);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendEager\",\n value: function _appendEager() {\n var details = this._applyDispatch.apply(this, arguments);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n\n return details;\n }\n }, {\n key: \"currentMaskFlags\",\n value: function currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n\n return Object.assign({}, flags, {\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) === null || _flags$_beforeTailSta === void 0 ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) === null || _flags$_beforeTailSta2 === void 0 ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"doDispatch\",\n value: function doDispatch(appended) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.dispatch(appended, this, flags);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n return _get(_getPrototypeOf(MaskedDynamic.prototype), \"doValidate\", this).call(this, flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _normalizePrepare = normalizePrepare(_get(_getPrototypeOf(MaskedDynamic.prototype), \"doPrepare\", this).call(this, str, flags)),\n _normalizePrepare2 = _slicedToArray(_normalizePrepare, 2),\n s = _normalizePrepare2[0],\n details = _normalizePrepare2[1];\n\n if (this.currentMask) {\n var currentDetails;\n\n var _normalizePrepare3 = normalizePrepare(_get(_getPrototypeOf(MaskedDynamic.prototype), \"doPrepare\", this).call(this, s, this.currentMaskFlags(flags)));\n\n var _normalizePrepare4 = _slicedToArray(_normalizePrepare3, 2);\n\n s = _normalizePrepare4[0];\n currentDetails = _normalizePrepare4[1];\n details = details.aggregate(currentDetails);\n }\n\n return [s, details];\n }\n /**\n @override\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n var _this$currentMask;\n\n (_this$currentMask = this.currentMask) === null || _this$currentMask === void 0 ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(function (m) {\n return m.reset();\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.currentMask ? this.currentMask.value : '';\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"value\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.currentMask ? this.currentMask.typedValue : '';\n } // probably typedValue should not be used with dynamic\n ,\n set: function set(value) {\n var unmaskedValue = String(value); // double check it\n\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n\n this.unmaskedValue = unmaskedValue;\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n var _this$currentMask2;\n\n return Boolean((_this$currentMask2 = this.currentMask) === null || _this$currentMask2 === void 0 ? void 0 : _this$currentMask2.isComplete);\n }\n /**\n @override\n */\n\n }, {\n key: \"isFilled\",\n get: function get() {\n var _this$currentMask3;\n\n return Boolean((_this$currentMask3 = this.currentMask) === null || _this$currentMask3 === void 0 ? void 0 : _this$currentMask3.isFilled);\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var details = new ChangeDetails();\n\n if (this.currentMask) {\n var _this$currentMask4;\n\n details.aggregate((_this$currentMask4 = this.currentMask).remove.apply(_this$currentMask4, arguments)) // update with dispatch\n .aggregate(this._applyDispatch());\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"state\",\n get: function get() {\n var _this$currentMask5;\n\n return Object.assign({}, _get(_getPrototypeOf(MaskedDynamic.prototype), \"state\", this), {\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(function (m) {\n return m.state;\n }),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask5 = this.currentMask) === null || _this$currentMask5 === void 0 ? void 0 : _this$currentMask5.state\n });\n },\n set: function set(state) {\n var compiledMasks = state.compiledMasks,\n currentMaskRef = state.currentMaskRef,\n currentMask = state.currentMask,\n maskedState = _objectWithoutProperties(state, _excluded);\n\n this.compiledMasks.forEach(function (m, mi) {\n return m.state = compiledMasks[mi];\n });\n\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"state\", maskedState, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var _this$currentMask6;\n\n return this.currentMask ? (_this$currentMask6 = this.currentMask).extractInput.apply(_this$currentMask6, arguments) : '';\n }\n /**\n @override\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$currentMask7, _get2;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.currentMask ? (_this$currentMask7 = this.currentMask).extractTail.apply(_this$currentMask7, args) : (_get2 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"extractTail\", this)).call.apply(_get2, [this].concat(args));\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n\n _get(_getPrototypeOf(MaskedDynamic.prototype), \"doCommit\", this).call(this);\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos() {\n var _this$currentMask8, _get3;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.currentMask ? (_this$currentMask8 = this.currentMask).nearestInputPos.apply(_this$currentMask8, args) : (_get3 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"nearestInputPos\", this)).call.apply(_get3, [this].concat(args));\n }\n }, {\n key: \"overwrite\",\n get: function get() {\n return this.currentMask ? this.currentMask.overwrite : _get(_getPrototypeOf(MaskedDynamic.prototype), \"overwrite\", this);\n },\n set: function set(overwrite) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n }, {\n key: \"eager\",\n get: function get() {\n return this.currentMask ? this.currentMask.eager : _get(_getPrototypeOf(MaskedDynamic.prototype), \"eager\", this);\n },\n set: function set(eager) {\n console.warn('\"eager\" option is not available in dynamic mask, use this option in siblings');\n }\n /**\n @override\n */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return Array.isArray(mask) && this.compiledMasks.every(function (m, mi) {\n var _mask$mi;\n\n return m.maskEquals((_mask$mi = mask[mi]) === null || _mask$mi === void 0 ? void 0 : _mask$mi.mask);\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValueEquals\",\n value: function typedValueEquals(value) {\n var _this$currentMask9;\n\n return Boolean((_this$currentMask9 = this.currentMask) === null || _this$currentMask9 === void 0 ? void 0 : _this$currentMask9.typedValueEquals(value));\n }\n }]);\n\n return MaskedDynamic;\n}(Masked);\nMaskedDynamic.DEFAULTS = {\n dispatch: function dispatch(appended, masked, flags) {\n if (!masked.compiledMasks.length) return;\n var inputValue = masked.rawInputValue; // simulate input\n\n var inputs = masked.compiledMasks.map(function (m, index) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n m.append(appended, masked.currentMaskFlags(flags));\n var weight = m.rawInputValue.length;\n return {\n weight: weight,\n index: index\n };\n }); // pop masks with longer values first\n\n inputs.sort(function (i1, i2) {\n return i2.weight - i1.weight;\n });\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../_rollupPluginBabelHelpers-67bba7fb.js';\nimport '../core/change-details.js';\n\n/** Mask pipe source and destination types */\n\nvar PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\n\nfunction createPipe(mask) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n var masked = createMask(mask);\n return function (value) {\n return masked.runIsolated(function (m) {\n m[from] = value;\n return m[to];\n });\n };\n}\n/** Pipes value through mask depending on mask type, source and destination options */\n\nfunction pipe(value) {\n for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n pipeArgs[_key - 1] = arguments[_key];\n }\n\n return createPipe.apply(void 0, pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nimport './_rollupPluginBabelHelpers-67bba7fb.js';\nimport './core/utils.js';\nimport './core/change-details.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch (e) {}\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n","/**!\n * lg-thumbnail.js | 1.2.0 | May 20th 2020\n * http://sachinchoolur.github.io/lg-thumbnail.js\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.LgThumbnail = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 1) {\n if (this.core.s.showThumbByDefault) {\n setTimeout(function () {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }, 700);\n }\n\n if (this.core.s.pullCaptionUp) {\n utils.addClass(this.core.outer, 'lg-pull-caption-up');\n }\n\n this.build();\n if (this.core.s.animateThumb) {\n if (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss()) {\n this.enableThumbDrag();\n }\n\n if (this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss()) {\n this.enableThumbSwipe();\n }\n\n this.thumbClickable = false;\n } else {\n this.thumbClickable = true;\n }\n\n this.toggle();\n this.thumbkeyPress();\n }\n };\n\n Thumbnail.prototype.build = function () {\n var _this = this;\n var thumbList = '';\n var vimeoErrorThumbSize = '';\n var $thumb;\n var html = '
' + '
' + '
' + '
';\n\n switch (this.core.s.vimeoThumbSize) {\n case 'thumbnail_large':\n vimeoErrorThumbSize = '640';\n break;\n case 'thumbnail_medium':\n vimeoErrorThumbSize = '200x150';\n break;\n case 'thumbnail_small':\n vimeoErrorThumbSize = '100x75';\n }\n\n utils.addClass(_this.core.outer, 'lg-has-thumb');\n\n _this.core.outer.querySelector('.lg').insertAdjacentHTML('beforeend', html);\n\n _this.thumbOuter = _this.core.outer.querySelector('.lg-thumb-outer');\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n\n if (_this.core.s.animateThumb) {\n _this.core.outer.querySelector('.lg-thumb').style.width = _this.thumbTotalWidth + 'px';\n _this.core.outer.querySelector('.lg-thumb').style.position = 'relative';\n }\n\n if (this.core.s.animateThumb) {\n _this.thumbOuter.style.height = _this.core.s.thumbContHeight + 'px';\n }\n\n function getThumb(src, thumb, index) {\n var isVideo = _this.core.isVideo(src, index) || {};\n var thumbImg;\n var vimeoId = '';\n\n if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {\n if (isVideo.youtube) {\n if (_this.core.s.loadYoutubeThumbnail) {\n thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.vimeo) {\n if (_this.core.s.loadVimeoThumbnail) {\n thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';\n vimeoId = isVideo.vimeo[1];\n } else {\n thumbImg = thumb;\n }\n } else if (isVideo.dailymotion) {\n if (_this.core.s.loadDailymotionThumbnail) {\n thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];\n } else {\n thumbImg = thumb;\n }\n }\n } else {\n thumbImg = thumb;\n }\n\n thumbList += '
';\n vimeoId = '';\n }\n\n if (_this.core.s.dynamic) {\n for (var j = 0; j < _this.core.s.dynamicEl.length; j++) {\n getThumb(_this.core.s.dynamicEl[j].src, _this.core.s.dynamicEl[j].thumb, j);\n }\n } else {\n for (var i = 0; i < _this.core.items.length; i++) {\n if (!_this.core.s.exThumbImage) {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].querySelector('img').getAttribute('src'), i);\n } else {\n getThumb(_this.core.items[i].getAttribute('href') || _this.core.items[i].getAttribute('data-src'), _this.core.items[i].getAttribute(_this.core.s.exThumbImage), i);\n }\n }\n }\n\n _this.core.outer.querySelector('.lg-thumb').innerHTML = thumbList;\n\n $thumb = _this.core.outer.querySelectorAll('.lg-thumb-item');\n\n for (var n = 0; n < $thumb.length; n++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n var $this = $thumb[index];\n var vimeoVideoId = $this.getAttribute('data-vimeo-id');\n if (vimeoVideoId) {\n\n window['lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n] = function (content) {\n $this.querySelector('img').setAttribute('src', content[0][_this.core.s.vimeoThumbSize]);\n };\n\n var script = document.createElement('script');\n script.className = 'lg-script';\n script.src = '//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=lgJsonP' + _this.el.getAttribute('lg-uid') + '' + n;\n document.body.appendChild(script);\n }\n })(n);\n }\n\n // manage active class for thumbnail\n utils.addClass($thumb[_this.core.index], 'active');\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n\n for (var j = 0; j < $thumb.length; j++) {\n utils.removeClass($thumb[j], 'active');\n }\n\n utils.addClass($thumb[_this.core.index], 'active');\n });\n\n for (var k = 0; k < $thumb.length; k++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n utils.on($thumb[index], 'click.lg touchend.lg', function () {\n\n setTimeout(function () {\n\n // In IE9 and bellow touch does not support\n // Go to slide if browser does not support css transitions\n if (_this.thumbClickable && !_this.core.lgBusy || !_this.core.doCss()) {\n _this.core.index = index;\n _this.core.slide(_this.core.index, false, true);\n }\n }, 50);\n });\n })(k);\n }\n\n utils.on(_this.core.el, 'onBeforeSlide.lgtm', function () {\n _this.animateThumb(_this.core.index);\n });\n\n utils.on(window, 'resize.lgthumb orientationchange.lgthumb', function () {\n setTimeout(function () {\n _this.animateThumb(_this.core.index);\n _this.thumbOuterWidth = _this.thumbOuter.offsetWidth;\n }, 200);\n });\n };\n\n Thumbnail.prototype.setTranslate = function (value) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'Transform', 'translate3d(-' + value + 'px, 0px, 0px)');\n };\n\n Thumbnail.prototype.animateThumb = function (index) {\n var $thumb = this.core.outer.querySelector('.lg-thumb');\n if (this.core.s.animateThumb) {\n var position;\n switch (this.core.s.currentPagerPosition) {\n case 'left':\n position = 0;\n break;\n case 'middle':\n position = this.thumbOuterWidth / 2 - this.core.s.thumbWidth / 2;\n break;\n case 'right':\n position = this.thumbOuterWidth - this.core.s.thumbWidth;\n }\n this.left = (this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1 - position;\n if (this.left > this.thumbTotalWidth - this.thumbOuterWidth) {\n this.left = this.thumbTotalWidth - this.thumbOuterWidth;\n }\n\n if (this.left < 0) {\n this.left = 0;\n }\n\n if (this.core.lGalleryOn) {\n if (!utils.hasClass($thumb, 'on')) {\n utils.setVendor(this.core.outer.querySelector('.lg-thumb'), 'TransitionDuration', this.core.s.speed + 'ms');\n }\n\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n } else {\n if (!this.core.doCss()) {\n $thumb.style.left = -this.left + 'px';\n }\n }\n\n this.setTranslate(this.left);\n }\n };\n\n // Enable thumbnail dragging and swiping\n Thumbnail.prototype.enableThumbDrag = function () {\n\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.addClass(_this.thumbOuter, 'lg-grab');\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'mousedown.lgthumb', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n // execute only on .lg-object\n e.preventDefault();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.core.outer.scrollLeft += 1;\n _this.core.outer.scrollLeft -= 1;\n\n // *\n _this.thumbClickable = false;\n utils.removeClass(_this.thumbOuter, 'lg-grab');\n utils.addClass(_this.thumbOuter, 'lg-grabbing');\n }\n });\n\n utils.on(window, 'mousemove.lgthumb', function (e) {\n if (isDraging) {\n tempLeft = _this.left;\n isMoved = true;\n endCoords = e.pageX;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(window, 'mouseup.lgthumb', function () {\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n\n _this.left = tempLeft;\n\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n\n if (isDraging) {\n isDraging = false;\n utils.removeClass(_this.thumbOuter, 'lg-grabbing');\n utils.addClass(_this.thumbOuter, 'lg-grab');\n }\n });\n };\n\n Thumbnail.prototype.enableThumbSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n var tempLeft = 0;\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchstart.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n startCoords = e.targetTouches[0].pageX;\n _this.thumbClickable = false;\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchmove.lg', function (e) {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n isMoved = true;\n\n utils.addClass(_this.thumbOuter, 'lg-dragging');\n\n tempLeft = _this.left;\n\n tempLeft = tempLeft - (endCoords - startCoords);\n\n if (tempLeft > _this.thumbTotalWidth - _this.thumbOuterWidth) {\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\n }\n\n if (tempLeft < 0) {\n tempLeft = 0;\n }\n\n // move current slide\n _this.setTranslate(tempLeft);\n }\n });\n\n utils.on(_this.core.outer.querySelector('.lg-thumb'), 'touchend.lg', function () {\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\n\n if (isMoved) {\n isMoved = false;\n utils.removeClass(_this.thumbOuter, 'lg-dragging');\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\n _this.thumbClickable = true;\n }\n\n _this.left = tempLeft;\n } else {\n _this.thumbClickable = true;\n }\n } else {\n _this.thumbClickable = true;\n }\n });\n };\n\n Thumbnail.prototype.toggle = function () {\n var _this = this;\n if (_this.core.s.toggleThumb) {\n utils.addClass(_this.core.outer, 'lg-can-toggle');\n _this.thumbOuter.insertAdjacentHTML('beforeend', '');\n utils.on(_this.core.outer.querySelector('.lg-toggle-thumb'), 'click.lg', function () {\n if (utils.hasClass(_this.core.outer, 'lg-thumb-open')) {\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n } else {\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n }\n };\n\n Thumbnail.prototype.thumbkeyPress = function () {\n var _this = this;\n utils.on(window, 'keydown.lgthumb', function (e) {\n if (e.keyCode === 38) {\n e.preventDefault();\n utils.addClass(_this.core.outer, 'lg-thumb-open');\n } else if (e.keyCode === 40) {\n e.preventDefault();\n utils.removeClass(_this.core.outer, 'lg-thumb-open');\n }\n });\n };\n\n Thumbnail.prototype.destroy = function (d) {\n if (this.core.s.thumbnail && this.core.items.length > 1) {\n utils.off(window, '.lgthumb');\n if (!d) {\n this.thumbOuter.parentNode.removeChild(this.thumbOuter);\n }\n utils.removeClass(this.core.outer, 'lg-has-thumb');\n\n var lgScript = document.getElementsByClassName('lg-script');\n while (lgScript[0]) {\n lgScript[0].parentNode.removeChild(lgScript[0]);\n }\n }\n };\n\n window.lgModules.thumbnail = Thumbnail;\n});\n\n},{}]},{},[1])(1)\n});\n","/**!\n * lightgallery.js | 1.4.0 | October 13th 2020\n * http://sachinchoolur.github.io/lightgallery.js/\n * Copyright (c) 2016 Sachin N; \n * @license GPLv3 \n */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Lightgallery = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!el) {\n return;\n }\n\n var customEvent = new CustomEvent(event, {\n detail: detail\n });\n el.dispatchEvent(customEvent);\n },\n\n Listener: {\n uid: 0\n },\n on: function on(el, events, fn) {\n var _this = this;\n\n if (!el) {\n return;\n }\n\n events.split(' ').forEach(function (event) {\n var _id = _this.getAttribute(el, 'lg-event-uid') || '';\n utils.Listener.uid++;\n _id += '&' + utils.Listener.uid;\n _this.setAttribute(el, 'lg-event-uid', _id);\n utils.Listener[event + utils.Listener.uid] = fn;\n el.addEventListener(event.split('.')[0], fn, false);\n });\n },\n\n off: function off(el, event) {\n if (!el) {\n return;\n }\n\n var _id = this.getAttribute(el, 'lg-event-uid');\n if (_id) {\n _id = _id.split('&');\n for (var i = 0; i < _id.length; i++) {\n if (_id[i]) {\n var _event = event + _id[i];\n if (_event.substring(0, 1) === '.') {\n for (var key in utils.Listener) {\n if (utils.Listener.hasOwnProperty(key)) {\n if (key.split('.').indexOf(_event.split('.')[1]) > -1) {\n el.removeEventListener(key.split('.')[0], utils.Listener[key]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[key];\n }\n }\n }\n } else {\n el.removeEventListener(_event.split('.')[0], utils.Listener[_event]);\n this.setAttribute(el, 'lg-event-uid', this.getAttribute(el, 'lg-event-uid').replace('&' + _id[i], ''));\n delete utils.Listener[_event];\n }\n }\n }\n }\n },\n\n param: function param(obj) {\n return Object.keys(obj).map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\n }).join('&');\n }\n };\n\n exports.default = utils;\n});\n\n},{}],2:[function(require,module,exports){\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(['./lg-utils'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(require('./lg-utils'));\n } else {\n var mod = {\n exports: {}\n };\n factory(global.lgUtils);\n global.lightgallery = mod.exports;\n }\n})(this, function (_lgUtils) {\n 'use strict';\n\n var _lgUtils2 = _interopRequireDefault(_lgUtils);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n var _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 /** Polyfill the CustomEvent() constructor functionality in Internet Explorer 9 and higher */\n (function () {\n\n if (typeof window.CustomEvent === 'function') {\n return false;\n }\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n })();\n\n window.utils = _lgUtils2.default;\n window.lgData = {\n uid: 0\n };\n\n window.lgModules = {};\n var defaults = {\n\n mode: 'lg-slide',\n\n // Ex : 'ease'\n cssEasing: 'ease',\n\n //'for jquery animation'\n easing: 'linear',\n speed: 600,\n height: '100%',\n width: '100%',\n addClass: '',\n startClass: 'lg-start-zoom',\n backdropDuration: 150,\n\n // Set 0, if u don't want to hide the controls \n hideBarsDelay: 6000,\n\n useLeft: false,\n\n // aria-labelledby attribute fot gallery\n ariaLabelledby: '',\n\n //aria-describedby attribute for gallery\n ariaDescribedby: '',\n\n closable: true,\n loop: true,\n escKey: true,\n keyPress: true,\n controls: true,\n slideEndAnimatoin: true,\n hideControlOnEnd: false,\n mousewheel: false,\n\n getCaptionFromTitleOrAlt: true,\n\n // .lg-item || '.lg-sub-html'\n appendSubHtmlTo: '.lg-sub-html',\n\n subHtmlSelectorRelative: false,\n\n /**\n * @desc number of preload slides\n * will exicute only after the current slide is fully loaded.\n *\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\n * slide will be loaded in the background after the 4th slide is fully loaded..\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\n *\n */\n preload: 1,\n showAfterLoad: true,\n selector: '',\n selectWithin: '',\n nextHtml: '',\n prevHtml: '',\n\n // 0, 1\n index: false,\n\n iframeMaxWidth: '100%',\n\n download: true,\n counter: true,\n appendCounterTo: '.lg-toolbar',\n\n swipeThreshold: 50,\n enableSwipe: true,\n enableDrag: true,\n\n dynamic: false,\n dynamicEl: [],\n galleryId: 1,\n supportLegacyBrowser: true\n };\n\n function Plugin(element, options) {\n\n // Current lightGallery element\n this.el = element;\n\n // lightGallery settings\n this.s = _extends({}, defaults, options);\n\n // When using dynamic mode, ensure dynamicEl is an array\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\n }\n\n // lightGallery modules\n this.modules = {};\n\n // false when lightgallery complete first slide;\n this.lGalleryOn = false;\n\n this.lgBusy = false;\n\n // Timeout function for hiding controls;\n this.hideBartimeout = false;\n\n // To determine browser supports for touch events;\n this.isTouch = 'ontouchstart' in document.documentElement;\n\n // Disable hideControlOnEnd if sildeEndAnimation is true\n if (this.s.slideEndAnimatoin) {\n this.s.hideControlOnEnd = false;\n }\n\n this.items = [];\n\n // Gallery items\n if (this.s.dynamic) {\n this.items = this.s.dynamicEl;\n } else {\n if (this.s.selector === 'this') {\n this.items.push(this.el);\n } else if (this.s.selector !== '') {\n if (this.s.selectWithin) {\n this.items = document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector);\n } else {\n this.items = this.el.querySelectorAll(this.s.selector);\n }\n } else {\n this.items = this.el.children;\n }\n }\n\n // .lg-item\n\n this.___slide = '';\n\n // .lg-outer\n this.outer = '';\n\n this.init();\n\n return this;\n }\n\n Plugin.prototype.init = function () {\n\n var _this = this;\n\n // s.preload should not be more than $item.length\n if (_this.s.preload > _this.items.length) {\n _this.s.preload = _this.items.length;\n }\n\n // if dynamic option is enabled execute immediately\n var _hash = window.location.hash;\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\n\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\n\n _lgUtils2.default.addClass(document.body, 'lg-from-hash');\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n }\n\n if (_this.s.dynamic) {\n\n _lgUtils2.default.trigger(this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || 0;\n\n // prevent accidental double execution\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _lgUtils2.default.addClass(document.body, 'lg-on');\n setTimeout(function () {\n _this.build(_this.index);\n });\n }\n } else {\n\n for (var i = 0; i < _this.items.length; i++) {\n\n /*jshint loopfunc: true */\n (function (index) {\n\n // Using different namespace for click because click event should not unbind if selector is same object('this')\n _lgUtils2.default.on(_this.items[index], 'click.lgcustom', function (e) {\n\n e.preventDefault();\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeOpen');\n\n _this.index = _this.s.index || index;\n\n if (!_lgUtils2.default.hasClass(document.body, 'lg-on')) {\n _this.build(_this.index);\n _lgUtils2.default.addClass(document.body, 'lg-on');\n }\n });\n })(i);\n }\n }\n };\n\n Plugin.prototype.build = function (index) {\n\n var _this = this;\n\n _this.structure();\n\n for (var key in window.lgModules) {\n _this.modules[key] = new window.lgModules[key](_this.el);\n }\n\n // initiate slide function\n _this.slide(index, false, false);\n\n if (_this.s.keyPress) {\n _this.keyPress();\n }\n\n if (_this.items.length > 1) {\n\n _this.arrow();\n\n setTimeout(function () {\n _this.enableDrag();\n _this.enableSwipe();\n }, 50);\n\n if (_this.s.mousewheel) {\n _this.mousewheel();\n }\n }\n\n _this.counter();\n\n _this.closeGallery();\n\n _lgUtils2.default.trigger(_this.el, 'onAfterOpen');\n\n // Hide controllers if mouse doesn't move for some period\n if (_this.s.hideBarsDelay > 0) {\n\n // Hide controls if user doesn't use mouse or touch after opening gallery\n var initialHideBarTimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n _lgUtils2.default.on(_this.outer, 'mousemove.lg click.lg touchstart.lg', function () {\n\n // Cancel initalHideBarTimout if user uses mouse or touch events\n // Before it fires\n clearTimeout(initialHideBarTimeout);\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-items');\n\n clearTimeout(_this.hideBartimeout);\n\n // Timeout will be cleared on each slide movement also\n _this.hideBartimeout = setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-items');\n }, _this.s.hideBarsDelay);\n });\n }\n };\n\n Plugin.prototype.structure = function () {\n var list = '';\n var controls = '';\n var i = 0;\n var subHtmlCont = '';\n var template;\n var _this = this;\n\n document.body.insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.setVendor(document.querySelector('.lg-backdrop'), 'TransitionDuration', this.s.backdropDuration + 'ms');\n\n // Create gallery items\n for (i = 0; i < this.items.length; i++) {\n list += '
';\n }\n\n // Create controlls\n if (this.s.controls && this.items.length > 1) {\n controls = '
' + '' + '' + '
';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n subHtmlCont = '
';\n }\n\n var ariaLabelledby = this.s.ariaLabelledby ? 'aria-labelledby=\"' + this.s.ariaLabelledby + '\"' : '';\n var ariaDescribedby = this.s.ariaDescribedby ? 'aria-describedby=\"' + this.s.ariaDescribedby + '\"' : '';\n\n template = '
' + '
' + '
' + list + '
' + '
' + '' + '
' + controls + subHtmlCont + '
' + '
';\n\n document.body.insertAdjacentHTML('beforeend', template);\n this.outer = document.querySelector('.lg-outer');\n this.outer.focus();\n this.___slide = this.outer.querySelectorAll('.lg-item');\n\n if (this.s.useLeft) {\n _lgUtils2.default.addClass(this.outer, 'lg-use-left');\n\n // Set mode lg-slide if use left is true;\n this.s.mode = 'lg-slide';\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-use-css3');\n }\n\n // For fixed height gallery\n _this.setTop();\n _lgUtils2.default.on(window, 'resize.lg orientationchange.lg', function () {\n setTimeout(function () {\n _this.setTop();\n }, 100);\n });\n\n // add class lg-current to remove initial transition\n _lgUtils2.default.addClass(this.___slide[this.index], 'lg-current');\n\n // add Class for css support and transition mode\n if (this.doCss()) {\n _lgUtils2.default.addClass(this.outer, 'lg-css3');\n } else {\n _lgUtils2.default.addClass(this.outer, 'lg-css');\n\n // Set speed 0 because no animation will happen if browser doesn't support css3\n this.s.speed = 0;\n }\n\n _lgUtils2.default.addClass(this.outer, this.s.mode);\n\n if (this.s.enableDrag && this.items.length > 1) {\n _lgUtils2.default.addClass(this.outer, 'lg-grab');\n }\n\n if (this.s.showAfterLoad) {\n _lgUtils2.default.addClass(this.outer, 'lg-show-after-load');\n }\n\n if (this.doCss()) {\n var inner = this.outer.querySelector('.lg-inner');\n _lgUtils2.default.setVendor(inner, 'TransitionTimingFunction', this.s.cssEasing);\n _lgUtils2.default.setVendor(inner, 'TransitionDuration', this.s.speed + 'ms');\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(document.querySelector('.lg-backdrop'), 'in');\n });\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.outer, 'lg-visible');\n }, this.s.backdropDuration);\n\n if (this.s.download) {\n this.outer.querySelector('.lg-toolbar').insertAdjacentHTML('beforeend', '');\n }\n\n // Store the current scroll top value to scroll back after closing the gallery..\n this.prevScrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n };\n\n // For fixed height gallery\n Plugin.prototype.setTop = function () {\n if (this.s.height !== '100%') {\n var wH = window.innerHeight;\n var top = (wH - parseInt(this.s.height, 10)) / 2;\n var lGallery = this.outer.querySelector('.lg');\n if (wH >= parseInt(this.s.height, 10)) {\n lGallery.style.top = top + 'px';\n } else {\n lGallery.style.top = '0px';\n }\n }\n };\n\n // Find css3 support\n Plugin.prototype.doCss = function () {\n // check for css animation support\n var support = function support() {\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\n var root = document.documentElement;\n var i = 0;\n for (i = 0; i < transition.length; i++) {\n if (transition[i] in root.style) {\n return true;\n }\n }\n };\n\n if (support()) {\n return true;\n }\n\n return false;\n };\n\n /**\n * @desc Check the given src is video\n * @param {String} src\n * @return {Object} video type\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\n */\n Plugin.prototype.isVideo = function (src, index) {\n\n var html;\n if (this.s.dynamic) {\n html = this.s.dynamicEl[index].html;\n } else {\n html = this.items[index].getAttribute('data-html');\n }\n\n if (!src && html) {\n return {\n html5: true\n };\n }\n\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\n\n if (youtube) {\n return {\n youtube: youtube\n };\n } else if (vimeo) {\n return {\n vimeo: vimeo\n };\n } else if (dailymotion) {\n return {\n dailymotion: dailymotion\n };\n } else if (vk) {\n return {\n vk: vk\n };\n }\n };\n\n /**\n * @desc Create image counter\n * Ex: 1/10\n */\n Plugin.prototype.counter = function () {\n if (this.s.counter) {\n this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML('beforeend', '
' + (parseInt(this.index, 10) + 1) + ' / ' + this.items.length + '
');\n }\n };\n\n /**\n * @desc add sub-html into the slide\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.addHtml = function (index) {\n var subHtml = null;\n var currentEle;\n if (this.s.dynamic) {\n subHtml = this.s.dynamicEl[index].subHtml;\n } else {\n currentEle = this.items[index];\n subHtml = currentEle.getAttribute('data-sub-html');\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\n subHtml = currentEle.getAttribute('title');\n if (subHtml && currentEle.querySelector('img')) {\n subHtml = currentEle.querySelector('img').getAttribute('alt');\n }\n }\n }\n\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n\n // get first letter of subhtml\n // if first letter starts with . or # get the html form the jQuery object\n var fL = subHtml.substring(0, 1);\n if (fL === '.' || fL === '#') {\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\n subHtml = currentEle.querySelector(subHtml).innerHTML;\n } else {\n subHtml = document.querySelector(subHtml).innerHTML;\n }\n }\n } else {\n subHtml = '';\n }\n\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML = subHtml;\n } else {\n this.___slide[index].insertAdjacentHTML('beforeend', subHtml);\n }\n\n // Add lg-empty-html class if title doesn't exist\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\n if (subHtml === '') {\n _lgUtils2.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n } else {\n _lgUtils2.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo), 'lg-empty-html');\n }\n }\n\n _lgUtils2.default.trigger(this.el, 'onAfterAppendSubHtml', {\n index: index\n });\n };\n\n /**\n * @desc Preload slides\n * @param {Number} index - index of the slide\n */\n Plugin.prototype.preload = function (index) {\n var i = 1;\n var j = 1;\n for (i = 1; i <= this.s.preload; i++) {\n if (i >= this.items.length - index) {\n break;\n }\n\n this.loadContent(index + i, false, 0);\n }\n\n for (j = 1; j <= this.s.preload; j++) {\n if (index - j < 0) {\n break;\n }\n\n this.loadContent(index - j, false, 0);\n }\n };\n\n /**\n * @desc Load slide content into slide.\n * @param {Number} index - index of the slide.\n * @param {Boolean} rec - if true call loadcontent() function again.\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\n */\n Plugin.prototype.loadContent = function (index, rec, delay) {\n\n var _this = this;\n var _hasPoster = false;\n var _img;\n var _src;\n var _poster;\n var _srcset;\n var _sizes;\n var _html;\n var _alt;\n var getResponsiveSrc = function getResponsiveSrc(srcItms) {\n var rsWidth = [];\n var rsSrc = [];\n for (var i = 0; i < srcItms.length; i++) {\n var __src = srcItms[i].split(' ');\n\n // Manage empty space\n if (__src[0] === '') {\n __src.splice(0, 1);\n }\n\n rsSrc.push(__src[0]);\n rsWidth.push(__src[1]);\n }\n\n var wWidth = window.innerWidth;\n for (var j = 0; j < rsWidth.length; j++) {\n if (parseInt(rsWidth[j], 10) > wWidth) {\n _src = rsSrc[j];\n break;\n }\n }\n };\n\n if (_this.s.dynamic) {\n\n if (_this.s.dynamicEl[index].poster) {\n _hasPoster = true;\n _poster = _this.s.dynamicEl[index].poster;\n }\n\n _html = _this.s.dynamicEl[index].html;\n _src = _this.s.dynamicEl[index].src;\n _alt = _this.s.dynamicEl[index].alt;\n\n if (_this.s.dynamicEl[index].responsive) {\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\n getResponsiveSrc(srcDyItms);\n }\n\n _srcset = _this.s.dynamicEl[index].srcset;\n _sizes = _this.s.dynamicEl[index].sizes;\n } else {\n\n if (_this.items[index].getAttribute('data-poster')) {\n _hasPoster = true;\n _poster = _this.items[index].getAttribute('data-poster');\n }\n\n _html = _this.items[index].getAttribute('data-html');\n _src = _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src');\n _alt = _this.items[index].getAttribute('title');\n\n if (_this.items[index].querySelector('img')) {\n _alt = _alt || _this.items[index].querySelector('img').getAttribute('alt');\n }\n\n if (_this.items[index].getAttribute('data-responsive')) {\n var srcItms = _this.items[index].getAttribute('data-responsive').split(',');\n getResponsiveSrc(srcItms);\n }\n\n _srcset = _this.items[index].getAttribute('data-srcset');\n _sizes = _this.items[index].getAttribute('data-sizes');\n }\n\n //if (_src || _srcset || _sizes || _poster) {\n\n var iframe = false;\n if (_this.s.dynamic) {\n if (_this.s.dynamicEl[index].iframe) {\n iframe = true;\n }\n } else {\n if (_this.items[index].getAttribute('data-iframe') === 'true') {\n iframe = true;\n }\n }\n\n var _isVideo = _this.isVideo(_src, index);\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-loaded')) {\n if (iframe) {\n _this.___slide[index].insertAdjacentHTML('afterbegin', '
');\n } else if (_hasPoster) {\n var videoClass = '';\n if (_isVideo && _isVideo.youtube) {\n videoClass = 'lg-has-youtube';\n } else if (_isVideo && _isVideo.vimeo) {\n videoClass = 'lg-has-vimeo';\n } else {\n videoClass = 'lg-has-html5';\n }\n\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n } else if (_isVideo) {\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n _lgUtils2.default.trigger(_this.el, 'hasVideo', {\n index: index,\n src: _src,\n html: _html\n });\n } else {\n _alt = _alt ? 'alt=\"' + _alt + '\"' : '';\n _this.___slide[index].insertAdjacentHTML('beforeend', '
');\n }\n\n _lgUtils2.default.trigger(_this.el, 'onAferAppendSlide', {\n index: index\n });\n\n _img = _this.___slide[index].querySelector('.lg-object');\n if (_sizes) {\n _img.setAttribute('sizes', _sizes);\n }\n\n if (_srcset) {\n _img.setAttribute('srcset', _srcset);\n\n if (this.s.supportLegacyBrowser) {\n try {\n picturefill({\n elements: [_img[0]]\n });\n } catch (e) {\n console.warn('If you want srcset to be supported for older browsers, ' + 'please include picturefil javascript library in your document.');\n }\n }\n }\n\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\n _this.addHtml(index);\n }\n\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-loaded');\n }\n\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n\n // For first time add some delay for displaying the start animation.\n var _speed = 0;\n\n // Do not change the delay value because it is required for zoom plugin.\n // If gallery opened from direct url (hash) speed value should be 0\n if (delay && !_lgUtils2.default.hasClass(document.body, 'lg-from-hash')) {\n _speed = delay;\n }\n\n setTimeout(function () {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n\n _lgUtils2.default.trigger(_this.el, 'onSlideItemLoad', {\n index: index,\n delay: delay || 0\n });\n }, _speed);\n });\n\n // @todo check load state for html5 videos\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-complete');\n }\n\n if (rec === true) {\n if (!_lgUtils2.default.hasClass(_this.___slide[index], 'lg-complete')) {\n _lgUtils2.default.on(_this.___slide[index].querySelector('.lg-object'), 'load.lg error.lg', function () {\n _this.preload(index);\n });\n } else {\n _this.preload(index);\n }\n }\n\n //}\n };\n\n /**\n * @desc slide function for lightgallery\n ** Slide() gets call on start\n ** ** Set lg.on true once slide() function gets called.\n ** Call loadContent() on slide() function inside setTimeout\n ** ** On first slide we do not want any animation like slide of fade\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\n ** ** Else loadContent() should wait for the transition to complete.\n ** ** So set timeout s.speed + 50\n <=> ** loadContent() will load slide content in to the particular slide\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\n ** ** avoid simultaneous image load\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\n ** loadContent() <====> Preload();\n \n * @param {Number} index - index of the slide\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\n */\n Plugin.prototype.slide = function (index, fromTouch, fromThumb) {\n\n var _prevIndex = 0;\n for (var i = 0; i < this.___slide.length; i++) {\n if (_lgUtils2.default.hasClass(this.___slide[i], 'lg-current')) {\n _prevIndex = i;\n break;\n }\n }\n\n var _this = this;\n\n // Prevent if multiple call\n // Required for hsh plugin\n if (_this.lGalleryOn && _prevIndex === index) {\n return;\n }\n\n var _length = this.___slide.length;\n var _time = _this.lGalleryOn ? this.s.speed : 0;\n var _next = false;\n var _prev = false;\n\n if (!_this.lgBusy) {\n\n if (this.s.download) {\n var _src;\n if (_this.s.dynamic) {\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\n } else {\n _src = _this.items[index].getAttribute('data-download-url') !== 'false' && (_this.items[index].getAttribute('data-download-url') || _this.items[index].getAttribute('href') || _this.items[index].getAttribute('data-src'));\n }\n\n if (_src) {\n document.getElementById('lg-download').setAttribute('href', _src);\n _lgUtils2.default.removeClass(_this.outer, 'lg-hide-download');\n } else {\n _lgUtils2.default.addClass(_this.outer, 'lg-hide-download');\n }\n }\n\n _lgUtils2.default.trigger(_this.el, 'onBeforeSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n\n _this.lgBusy = true;\n\n clearTimeout(_this.hideBartimeout);\n\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\n\n // wait for slide animation to complete\n setTimeout(function () {\n _this.addHtml(index);\n }, _time);\n }\n\n this.arrowDisable(index);\n\n if (!fromTouch) {\n\n // remove all transitions\n _lgUtils2.default.addClass(_this.outer, 'lg-no-trans');\n\n for (var j = 0; j < this.___slide.length; j++) {\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-prev-slide');\n _lgUtils2.default.removeClass(this.___slide[j], 'lg-next-slide');\n }\n\n if (index < _prevIndex) {\n _prev = true;\n if (index === 0 && _prevIndex === _length - 1 && !fromThumb) {\n _prev = false;\n _next = true;\n }\n } else if (index > _prevIndex) {\n _next = true;\n if (index === _length - 1 && _prevIndex === 0 && !fromThumb) {\n _prev = true;\n _next = false;\n }\n }\n\n if (_prev) {\n\n //prevslide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-prev-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-next-slide');\n } else if (_next) {\n\n // next slide\n _lgUtils2.default.addClass(this.___slide[index], 'lg-next-slide');\n _lgUtils2.default.addClass(this.___slide[_prevIndex], 'lg-prev-slide');\n }\n\n // give 50 ms for browser to add/remove class\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n\n // reset all transitions\n _lgUtils2.default.removeClass(_this.outer, 'lg-no-trans');\n }, 50);\n } else {\n\n var touchPrev = index - 1;\n var touchNext = index + 1;\n\n if (index === 0 && _prevIndex === _length - 1) {\n\n // next slide\n touchNext = 0;\n touchPrev = _length - 1;\n } else if (index === _length - 1 && _prevIndex === 0) {\n\n // prev slide\n touchNext = 0;\n touchPrev = _length - 1;\n }\n\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-prev-slide'), 'lg-prev-slide');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-current'), 'lg-current');\n _lgUtils2.default.removeClass(_this.outer.querySelector('.lg-next-slide'), 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[touchPrev], 'lg-prev-slide');\n _lgUtils2.default.addClass(_this.___slide[touchNext], 'lg-next-slide');\n _lgUtils2.default.addClass(_this.___slide[index], 'lg-current');\n }\n\n if (_this.lGalleryOn) {\n setTimeout(function () {\n _this.loadContent(index, true, 0);\n }, this.s.speed + 50);\n\n setTimeout(function () {\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }, this.s.speed);\n } else {\n _this.loadContent(index, true, _this.s.backdropDuration);\n\n _this.lgBusy = false;\n _lgUtils2.default.trigger(_this.el, 'onAfterSlide', {\n prevIndex: _prevIndex,\n index: index,\n fromTouch: fromTouch,\n fromThumb: fromThumb\n });\n }\n\n _this.lGalleryOn = true;\n\n if (this.s.counter) {\n if (document.getElementById('lg-counter-current')) {\n document.getElementById('lg-counter-current').innerHTML = index + 1;\n }\n }\n }\n };\n\n /**\n * @desc Go to next slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToNextSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index + 1 < _this.___slide.length) {\n _this.index++;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = 0;\n _lgUtils2.default.trigger(_this.el, 'onBeforeNextSlide', {\n index: _this.index\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-right-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-right-end');\n }, 400);\n }\n }\n }\n };\n\n /**\n * @desc Go to previous slide\n * @param {Boolean} fromTouch - true if slide function called via touch event\n */\n Plugin.prototype.goToPrevSlide = function (fromTouch) {\n var _this = this;\n if (!_this.lgBusy) {\n if (_this.index > 0) {\n _this.index--;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else {\n if (_this.s.loop) {\n _this.index = _this.items.length - 1;\n _lgUtils2.default.trigger(_this.el, 'onBeforePrevSlide', {\n index: _this.index,\n fromTouch: fromTouch\n });\n _this.slide(_this.index, fromTouch, false);\n } else if (_this.s.slideEndAnimatoin) {\n _lgUtils2.default.addClass(_this.outer, 'lg-left-end');\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-left-end');\n }, 400);\n }\n }\n }\n };\n\n Plugin.prototype.keyPress = function () {\n var _this = this;\n if (this.items.length > 1) {\n _lgUtils2.default.on(window, 'keyup.lg', function (e) {\n if (_this.items.length > 1) {\n if (e.keyCode === 37) {\n e.preventDefault();\n _this.goToPrevSlide();\n }\n\n if (e.keyCode === 39) {\n e.preventDefault();\n _this.goToNextSlide();\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'keydown.lg', function (e) {\n if (_this.s.escKey === true && e.keyCode === 27) {\n e.preventDefault();\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-thumb-open')) {\n _this.destroy();\n } else {\n _lgUtils2.default.removeClass(_this.outer, 'lg-thumb-open');\n }\n }\n });\n };\n\n Plugin.prototype.arrow = function () {\n var _this = this;\n _lgUtils2.default.on(this.outer.querySelector('.lg-prev'), 'click.lg', function () {\n _this.goToPrevSlide();\n });\n\n _lgUtils2.default.on(this.outer.querySelector('.lg-next'), 'click.lg', function () {\n _this.goToNextSlide();\n });\n };\n\n Plugin.prototype.arrowDisable = function (index) {\n\n // Disable arrows if s.hideControlOnEnd is true\n if (!this.s.loop && this.s.hideControlOnEnd) {\n var next = this.outer.querySelector('.lg-next');\n var prev = this.outer.querySelector('.lg-prev');\n if (index + 1 < this.___slide.length) {\n next.removeAttribute('disabled');\n _lgUtils2.default.removeClass(next, 'disabled');\n } else {\n next.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(next, 'disabled');\n }\n\n if (index > 0) {\n prev.removeAttribute('disabled');\n _lgUtils2.default.removeClass(prev, 'disabled');\n } else {\n prev.setAttribute('disabled', 'disabled');\n _lgUtils2.default.addClass(prev, 'disabled');\n }\n }\n };\n\n Plugin.prototype.setTranslate = function (el, xValue, yValue) {\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\n if (this.s.useLeft) {\n el.style.left = xValue;\n } else {\n _lgUtils2.default.setVendor(el, 'Transform', 'translate3d(' + xValue + 'px, ' + yValue + 'px, 0px)');\n }\n };\n\n Plugin.prototype.touchMove = function (startCoords, endCoords) {\n\n var distance = endCoords - startCoords;\n\n if (Math.abs(distance) > 15) {\n // reset opacity and transition duration\n _lgUtils2.default.addClass(this.outer, 'lg-dragging');\n\n // move current slide\n this.setTranslate(this.___slide[this.index], distance, 0);\n\n // move next and prev slide with current slide\n this.setTranslate(document.querySelector('.lg-prev-slide'), -this.___slide[this.index].clientWidth + distance, 0);\n this.setTranslate(document.querySelector('.lg-next-slide'), this.___slide[this.index].clientWidth + distance, 0);\n }\n };\n\n Plugin.prototype.touchEnd = function (distance) {\n var _this = this;\n\n // keep slide animation for any mode while dragg/swipe\n if (_this.s.mode !== 'lg-slide') {\n _lgUtils2.default.addClass(_this.outer, 'lg-slide');\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n if (!_lgUtils2.default.hasClass(this.___slide[i], 'lg-current') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-prev-slide') && !_lgUtils2.default.hasClass(this.___slide[i], 'lg-next-slide')) {\n this.___slide[i].style.opacity = '0';\n }\n }\n\n // set transition duration\n setTimeout(function () {\n _lgUtils2.default.removeClass(_this.outer, 'lg-dragging');\n if (distance < 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToNextSlide(true);\n } else if (distance > 0 && Math.abs(distance) > _this.s.swipeThreshold) {\n _this.goToPrevSlide(true);\n } else if (Math.abs(distance) < 5) {\n\n // Trigger click if distance is less than 5 pix\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n for (var i = 0; i < _this.___slide.length; i++) {\n _this.___slide[i].removeAttribute('style');\n }\n });\n\n // remove slide class once drag/swipe is completed if mode is not slide\n setTimeout(function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging') && _this.s.mode !== 'lg-slide') {\n _lgUtils2.default.removeClass(_this.outer, 'lg-slide');\n }\n }, _this.s.speed + 100);\n };\n\n Plugin.prototype.enableSwipe = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isMoved = false;\n\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\n\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'touchstart.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed') && !_this.lgBusy) {\n e.preventDefault();\n _this.manageSwipeClass();\n startCoords = e.targetTouches[0].pageX;\n }\n });\n }\n\n for (var j = 0; j < _this.___slide.length; j++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[j], 'touchmove.lg', function (e) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n e.preventDefault();\n endCoords = e.targetTouches[0].pageX;\n _this.touchMove(startCoords, endCoords);\n isMoved = true;\n }\n });\n }\n\n for (var k = 0; k < _this.___slide.length; k++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[k], 'touchend.lg', function () {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n } else {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n }\n });\n }\n }\n };\n\n Plugin.prototype.enableDrag = function () {\n var _this = this;\n var startCoords = 0;\n var endCoords = 0;\n var isDraging = false;\n var isMoved = false;\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\n for (var i = 0; i < _this.___slide.length; i++) {\n /*jshint loopfunc: true */\n _lgUtils2.default.on(_this.___slide[i], 'mousedown.lg', function (e) {\n // execute only on .lg-object\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-zoomed')) {\n if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n e.preventDefault();\n\n if (!_this.lgBusy) {\n _this.manageSwipeClass();\n startCoords = e.pageX;\n isDraging = true;\n\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\n _this.outer.scrollLeft += 1;\n _this.outer.scrollLeft -= 1;\n\n // *\n\n _lgUtils2.default.removeClass(_this.outer, 'lg-grab');\n _lgUtils2.default.addClass(_this.outer, 'lg-grabbing');\n\n _lgUtils2.default.trigger(_this.el, 'onDragstart');\n }\n }\n }\n });\n }\n\n _lgUtils2.default.on(window, 'mousemove.lg', function (e) {\n if (isDraging) {\n isMoved = true;\n endCoords = e.pageX;\n _this.touchMove(startCoords, endCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragmove');\n }\n });\n\n _lgUtils2.default.on(window, 'mouseup.lg', function (e) {\n if (isMoved) {\n isMoved = false;\n _this.touchEnd(endCoords - startCoords);\n _lgUtils2.default.trigger(_this.el, 'onDragend');\n } else if (_lgUtils2.default.hasClass(e.target, 'lg-object') || _lgUtils2.default.hasClass(e.target, 'lg-video-play')) {\n _lgUtils2.default.trigger(_this.el, 'onSlideClick');\n }\n\n // Prevent execution on click\n if (isDraging) {\n isDraging = false;\n _lgUtils2.default.removeClass(_this.outer, 'lg-grabbing');\n _lgUtils2.default.addClass(_this.outer, 'lg-grab');\n }\n });\n }\n };\n\n Plugin.prototype.manageSwipeClass = function () {\n var touchNext = this.index + 1;\n var touchPrev = this.index - 1;\n var length = this.___slide.length;\n if (this.s.loop) {\n if (this.index === 0) {\n touchPrev = length - 1;\n } else if (this.index === length - 1) {\n touchNext = 0;\n }\n }\n\n for (var i = 0; i < this.___slide.length; i++) {\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-next-slide');\n _lgUtils2.default.removeClass(this.___slide[i], 'lg-prev-slide');\n }\n\n if (touchPrev > -1) {\n _lgUtils2.default.addClass(this.___slide[touchPrev], 'lg-prev-slide');\n }\n\n _lgUtils2.default.addClass(this.___slide[touchNext], 'lg-next-slide');\n };\n\n Plugin.prototype.mousewheel = function () {\n var _this = this;\n _lgUtils2.default.on(_this.outer, 'mousewheel.lg', function (e) {\n\n if (!e.deltaY) {\n return;\n }\n\n if (e.deltaY > 0) {\n _this.goToPrevSlide();\n } else {\n _this.goToNextSlide();\n }\n\n e.preventDefault();\n });\n };\n\n Plugin.prototype.closeGallery = function () {\n\n var _this = this;\n var mousedown = false;\n _lgUtils2.default.on(this.outer.querySelector('.lg-close'), 'click.lg', function () {\n _this.destroy();\n });\n\n if (_this.s.closable) {\n\n // If you drag the slide and release outside gallery gets close on chrome\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\n _lgUtils2.default.on(_this.outer, 'mousedown.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap')) {\n mousedown = true;\n } else {\n mousedown = false;\n }\n });\n\n _lgUtils2.default.on(_this.outer, 'mouseup.lg', function (e) {\n\n if (_lgUtils2.default.hasClass(e.target, 'lg-outer') || _lgUtils2.default.hasClass(e.target, 'lg-item') || _lgUtils2.default.hasClass(e.target, 'lg-img-wrap') && mousedown) {\n if (!_lgUtils2.default.hasClass(_this.outer, 'lg-dragging')) {\n _this.destroy();\n }\n }\n });\n }\n };\n\n Plugin.prototype.destroy = function (d) {\n\n var _this = this;\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onBeforeClose');\n }\n\n document.body.scrollTop = _this.prevScrollTop;\n document.documentElement.scrollTop = _this.prevScrollTop;\n\n /**\n * if d is false or undefined destroy will only close the gallery\n * plugins instance remains with the element\n *\n * if d is true destroy will completely remove the plugin\n */\n\n if (d) {\n if (!_this.s.dynamic) {\n // only when not using dynamic mode is $items a jquery collection\n\n for (var i = 0; i < this.items.length; i++) {\n _lgUtils2.default.off(this.items[i], '.lg');\n _lgUtils2.default.off(this.items[i], '.lgcustom');\n }\n }\n\n var lguid = _this.el.getAttribute('lg-uid');\n delete window.lgData[lguid];\n _this.el.removeAttribute('lg-uid');\n }\n\n // Unbind all events added by lightGallery\n _lgUtils2.default.off(this.el, '.lgtm');\n\n // Distroy all lightGallery modules\n for (var key in window.lgModules) {\n if (_this.modules[key]) {\n _this.modules[key].destroy(d);\n }\n }\n\n this.lGalleryOn = false;\n\n clearTimeout(_this.hideBartimeout);\n this.hideBartimeout = false;\n _lgUtils2.default.off(window, '.lg');\n _lgUtils2.default.removeClass(document.body, 'lg-on');\n _lgUtils2.default.removeClass(document.body, 'lg-from-hash');\n\n if (_this.outer) {\n _lgUtils2.default.removeClass(_this.outer, 'lg-visible');\n }\n\n _lgUtils2.default.removeClass(document.querySelector('.lg-backdrop'), 'in');\n setTimeout(function () {\n try {\n if (_this.outer) {\n _this.outer.parentNode.removeChild(_this.outer);\n }\n\n if (document.querySelector('.lg-backdrop')) {\n document.querySelector('.lg-backdrop').parentNode.removeChild(document.querySelector('.lg-backdrop'));\n }\n\n if (!d) {\n _lgUtils2.default.trigger(_this.el, 'onCloseAfter');\n }\n _this.el.focus();\n } catch (err) {}\n }, _this.s.backdropDuration + 50);\n };\n\n window.lightGallery = function (el, options) {\n if (!el) {\n return;\n }\n\n try {\n if (!el.getAttribute('lg-uid')) {\n var uid = 'lg' + window.lgData.uid++;\n window.lgData[uid] = new Plugin(el, options);\n el.setAttribute('lg-uid', uid);\n } else {\n window.lgData[el.getAttribute('lg-uid')].init();\n }\n } catch (err) {\n console.error('lightGallery has not initiated properly', err);\n }\n };\n});\n\n},{\"./lg-utils\":1}]},{},[2])(2)\n});\n","/**\n* @author: Rinat G. http://coding.kz\n* @copyright: Copyright (c) 2019 Rinat G.\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\n*/\n\n// Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Make globaly available as well\n define(['moment'], function (moment) {\n return factory(moment);\n });\n } else if (typeof module === 'object' && module.exports) {\n // Node / Browserify\n var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');\n module.exports = factory(moment);\n } else {\n // Browser globals\n root.Lightpick = factory(root.moment);\n }\n}(this, function(moment) {\n 'use strict';\n\n var document = window.document,\n\n defaults = {\n field: null,\n secondField: null,\n firstDay: 1,\n parentEl: 'body',\n lang: 'auto',\n format: 'DD/MM/YYYY',\n separator: ' - ',\n numberOfMonths: 1,\n numberOfColumns: 2,\n singleDate: true,\n autoclose: true,\n repick: false,\n startDate: null,\n endDate: null,\n minDate: null,\n maxDate: null,\n disableDates: null,\n selectForward: false,\n selectBackward: false,\n minDays: null,\n maxDays: null,\n onSelect: null,\n onOpen: null,\n onClose: null,\n onError: null,\n hoveringTooltip: true,\n hideOnBodyClick: true,\n footer: false,\n disabledDatesInRange: true,\n tooltipNights: false,\n orientation: 'auto',\n disableWeekends: false,\n locale: {\n buttons: {\n prev: '←',\n next: '→',\n close: '×',\n reset: 'Reset',\n apply: 'Apply',\n },\n tooltip: {\n one: 'day',\n other: 'days',\n },\n tooltipOnDisabled: null,\n pluralize: function(i, locale){\n if (typeof i === \"string\") i = parseInt(i, 10);\n\n if (i === 1 && 'one' in locale) return locale.one;\n if ('other' in locale) return locale.other;\n\n return '';\n }\n }\n },\n\n renderTopButtons = function(opts, viewMode)\n {\n return '
'\n + ''\n + ''\n + ''\n + (!opts.autoclose ? '' : '')\n + '
';\n },\n\n weekdayName = function(opts, day, short)\n {\n return new Date(1970, 0, day).toLocaleString(opts.lang, { weekday: short ? 'short' : 'long' })\n },\n\n renderDay = function(opts, date, dummy, extraClass)\n {\n if (dummy) return '
';\n\n var date = moment(date),\n prevMonth = moment(date).subtract(1, 'month'),\n nextMonth = moment(date).add(1, 'month');\n\n var day = {\n time: moment(date).valueOf(),\n className: ['lightpick__day', 'is-available']\n };\n\n if (extraClass instanceof Array || Object.prototype.toString.call(extraClass) === '[object Array]') {\n extraClass = extraClass.filter( function( el ) {\n return ['lightpick__day', 'is-available', 'is-previous-month', 'is-next-month'].indexOf( el ) >= 0;\n });\n day.className = day.className.concat(extraClass);\n }\n else {\n day.className.push(extraClass);\n }\n\n if (opts.disableDates) {\n for (var i = 0; i < opts.disableDates.length; i++) {\n if (opts.disableDates[i] instanceof Array || Object.prototype.toString.call(opts.disableDates[i]) === '[object Array]') {\n var _from = moment(opts.disableDates[i][0]),\n _to = moment(opts.disableDates[i][1]);\n\n if (_from.isValid() && _to.isValid() && date.isBetween(_from, _to, 'day', '[]')){\n day.className.push('is-disabled');\n }\n }\n else if (moment(opts.disableDates[i]).isValid() && moment(opts.disableDates[i]).isSame(date, 'day')) {\n day.className.push('is-disabled');\n }\n\n if (day.className.indexOf('is-disabled') >= 0) {\n\n if (opts.locale.tooltipOnDisabled && (!opts.startDate || date.isAfter(opts.startDate) || opts.startDate && opts.endDate)) {\n day.className.push('disabled-tooltip');\n }\n\n if (day.className.indexOf('is-start-date') >= 0) {\n this.setStartDate(null);\n this.setEndDate(null);\n }\n else if (day.className.indexOf('is-end-date') >= 0) {\n this.setEndDate(null);\n }\n }\n }\n }\n\n if (opts.minDays && opts.startDate && !opts.endDate) {\n if (date.isBetween(moment(opts.startDate).subtract(opts.minDays - 1, 'day'), moment(opts.startDate).add(opts.minDays - 1, 'day'), 'day')) {\n day.className.push('is-disabled');\n\n if (opts.selectForward && date.isSameOrAfter(opts.startDate)) {\n day.className.push('is-forward-selected');\n day.className.push('is-in-range');\n }\n }\n }\n\n if (opts.maxDays && opts.startDate && !opts.endDate) {\n if (date.isSameOrBefore(moment(opts.startDate).subtract(opts.maxDays, 'day'), 'day')) {\n day.className.push('is-disabled');\n }\n else if (date.isSameOrAfter(moment(opts.startDate).add(opts.maxDays, 'day'), 'day')) {\n day.className.push('is-disabled');\n }\n }\n\n if (opts.repick && (opts.minDays || opts.maxDays) && opts.startDate && opts.endDate) {\n var tempStartDate = moment(opts.repickTrigger == opts.field ? opts.endDate : opts.startDate);\n\n if (opts.minDays) {\n if (date.isBetween(moment(tempStartDate).subtract(opts.minDays - 1, 'day'), moment(tempStartDate).add(opts.minDays - 1, 'day'), 'day')) {\n day.className.push('is-disabled');\n }\n }\n\n if (opts.maxDays) {\n if (date.isSameOrBefore(moment(tempStartDate).subtract(opts.maxDays, 'day'), 'day')) {\n day.className.push('is-disabled');\n }\n else if (date.isSameOrAfter(moment(tempStartDate).add(opts.maxDays, 'day'), 'day')) {\n day.className.push('is-disabled');\n }\n }\n }\n\n if (date.isSame(new Date(), 'day')) {\n day.className.push('is-today');\n }\n\n if (date.isSame(opts.startDate, 'day')) {\n day.className.push('is-start-date');\n }\n\n if (date.isSame(opts.endDate, 'day')) {\n day.className.push('is-end-date');\n }\n\n if (opts.startDate && opts.endDate && date.isBetween(opts.startDate, opts.endDate, 'day', '[]')) {\n day.className.push('is-in-range');\n }\n\n if (moment().isSame(date, 'month')) {\n\n }\n else if (prevMonth.isSame(date, 'month')) {\n day.className.push('is-previous-month');\n }\n else if (nextMonth.isSame(date, 'month')) {\n day.className.push('is-next-month');\n }\n\n if (opts.minDate && date.isBefore(opts.minDate, 'day')) {\n day.className.push('is-disabled');\n }\n\n if (opts.maxDate && date.isAfter(opts.maxDate, 'day')) {\n day.className.push('is-disabled');\n }\n\n if (opts.selectForward && !opts.singleDate && opts.startDate && !opts.endDate && date.isBefore(opts.startDate, 'day')) {\n day.className.push('is-disabled');\n }\n\n if (opts.selectBackward && !opts.singleDate && opts.startDate && !opts.endDate && date.isAfter(opts.startDate, 'day')) {\n day.className.push('is-disabled');\n }\n\n if (opts.disableWeekends && (date.isoWeekday() == 6 || date.isoWeekday() == 7)) {\n day.className.push('is-disabled');\n }\n\n day.className = day.className.filter(function(value, index, self) {\n return self.indexOf(value) === index;\n });\n\n if (day.className.indexOf('is-disabled') >= 0 && day.className.indexOf('is-available') >= 0) {\n day.className.splice(day.className.indexOf('is-available'), 1);\n }\n\n var div = document.createElement('div');\n div.className = day.className.join(' ');\n div.innerHTML = date.get('date');\n div.setAttribute('data-time', day.time);\n\n return div.outerHTML;\n },\n\n renderCalendar = function(el, opts)\n {\n var html = '',\n monthDate = moment(opts.calendar[0]);\n\n for (var i = 0; i < opts.numberOfMonths; i++) {\n var day = moment(monthDate);\n\n html += '
';\n html += '
'\n html += '

'\n + '' + day.toDate().toLocaleString(opts.lang, { month: 'long' }) + ' '\n + day.format('YYYY')\n + '

';\n\n if (opts.numberOfMonths === 1) {\n html += renderTopButtons(opts, 'days');\n }\n\n html += '
'; // lightpick__month-title-bar\n\n html += '
';\n for (var w = opts.firstDay + 4; w < 7 + opts.firstDay + 4; ++w) {\n html += '
' + weekdayName(opts, w, true) + '
';\n }\n html += '
'; // lightpick__days-of-the-week\n\n html += '
';\n\n if (day.isoWeekday() !== opts.firstDay) {\n var prevDays = day.isoWeekday() - opts.firstDay > 0 ? day.isoWeekday() - opts.firstDay : day.isoWeekday(),\n prevMonth = moment(day).subtract(prevDays, 'day'),\n daysInMonth = prevMonth.daysInMonth();\n\n for (var d = prevMonth.get('date'); d <= daysInMonth; d++) {\n html += renderDay(opts, prevMonth, i > 0, 'is-previous-month');\n\n prevMonth.add(1, 'day');\n }\n }\n\n var daysInMonth = day.daysInMonth(),\n today = new Date();\n\n for (var d = 0; d < daysInMonth; d++) {\n html += renderDay(opts, day);\n\n day.add(1, 'day');\n }\n\n var nextMonth = moment(day),\n nextDays = 7 - nextMonth.isoWeekday() + opts.firstDay;\n\n if (nextDays < 7) {\n for (var d = nextMonth.get('date'); d <= nextDays; d++) {\n html += renderDay(opts, nextMonth, i < opts.numberOfMonths - 1, 'is-next-month');\n\n nextMonth.add(1, 'day');\n }\n }\n\n html += '
'; // lightpick__days\n\n html += '
'; // lightpick__month\n\n monthDate.add(1, 'month');\n }\n\n opts.calendar[1] = moment(monthDate);\n\n el.querySelector('.lightpick__months').innerHTML = html;\n },\n\n renderMonthsOfYear = function(el, opts, date)\n {\n if (date) {\n opts.calendar[0] = moment(date);\n }\n var ym = moment(opts.calendar[0]);\n\n var html = '
'\n html += '

' + ym.format('YYYY') + '

';\n html += renderTopButtons(opts, 'months');\n html += '
';\n\n html += '
';\n\n for (var i = 1; i <= 12; i++) {\n html += '
'\n + '
' + moment(i, 'M').toDate().toLocaleString(opts.lang, { month: 'long' }) + '
'\n + '
' + ym.format('YYYY') + '
'\n + '
';\n }\n html += '
';\n\n el.querySelector('.lightpick__months-of-the-year').innerHTML = html;\n },\n\n updateDates = function(el, opts)\n {\n var days = el.querySelectorAll('.lightpick__day');\n [].forEach.call(days, function(day) {\n day.outerHTML = renderDay(opts, parseInt(day.getAttribute('data-time')), false, day.className.split(' '));\n });\n\n checkDisabledDatesInRange(el, opts);\n },\n\n checkDisabledDatesInRange = function(el, opts)\n {\n if (opts.disabledDatesInRange || !opts.startDate || opts.endDate || !opts.disableDates) return;\n\n var days = el.querySelectorAll('.lightpick__day'),\n disabledArray = opts.disableDates.map(function(entry){\n return entry instanceof Array || Object.prototype.toString.call(entry) === '[object Array]' ? entry[0] : entry;\n }),\n closestPrev = moment(disabledArray.filter(function(d) {\n return moment(d).isBefore(opts.startDate);\n }).sort(function(a,b){\n return moment(b).isAfter(moment(a));\n })[0]),\n closestNext = moment(disabledArray.filter(function(d) {\n return moment(d).isAfter(opts.startDate);\n }).sort(function(a,b){\n return moment(a).isAfter(moment(b));\n })[0]);\n\n [].forEach.call(days, function(dayCell) {\n var day = moment(parseInt(dayCell.getAttribute('data-time')));\n if (\n (closestPrev && day.isBefore(closestPrev) && opts.startDate.isAfter(closestPrev))\n || (closestNext && day.isAfter(closestNext) && closestNext.isAfter(opts.startDate))\n ) {\n dayCell.classList.remove('is-available');\n dayCell.classList.add('is-disabled');\n }\n });\n },\n\n Lightpick = function(options)\n {\n var self = this,\n opts = self.config(options);\n\n self.el = document.createElement('section');\n\n self.el.className = 'lightpick lightpick--' + opts.numberOfColumns + '-columns is-hidden';\n\n if (opts.parentEl !== 'body') {\n self.el.className += ' lightpick--inlined';\n }\n\n var html = '
'\n + (opts.numberOfMonths > 1 ? renderTopButtons(opts, 'days') : '')\n + '
'\n + '
'\n + '
';\n\n if (opts.footer) {\n html += '
';\n if (opts.footer === true) {\n html += '';\n html += '';\n html += '';\n }\n else {\n html += opts.footer;\n }\n html += '
';\n }\n\n html += '
';\n\n self.el.innerHTML = html;\n\n\n if (opts.parentEl instanceof Node) {\n opts.parentEl.appendChild(self.el)\n } else {\n document.querySelector(opts.parentEl).appendChild(self.el);\n }\n\n self._onMouseDown = function(e)\n {\n if (!self.isShowing) {\n return;\n }\n\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n var opts = self._opts;\n\n if (target.classList.contains('lightpick__day') && target.classList.contains('is-available')) {\n\n var day = moment(parseInt(target.getAttribute('data-time')));\n\n if (!opts.disabledDatesInRange && opts.disableDates && opts.startDate) {\n var start = day.isAfter(opts.startDate) ? moment(opts.startDate) : moment(day),\n end = day.isAfter(opts.startDate) ? moment(day) : moment(opts.startDate),\n\n isInvalidRange = opts.disableDates.filter(function(d) {\n if (d instanceof Array || Object.prototype.toString.call(d) === '[object Array]') {\n var _from = moment(d[0]),\n _to = moment(d[1]);\n\n return _from.isValid() && _to.isValid() && (_from.isBetween(start, end, 'day', '[]') || _to.isBetween(start, end, 'day', '[]'));\n }\n\n return moment(d).isBetween(start, end, 'day', '[]');\n });\n\n if (isInvalidRange.length) {\n self.setStartDate(null);\n self.setEndDate(null);\n\n target.dispatchEvent(new Event('mousedown'));\n self.el.querySelector('.lightpick__tooltip').style.visibility = 'hidden';\n\n updateDates(self.el, opts);\n return;\n }\n }\n\n if (opts.singleDate || (!opts.startDate && !opts.endDate) || (opts.startDate && opts.endDate)) {\n if (opts.repick && opts.startDate && opts.endDate) {\n if (opts.repickTrigger === opts.field) {\n self.setStartDate(day);\n target.classList.add('is-start-date');\n }\n else {\n self.setEndDate(day);\n target.classList.add('is-end-date');\n }\n\n if (opts.startDate.isAfter(opts.endDate)) {\n self.swapDate();\n }\n\n if (opts.autoclose) {\n setTimeout(function() {\n self.hide();\n }, 100);\n }\n }\n else {\n self.setStartDate(day);\n self.setEndDate(null);\n\n target.classList.add('is-start-date');\n\n if (opts.singleDate && opts.autoclose) {\n setTimeout(function() {\n self.hide();\n }, 100);\n }\n else if (!opts.singleDate) {\n updateDates(self.el, opts);\n }\n }\n }\n else if (opts.startDate && !opts.endDate) {\n self.setEndDate(day);\n\n if (opts.startDate.isAfter(opts.endDate)) {\n self.swapDate();\n }\n\n target.classList.add('is-end-date');\n\n\n if (opts.autoclose) {\n setTimeout(function() {\n self.hide();\n }, 100);\n }\n else {\n updateDates(self.el, opts);\n }\n }\n\n if (!opts.disabledDatesInRange) {\n if (self.el.querySelectorAll('.lightpick__day.is-available').length === 0) {\n self.setStartDate(null);\n updateDates(self.el, opts);\n\n if (opts.footer) {\n if (typeof self._opts.onError === 'function') {\n self._opts.onError.call(self, 'Invalid range');\n }\n else {\n var footerMessage = self.el.querySelector('.lightpick__footer-message');\n\n if (footerMessage) {\n footerMessage.innerHTML = opts.locale.not_allowed_range;\n\n setTimeout(function(){\n footerMessage.innerHTML = '';\n }, 3000);\n }\n }\n }\n }\n }\n }\n else if (target.classList.contains('lightpick__previous-action')) {\n if (target.hasAttribute('data-view-mode')) {\n var viewMode = target.getAttribute('data-view-mode');\n\n switch (viewMode) {\n case 'days':\n self.prevMonth();\n break;\n\n case 'months':\n self.prevYear();\n break;\n }\n }\n }\n else if (target.classList.contains('lightpick__next-action')) {\n if (target.hasAttribute('data-view-mode')) {\n var viewMode = target.getAttribute('data-view-mode');\n\n switch (viewMode) {\n case 'days':\n self.nextMonth();\n break;\n\n case 'months':\n self.nextYear();\n break;\n }\n }\n }\n else if (target.classList.contains('lightpick__close-action') || target.classList.contains('lightpick__apply-action')) {\n self.hide();\n }\n else if (target.classList.contains('lightpick__reset-action')) {\n self.reset();\n }\n else if (target.classList.contains('lightpick__month-title')) {\n if (target.hasAttribute('data-ym')) {\n var _toolbar = self.el.querySelector('.lightpick__inner > .lightpick__toolbar');\n if (_toolbar) {\n _toolbar.style.display = 'none';\n }\n\n self.el.querySelector('.lightpick__months').innerHTML = '';\n renderMonthsOfYear(self.el, opts, target.getAttribute('data-ym'));\n }\n }\n else if (target.hasAttribute('data-goto-month')) {\n var month = moment(target.getAttribute('data-goto-month'), 'YYYY-M');\n if (month.isValid()) {\n self.gotoDate(month);\n\n self.el.querySelector('.lightpick__months-of-the-year').innerHTML = '';\n\n var _toolbar = self.el.querySelector('.lightpick__inner > .lightpick__toolbar');\n if (_toolbar) {\n _toolbar.style.display = 'flex';\n }\n }\n }\n\n };\n self._onMouseEnter = function(e)\n {\n if (!self.isShowing) {\n return;\n }\n\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n\n var opts = self._opts;\n\n if (target.classList.contains('lightpick__day') && target.classList.contains('disabled-tooltip') && opts.locale.tooltipOnDisabled) {\n self.showTooltip(target, opts.locale.tooltipOnDisabled);\n return;\n }\n else {\n self.hideTooltip();\n }\n\n if (opts.singleDate || (!opts.startDate && !opts.endDate)) {\n return;\n }\n\n if (!target.classList.contains('lightpick__day') && !target.classList.contains('is-available')) {\n return;\n }\n\n if ((opts.startDate && !opts.endDate) || opts.repick) {\n var hoverDate = moment(parseInt(target.getAttribute('data-time')));\n\n if (!hoverDate.isValid()) {\n return;\n }\n\n var startDate = (opts.startDate && !opts.endDate) || (opts.repick && opts.repickTrigger === opts.secondField) ? opts.startDate : opts.endDate;\n\n var days = self.el.querySelectorAll('.lightpick__day');\n [].forEach.call(days, function(day) {\n var dt = moment(parseInt(day.getAttribute('data-time')));\n\n day.classList.remove('is-flipped');\n\n if (dt.isValid() && dt.isSameOrAfter(startDate, 'day') && dt.isSameOrBefore(hoverDate, 'day')) {\n day.classList.add('is-in-range');\n\n if (opts.repickTrigger === opts.field && dt.isSameOrAfter(opts.endDate)) {\n day.classList.add('is-flipped');\n }\n }\n else if (dt.isValid() && dt.isSameOrAfter(hoverDate, 'day') && dt.isSameOrBefore(startDate, 'day')) {\n day.classList.add('is-in-range');\n\n if (((opts.startDate && !opts.endDate) || opts.repickTrigger === opts.secondField) && dt.isSameOrBefore(opts.startDate)) {\n day.classList.add('is-flipped');\n }\n }\n else {\n day.classList.remove('is-in-range');\n }\n\n if (opts.startDate && opts.endDate && opts.repick && opts.repickTrigger === opts.field) {\n day.classList.remove('is-start-date');\n }\n else {\n day.classList.remove('is-end-date');\n }\n });\n\n if (opts.hoveringTooltip) {\n days = Math.abs(hoverDate.isAfter(startDate) ? hoverDate.diff(startDate, 'day') : startDate.diff(hoverDate, 'day'));\n\n if (!opts.tooltipNights) {\n days += 1;\n }\n\n var tooltip = self.el.querySelector('.lightpick__tooltip');\n\n if (days > 0 && !target.classList.contains('is-disabled')) {\n\n var pluralText = '';\n if (typeof opts.locale.pluralize === 'function') {\n pluralText = opts.locale.pluralize.call(self, days, opts.locale.tooltip);\n }\n\n self.showTooltip(target, days + ' ' + pluralText);\n }\n else {\n self.hideTooltip();\n }\n }\n\n if (opts.startDate && opts.endDate && opts.repick && opts.repickTrigger === opts.field) {\n target.classList.add('is-start-date');\n }\n else {\n target.classList.add('is-end-date');\n }\n }\n };\n self._onChange = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement;\n if (!target) {\n return;\n }\n\n if (target.classList.contains('is-selected-lightpick-month')) {\n self.gotoMonth(target.value);\n }\n else if (target.classList.contains('is-selected-lightpick-year')) {\n self.gotoYear(target.value);\n }\n };\n\n self._onInputChange = function(e)\n {\n var target = e.target || e.srcElement;\n\n if (self._opts.singleDate) {\n if (!self._opts.autoclose) {\n self.gotoDate(opts.field.value);\n }\n }\n\n self.syncFields();\n\n if (!self.isShowing) {\n self.show();\n }\n };\n\n self._onInputFocus = function(e)\n {\n var target = e.target || e.srcElement;\n\n self.show(target);\n };\n\n self._onInputClick = function(e)\n {\n var target = e.target || e.srcElement;\n\n self.show(target);\n };\n\n self._onClick = function(e)\n {\n e = e || window.event;\n var target = e.target || e.srcElement,\n parentEl = target;\n\n if (!target) {\n return;\n }\n\n do {\n if ((parentEl.classList && parentEl.classList.contains('lightpick')) || parentEl === opts.field || (opts.secondField && parentEl === opts.secondField)) {\n return;\n }\n }\n while ((parentEl = parentEl.parentNode));\n\n if (self.isShowing && opts.hideOnBodyClick && target !== opts.field && parentEl !== opts.field) {\n self.hide();\n }\n };\n\n self.showTooltip = function(target, text)\n {\n var tooltip = self.el.querySelector('.lightpick__tooltip');\n\n var hasParentEl = self.el.classList.contains('lightpick--inlined'),\n dayBounding = target.getBoundingClientRect(),\n pickerBouding = hasParentEl ? self.el.parentNode.getBoundingClientRect() : self.el.getBoundingClientRect(),\n _left = (dayBounding.left - pickerBouding.left) + (dayBounding.width / 2),\n _top = dayBounding.top - pickerBouding.top;\n\n tooltip.style.visibility = 'visible';\n tooltip.textContent = text;\n\n var tooltipBounding = tooltip.getBoundingClientRect();\n\n _top -= tooltipBounding.height;\n _left -= (tooltipBounding.width / 2);\n\n setTimeout(function(){\n tooltip.style.top = _top + 'px';\n tooltip.style.left = _left + 'px';\n }, 10);\n };\n\n self.hideTooltip = function()\n {\n var tooltip = self.el.querySelector('.lightpick__tooltip');\n tooltip.style.visibility = 'hidden';\n };\n\n self.el.addEventListener('mousedown', self._onMouseDown, true);\n self.el.addEventListener('mouseenter', self._onMouseEnter, true);\n self.el.addEventListener('touchend', self._onMouseDown, true);\n\n self.hide();\n\n opts.field.addEventListener('change', self._onInputChange);\n opts.field.addEventListener('click', self._onInputClick);\n opts.field.addEventListener('focus', self._onInputFocus);\n\n if (opts.secondField) {\n opts.secondField.addEventListener('change', self._onInputChange);\n opts.secondField.addEventListener('click', self._onInputClick);\n opts.secondField.addEventListener('focus', self._onInputFocus);\n }\n };\n\n Lightpick.prototype = {\n config: function(options)\n {\n var opts = Object.assign({}, defaults, options);\n\n opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n opts.calendar = [moment().set('date', 1)];\n\n if (opts.numberOfMonths === 1 && opts.numberOfColumns > 1) {\n opts.numberOfColumns = 1;\n }\n\n opts.minDate = opts.minDate && moment(opts.minDate).isValid() ? moment(opts.minDate) : null;\n\n opts.maxDate = opts.maxDate && moment(opts.maxDate).isValid() ? moment(opts.maxDate) : null;\n\n if (opts.lang === 'auto') {\n var browserLang = navigator.language || navigator.userLanguage;\n if (browserLang) {\n opts.lang = browserLang;\n }\n else {\n opts.lang = 'en-US';\n }\n }\n\n if (opts.secondField && opts.singleDate) {\n opts.singleDate = false;\n }\n\n if (opts.hoveringTooltip && opts.singleDate) {\n opts.hoveringTooltip = false;\n }\n\n if (Object.prototype.toString.call(options.locale) === '[object Object]') {\n opts.locale = Object.assign({}, defaults.locale, options.locale);\n }\n\n if (window.innerWidth < 480 && opts.numberOfMonths > 1) {\n opts.numberOfMonths = 1;\n opts.numberOfColumns = 1;\n }\n\n if (opts.repick && !opts.secondField) {\n opts.repick = false;\n }\n\n this._opts = Object.assign({}, opts);\n\n this.syncFields();\n\n this.setStartDate(this._opts.startDate, true);\n this.setEndDate(this._opts.endDate, true);\n\n return this._opts;\n },\n\n syncFields: function()\n {\n if (this._opts.singleDate || this._opts.secondField) {\n if (moment(this._opts.field.value, this._opts.format).isValid()) {\n this._opts.startDate = moment(this._opts.field.value, this._opts.format);\n }\n\n if (this._opts.secondField && moment(this._opts.secondField.value, this._opts.format).isValid()) {\n this._opts.endDate = moment(this._opts.secondField.value, this._opts.format);\n }\n }\n else {\n var dates = this._opts.field.value.split(this._opts.separator);\n\n if (dates.length === 2) {\n if (moment(dates[0], this._opts.format).isValid()) {\n this._opts.startDate = moment(dates[0], this._opts.format);\n }\n\n if (moment(dates[1], this._opts.format).isValid()) {\n this._opts.endDate = moment(dates[1], this._opts.format);\n }\n }\n }\n },\n\n swapDate: function()\n {\n var tmp = moment(this._opts.startDate);\n this.setDateRange(this._opts.endDate, tmp);\n },\n\n gotoToday: function()\n {\n this.gotoDate(new Date());\n },\n\n gotoDate: function(date)\n {\n var date = moment(date);\n\n if (!date.isValid()) {\n date = moment();\n }\n\n date.set('date', 1);\n\n this._opts.calendar = [moment(date)];\n\n renderCalendar(this.el, this._opts);\n },\n\n gotoMonth: function(month)\n {\n if (isNaN(month)) {\n return;\n }\n\n this._opts.calendar[0].set('month', month);\n\n renderCalendar(this.el, this._opts);\n },\n\n prevMonth: function()\n {\n this._opts.calendar[0] = moment(this._opts.calendar[0]).subtract(this._opts.numberOfMonths, 'month');\n\n renderCalendar(this.el, this._opts);\n\n checkDisabledDatesInRange(this.el, this._opts);\n },\n\n nextMonth: function()\n {\n this._opts.calendar[0] = moment(this._opts.calendar[1]);\n\n renderCalendar(this.el, this._opts);\n\n checkDisabledDatesInRange(this.el, this._opts);\n },\n\n prevYear: function()\n {\n this._opts.calendar[0] = moment(this._opts.calendar[0]).subtract(1, 'year');\n\n renderMonthsOfYear(this.el, this._opts);\n },\n\n nextYear: function()\n {\n this._opts.calendar[0] = moment(this._opts.calendar[0]).add(1, 'year');\n\n renderMonthsOfYear(this.el, this._opts);\n },\n\n updatePosition: function()\n {\n if (this.el.classList.contains('lightpick--inlined')) return;\n\n // remove `is-hidden` class for getBoundingClientRect\n this.el.classList.remove('is-hidden');\n\n var rect = this._opts.field.getBoundingClientRect(),\n calRect = this.el.getBoundingClientRect(),\n orientation = this._opts.orientation.split(' '),\n top = 0,\n left = 0;\n\n if (orientation[0] == 'auto' || !(/top|bottom/.test(orientation[0]))) {\n if (rect.bottom + calRect.height > window.innerHeight && window.pageYOffset > calRect.height) {\n top = (rect.top + window.pageYOffset) - calRect.height;\n }\n else {\n top = rect.bottom + window.pageYOffset;\n }\n }\n else {\n top = rect[orientation[0]] + window.pageYOffset;\n\n if (orientation[0] == 'top') {\n top -= calRect.height;\n }\n }\n\n if (!(/left|right/.test(orientation[0])) && (!orientation[1] || orientation[1] == 'auto' || !(/left|right/.test(orientation[1])))) {\n if (rect.left + calRect.width > window.innerWidth) {\n left = (rect.right + window.pageXOffset) - calRect.width;\n }\n else {\n left = rect.left + window.pageXOffset;\n }\n }\n else {\n if (/left|right/.test(orientation[0])) {\n left = rect[orientation[0]] + window.pageXOffset;\n }\n else {\n left = rect[orientation[1]] + window.pageXOffset;\n }\n\n if (orientation[0] == 'right' || orientation[1] == 'right') {\n left -= calRect.width;\n }\n }\n\n this.el.classList.add('is-hidden');\n\n this.el.style.top = top + 'px';\n this.el.style.left = left + 'px';\n },\n\n setStartDate: function(date, preventOnSelect)\n {\n var dateISO = moment(date, moment.ISO_8601),\n dateOptFormat = moment(date, this._opts.format);\n\n if (!dateISO.isValid() && !dateOptFormat.isValid()) {\n this._opts.startDate = null;\n this._opts.field.value = '';\n return;\n }\n\n this._opts.startDate = moment(dateISO.isValid() ? dateISO : dateOptFormat);\n\n if (this._opts.singleDate || this._opts.secondField) {\n this._opts.field.value = this._opts.startDate.format(this._opts.format);\n }\n else {\n this._opts.field.value = this._opts.startDate.format(this._opts.format) + this._opts.separator + '...'\n }\n\n if (!preventOnSelect && typeof this._opts.onSelect === 'function') {\n this._opts.onSelect.call(this, this.getStartDate(), this.getEndDate());\n }\n },\n\n setEndDate: function(date, preventOnSelect)\n {\n var dateISO = moment(date, moment.ISO_8601),\n dateOptFormat = moment(date, this._opts.format);\n\n if (!dateISO.isValid() && !dateOptFormat.isValid()) {\n this._opts.endDate = null;\n\n if (this._opts.secondField) {\n this._opts.secondField.value = '';\n }\n else if (!this._opts.singleDate && this._opts.startDate) {\n this._opts.field.value = this._opts.startDate.format(this._opts.format) + this._opts.separator + '...'\n }\n return;\n }\n\n this._opts.endDate = moment(dateISO.isValid() ? dateISO : dateOptFormat);\n\n if (this._opts.secondField) {\n this._opts.field.value = this._opts.startDate.format(this._opts.format);\n this._opts.secondField.value = this._opts.endDate.format(this._opts.format);\n }\n else {\n this._opts.field.value = this._opts.startDate.format(this._opts.format) + this._opts.separator + this._opts.endDate.format(this._opts.format);\n }\n\n if (!preventOnSelect && typeof this._opts.onSelect === 'function') {\n this._opts.onSelect.call(this, this.getStartDate(), this.getEndDate());\n }\n },\n\n setDate: function(date)\n {\n if (!this._opts.singleDate) {\n return;\n }\n this.setStartDate(date, true);\n },\n\n setDateRange: function(start, end, preventOnSelect)\n {\n if (this._opts.singleDate) {\n return;\n }\n this.setStartDate(start, true);\n this.setEndDate(end, true);\n\n if (this.isShowing) {\n updateDates(this.el, this._opts);\n }\n\n if (!preventOnSelect && typeof this._opts.onSelect === 'function') {\n this._opts.onSelect.call(this, this.getStartDate(), this.getEndDate());\n }\n },\n\n setDisableDates: function(dates)\n {\n this._opts.disableDates = dates;\n\n if (this.isShowing) {\n updateDates(this.el, this._opts);\n }\n },\n\n getStartDate: function()\n {\n return moment(this._opts.startDate).isValid() ? this._opts.startDate : null;\n },\n\n getEndDate: function()\n {\n return moment(this._opts.endDate).isValid() ? this._opts.endDate : null;\n },\n\n getDate: function()\n {\n return moment(this._opts.startDate).isValid() ? this._opts.startDate : null;\n },\n\n toString: function(format)\n {\n if (this._opts.singleDate) {\n return moment(this._opts.startDate).isValid() ? this._opts.startDate.format(format) : '';\n }\n\n if (moment(this._opts.startDate).isValid() && moment(this._opts.endDate).isValid()) {\n return this._opts.startDate.format(format) + this._opts.separator + this._opts.endDate.format(format);\n }\n\n if (moment(this._opts.startDate).isValid() && !moment(this._opts.endDate).isValid()) {\n return this._opts.startDate.format(format) + this._opts.separator + '...';\n }\n\n if (!moment(this._opts.startDate).isValid() && moment(this._opts.endDate).isValid()) {\n return '...' + this._opts.separator + this._opts.endDate.format(format);\n }\n\n return '';\n },\n\n show: function(target)\n {\n if (!this.isShowing) {\n this.isShowing = true;\n\n if (this._opts.repick) {\n this._opts.repickTrigger = target;\n }\n\n this.syncFields();\n \n if (this._opts.secondField && this._opts.secondField === target && this._opts.endDate) {\n this.gotoDate(this._opts.endDate);\n }\n else {\n this.gotoDate(this._opts.startDate);\n }\n\n document.addEventListener('click', this._onClick);\n\n this.updatePosition();\n\n this.el.classList.remove('is-hidden');\n\n if (typeof this._opts.onOpen === 'function') {\n this._opts.onOpen.call(this);\n }\n\n this.el.querySelector('.lightpick__months-of-the-year').innerHTML = '';\n\n if (document.activeElement && document.activeElement != document.body) {\n document.activeElement.blur();\n }\n }\n },\n\n hide: function()\n {\n if (this.isShowing) {\n this.isShowing = false;\n\n document.removeEventListener('click', this._onClick);\n\n this.el.classList.add('is-hidden');\n\n this.el.querySelector('.lightpick__tooltip').style.visibility = 'hidden';\n\n if (typeof this._opts.onClose === 'function') {\n this._opts.onClose.call(this);\n }\n }\n },\n\n destroy: function()\n {\n var opts = this._opts;\n\n this.hide();\n this.el.removeEventListener('mousedown', this._onMouseDown, true);\n this.el.removeEventListener('touchend', this._onMouseDown, true);\n this.el.removeEventListener('change', this._onChange, true);\n\n opts.field.removeEventListener('change', this._onInputChange);\n opts.field.removeEventListener('click', this._onInputClick);\n opts.field.removeEventListener('focus', this._onInputFocus);\n\n if (opts.secondField) {\n opts.secondField.removeEventListener('change', this._onInputChange);\n opts.secondField.removeEventListener('click', this._onInputClick);\n opts.secondField.removeEventListener('focus', this._onInputFocus);\n }\n\n if (this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n },\n\n reset: function()\n {\n this.setStartDate(null, true);\n this.setEndDate(null, true);\n\n updateDates(this.el, this._opts);\n\n if (typeof this._opts.onSelect === 'function') {\n this._opts.onSelect.call(this, this.getStartDate(), this.getEndDate());\n }\n\n this.el.querySelector('.lightpick__tooltip').style.visibility = 'hidden';\n },\n\n reloadOptions: function(options)\n {\n this._opts = Object.assign({}, this._opts, options);\n }\n\n };\n\n return Lightpick;\n}));\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Pristine = factory());\n}(this, (function () { 'use strict';\n\n var lang = {\n required: \"This field is required\",\n email: \"This field requires a valid e-mail address\",\n number: \"This field requires a number\",\n integer: \"This field requires an integer value\",\n url: \"This field requires a valid website URL\",\n tel: \"This field requires a valid telephone number\",\n maxlength: \"This fields length must be < ${1}\",\n minlength: \"This fields length must be > ${1}\",\n min: \"Minimum value for this field is ${1}\",\n max: \"Maximum value for this field is ${1}\",\n pattern: \"Please match the requested format\"\n };\n\n function findAncestor(el, cls) {\n while ((el = el.parentElement) && !el.classList.contains(cls)) {}\n return el;\n }\n\n function tmpl(o) {\n var _arguments = arguments;\n\n return this.replace(/\\${([^{}]*)}/g, function (a, b) {\n return _arguments[b];\n });\n }\n\n function groupedElemCount(input) {\n return input.pristine.self.form.querySelectorAll('input[name=\"' + input.getAttribute('name') + '\"]:checked').length;\n }\n\n function mergeConfig(obj1, obj2) {\n for (var attr in obj2) {\n if (!(attr in obj1)) {\n obj1[attr] = obj2[attr];\n }\n }\n return obj1;\n }\n\n function isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n\n var defaultConfig = {\n classTo: 'form-group',\n errorClass: 'has-danger',\n successClass: 'has-success',\n errorTextParent: 'form-group',\n errorTextTag: 'div',\n errorTextClass: 'text-help'\n };\n\n var PRISTINE_ERROR = 'pristine-error';\n var SELECTOR = \"input:not([type^=hidden]):not([type^=submit]), select, textarea\";\n var ALLOWED_ATTRIBUTES = [\"required\", \"min\", \"max\", 'minlength', 'maxlength', 'pattern'];\n var EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n var validators = {};\n\n var _ = function _(name, validator) {\n validator.name = name;\n if (!validator.msg) validator.msg = lang[name];\n if (validator.priority === undefined) validator.priority = 1;\n validators[name] = validator;\n };\n\n _('text', { fn: function fn(val) {\n return true;\n }, priority: 0 });\n _('required', { fn: function fn(val) {\n return this.type === 'radio' || this.type === 'checkbox' ? groupedElemCount(this) : val !== undefined && val !== '';\n }, priority: 99, halt: true });\n _('email', { fn: function fn(val) {\n return !val || EMAIL_REGEX.test(val);\n } });\n _('number', { fn: function fn(val) {\n return !val || !isNaN(parseFloat(val));\n }, priority: 2 });\n _('integer', { fn: function fn(val) {\n return !val || /^\\d+$/.test(val);\n } });\n _('minlength', { fn: function fn(val, length) {\n return !val || val.length >= parseInt(length);\n } });\n _('maxlength', { fn: function fn(val, length) {\n return !val || val.length <= parseInt(length);\n } });\n _('min', { fn: function fn(val, limit) {\n return !val || (this.type === 'checkbox' ? groupedElemCount(this) >= parseInt(limit) : parseFloat(val) >= parseFloat(limit));\n } });\n _('max', { fn: function fn(val, limit) {\n return !val || (this.type === 'checkbox' ? groupedElemCount(this) <= parseInt(limit) : parseFloat(val) <= parseFloat(limit));\n } });\n _('pattern', { fn: function fn(val, pattern) {\n var m = pattern.match(new RegExp('^/(.*?)/([gimy]*)$'));return !val || new RegExp(m[1], m[2]).test(val);\n } });\n\n function Pristine(form, config, live) {\n\n var self = this;\n\n init(form, config, live);\n\n function init(form, config, live) {\n\n form.setAttribute(\"novalidate\", \"true\");\n\n self.form = form;\n self.config = mergeConfig(config || {}, defaultConfig);\n self.live = !(live === false);\n self.fields = Array.from(form.querySelectorAll(SELECTOR)).map(function (input) {\n\n var fns = [];\n var params = {};\n var messages = {};\n\n [].forEach.call(input.attributes, function (attr) {\n if (/^data-pristine-/.test(attr.name)) {\n var name = attr.name.substr(14);\n if (name.endsWith('-message')) {\n messages[name.slice(0, name.length - 8)] = attr.value;\n return;\n }\n if (name === 'type') name = attr.value;\n _addValidatorToField(fns, params, name, attr.value);\n } else if (~ALLOWED_ATTRIBUTES.indexOf(attr.name)) {\n _addValidatorToField(fns, params, attr.name, attr.value);\n } else if (attr.name === 'type') {\n _addValidatorToField(fns, params, attr.value);\n }\n });\n\n fns.sort(function (a, b) {\n return b.priority - a.priority;\n });\n\n self.live && input.addEventListener(!~['radio', 'checkbox'].indexOf(input.getAttribute('type')) ? 'input' : 'change', function (e) {\n self.validate(e.target);\n }.bind(self));\n\n return input.pristine = { input: input, validators: fns, params: params, messages: messages, self: self };\n }.bind(self));\n }\n\n function _addValidatorToField(fns, params, name, value) {\n var validator = validators[name];\n if (validator) {\n fns.push(validator);\n if (value) {\n var valueParams = value.split(',');\n valueParams.unshift(null); // placeholder for input's value\n params[name] = valueParams;\n }\n }\n }\n\n /***\n * Checks whether the form/input elements are valid\n * @param input => input element(s) or a jquery selector, null for full form validation\n * @param silent => do not show error messages, just return true/false\n * @returns {boolean} return true when valid false otherwise\n */\n self.validate = function (input, silent) {\n silent = input && silent === true || input === true;\n var fields = self.fields;\n if (input !== true && input !== false) {\n if (input instanceof HTMLElement) {\n fields = [input.pristine];\n } else if (input instanceof NodeList || input instanceof (window.$ || Array) || input instanceof Array) {\n fields = Array.from(input).map(function (el) {\n return el.pristine;\n });\n }\n }\n\n var valid = true;\n\n for (var i = 0; fields[i]; i++) {\n var field = fields[i];\n if (_validateField(field)) {\n !silent && _showSuccess(field);\n } else {\n valid = false;\n !silent && _showError(field);\n }\n }\n return valid;\n };\n\n /***\n * Get errors of a specific field or the whole form\n * @param input\n * @returns {Array|*}\n */\n self.getErrors = function (input) {\n if (!input) {\n var erroneousFields = [];\n for (var i = 0; i < self.fields.length; i++) {\n var field = self.fields[i];\n if (field.errors.length) {\n erroneousFields.push({ input: field.input, errors: field.errors });\n }\n }\n return erroneousFields;\n }\n if (input.tagName && input.tagName.toLowerCase() === \"select\") {\n return input.pristine.errors;\n }\n return input.length ? input[0].pristine.errors : input.pristine.errors;\n };\n\n /***\n * Validates a single field, all validator functions are called and error messages are generated\n * when a validator fails\n * @param field\n * @returns {boolean}\n * @private\n */\n function _validateField(field) {\n var errors = [];\n var valid = true;\n for (var i = 0; field.validators[i]; i++) {\n var validator = field.validators[i];\n var params = field.params[validator.name] ? field.params[validator.name] : [];\n params[0] = field.input.value;\n if (!validator.fn.apply(field.input, params)) {\n valid = false;\n\n if (isFunction(validator.msg)) {\n errors.push(validator.msg(field.input.value, params));\n } else {\n var error = field.messages[validator.name] || validator.msg;\n errors.push(tmpl.apply(error, params));\n }\n\n if (validator.halt === true) {\n break;\n }\n }\n }\n field.errors = errors;\n return valid;\n }\n\n /***\n *\n * @param elem => The dom element where the validator is applied to\n * @param fn => validator function\n * @param msg => message to show when validation fails. Supports templating. ${0} for the input's value, ${1} and\n * so on are for the attribute values\n * @param priority => priority of the validator function, higher valued function gets called first.\n * @param halt => whether validation should stop for this field after current validation function\n */\n self.addValidator = function (elem, fn, msg, priority, halt) {\n if (elem instanceof HTMLElement) {\n elem.pristine.validators.push({ fn: fn, msg: msg, priority: priority, halt: halt });\n elem.pristine.validators.sort(function (a, b) {\n return b.priority - a.priority;\n });\n } else {\n console.warn(\"The parameter elem must be a dom element\");\n }\n };\n\n /***\n * An utility function that returns a 2-element array, first one is the element where error/success class is\n * applied. 2nd one is the element where error message is displayed. 2nd element is created if doesn't exist and cached.\n * @param field\n * @returns {*}\n * @private\n */\n function _getErrorElements(field) {\n if (field.errorElements) {\n return field.errorElements;\n }\n var errorClassElement = findAncestor(field.input, self.config.classTo);\n var errorTextParent = null,\n errorTextElement = null;\n if (self.config.classTo === self.config.errorTextParent) {\n errorTextParent = errorClassElement;\n } else {\n errorTextParent = errorClassElement.querySelector('.' + self.config.errorTextParent);\n }\n if (errorTextParent) {\n errorTextElement = errorTextParent.querySelector('.' + PRISTINE_ERROR);\n if (!errorTextElement) {\n errorTextElement = document.createElement(self.config.errorTextTag);\n errorTextElement.className = PRISTINE_ERROR + ' ' + self.config.errorTextClass;\n errorTextParent.appendChild(errorTextElement);\n errorTextElement.pristineDisplay = errorTextElement.style.display;\n }\n }\n return field.errorElements = [errorClassElement, errorTextElement];\n }\n\n function _showError(field) {\n var errorElements = _getErrorElements(field);\n var errorClassElement = errorElements[0],\n errorTextElement = errorElements[1];\n\n if (errorClassElement) {\n errorClassElement.classList.remove(self.config.successClass);\n errorClassElement.classList.add(self.config.errorClass);\n }\n if (errorTextElement) {\n errorTextElement.innerHTML = field.errors.join('
');\n errorTextElement.style.display = errorTextElement.pristineDisplay || '';\n }\n }\n\n /***\n * Adds error to a specific field\n * @param input\n * @param error\n */\n self.addError = function (input, error) {\n input = input.length ? input[0] : input;\n input.pristine.errors.push(error);\n _showError(input.pristine);\n };\n\n function _removeError(field) {\n var errorElements = _getErrorElements(field);\n var errorClassElement = errorElements[0],\n errorTextElement = errorElements[1];\n if (errorClassElement) {\n // IE > 9 doesn't support multiple class removal\n errorClassElement.classList.remove(self.config.errorClass);\n errorClassElement.classList.remove(self.config.successClass);\n }\n if (errorTextElement) {\n errorTextElement.innerHTML = '';\n errorTextElement.style.display = 'none';\n }\n return errorElements;\n }\n\n function _showSuccess(field) {\n var errorClassElement = _removeError(field)[0];\n errorClassElement && errorClassElement.classList.add(self.config.successClass);\n }\n\n /***\n * Resets the errors\n */\n self.reset = function () {\n for (var i = 0; self.fields[i]; i++) {\n self.fields[i].errorElements = null;\n }\n Array.from(self.form.querySelectorAll('.' + PRISTINE_ERROR)).map(function (elem) {\n elem.parentNode.removeChild(elem);\n });\n Array.from(self.form.querySelectorAll('.' + self.config.classTo)).map(function (elem) {\n elem.classList.remove(self.config.successClass);\n elem.classList.remove(self.config.errorClass);\n });\n };\n\n /***\n * Resets the errors and deletes all pristine fields\n */\n self.destroy = function () {\n self.reset();\n self.fields.forEach(function (field) {\n delete field.input.pristine;\n });\n self.fields = [];\n };\n\n self.setGlobalConfig = function (config) {\n defaultConfig = config;\n };\n\n return self;\n }\n\n /***\n *\n * @param name => Name of the global validator\n * @param fn => validator function\n * @param msg => message to show when validation fails. Supports templating. ${0} for the input's value, ${1} and\n * so on are for the attribute values\n * @param priority => priority of the validator function, higher valued function gets called first.\n * @param halt => whether validation should stop for this field after current validation function\n */\n Pristine.addValidator = function (name, fn, msg, priority, halt) {\n _(name, { fn: fn, msg: msg, priority: priority, halt: halt });\n };\n\n return Pristine;\n\n})));\n","/**\n * SSR Window 3.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n var doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n requestAnimationFrame: function (callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame: function (id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n var win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/* eslint no-underscore-dangle: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick, bindModuleMethods } from '../../utils/utils';\nvar Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = nextTick(function () {\n var autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {\n swiper.autoplay.run();\n }\n }, delay);\n },\n start: function start() {\n var swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop: function stop() {\n var swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause: function pause(speed) {\n var swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].addEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n }\n },\n onVisibilityChange: function onVisibilityChange() {\n var swiper = this;\n var document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n var swiper = this;\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n onMouseEnter: function onMouseEnter() {\n var swiper = this;\n\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);\n });\n },\n onMouseLeave: function onMouseLeave() {\n var swiper = this;\n\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n },\n attachMouseEvents: function attachMouseEvents() {\n var swiper = this;\n\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.on('mouseleave', swiper.autoplay.onMouseLeave);\n }\n },\n detachMouseEvents: function detachMouseEvents() {\n var swiper = this;\n swiper.$el.off('mouseenter', swiper.autoplay.onMouseEnter);\n swiper.$el.off('mouseleave', swiper.autoplay.onMouseLeave);\n }\n};\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n autoplay: _extends({}, Autoplay, {\n running: false,\n paused: false\n })\n });\n },\n on: {\n init: function init(swiper) {\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n var document = getDocument();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n swiper.autoplay.attachMouseEvents();\n }\n },\n beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove: function sliderFirstMove(swiper) {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd: function touchEnd(swiper) {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy(swiper) {\n swiper.autoplay.detachMouseEvents();\n\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n\n var document = getDocument();\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n }\n};","import { getWindow, getDocument } from 'ssr-window';\nvar support;\n\nfunction calcSupport() {\n var window = getWindow();\n var document = getDocument();\n return {\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,\n observer: function checkObserver() {\n return 'MutationObserver' in window || 'WebkitMutationObserver' in window;\n }(),\n passiveListener: function checkPassiveListener() {\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support';\nvar device;\n\nfunction calcDevice(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n userAgent = _ref.userAgent;\n\n var support = getSupport();\n var window = getWindow();\n var platform = window.navigator.platform;\n var ua = userAgent || window.navigator.userAgent;\n var device = {\n ios: false,\n android: false\n };\n var screenWidth = window.screen.width;\n var screenHeight = window.screen.height;\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n var windows = platform === 'Win32';\n var macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + \"x\" + screenHeight) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!device) {\n device = calcDevice(overrides);\n }\n\n return device;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nvar browser;\n\nfunction calcBrowser() {\n var window = getWindow();\n\n function isSafari() {\n var ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { extend } from '../../utils/utils';\n\nvar supportsResizeObserver = function supportsResizeObserver() {\n var window = getWindow();\n return typeof window.ResizeObserver !== 'undefined';\n};\n\nexport default {\n name: 'resize',\n create: function create() {\n var swiper = this;\n extend(swiper, {\n resize: {\n observer: null,\n createObserver: function createObserver() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.resize.observer = new ResizeObserver(function (entries) {\n var width = swiper.width,\n height = swiper.height;\n var newWidth = width;\n var newHeight = height;\n entries.forEach(function (_ref) {\n var contentBoxSize = _ref.contentBoxSize,\n contentRect = _ref.contentRect,\n target = _ref.target;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n swiper.resize.resizeHandler();\n }\n });\n swiper.resize.observer.observe(swiper.el);\n },\n removeObserver: function removeObserver() {\n if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {\n swiper.resize.observer.unobserve(swiper.el);\n swiper.resize.observer = null;\n }\n },\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n }\n }\n });\n },\n on: {\n init: function init(swiper) {\n var window = getWindow();\n\n if (swiper.params.resizeObserver && supportsResizeObserver()) {\n swiper.resize.createObserver();\n return;\n } // Emit resize\n\n\n window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange\n\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy(swiper) {\n var window = getWindow();\n swiper.resize.removeObserver();\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { getWindow } from 'ssr-window';\nimport { bindModuleMethods } from '../../utils/utils';\nvar Observer = {\n attach: function attach(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var window = getWindow();\n var swiper = this;\n var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n var observer = new ObserverFunc(function (mutations) {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n\n var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n swiper.observer.observers.push(observer);\n },\n init: function init() {\n var swiper = this;\n if (!swiper.support.observer || !swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n\n for (var i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n } // Observe container\n\n\n swiper.observer.attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n swiper.observer.attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n }\n};\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n observer: _extends({}, Observer, {\n observers: []\n })\n });\n },\n on: {\n init: function init(swiper) {\n swiper.observer.init();\n },\n destroy: function destroy(swiper) {\n swiper.observer.destroy();\n }\n }\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on: function on(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once: function once(events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny: function onAny(handler, priority) {\n var self = this;\n if (typeof handler !== 'function') return self;\n var method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n offAny: function offAny(handler) {\n var self = this;\n if (!self.eventsAnyListeners) return self;\n var index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n off: function off(events, handler) {\n var self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(function (event) {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler, index) {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit: function emit() {\n var self = this;\n if (!self.eventsListeners) return self;\n var events;\n var data;\n var context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(function (eventHandler) {\n eventHandler.apply(context, [event].concat(data));\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\nexport default {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide\n};","import { extend } from '../../../utils/utils';\nexport default function updateSize() {\n var swiper = this;\n var width;\n var height;\n var $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n extend(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { extend } from '../../../utils/utils';\nexport default function updateSlides() {\n var swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl,\n swiperSize = swiper.size,\n rtl = swiper.rtlTranslate,\n wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children(\".\" + swiper.params.slideClass);\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var slidesSizesGrid = [];\n var offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.slidesGrid.length;\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n });\n var slidesNumberEvenToRows;\n\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n } // Calc slides\n\n\n var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = void 0;\n var column = void 0;\n var row = void 0;\n\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;\n slide.css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - column * slidesPerColumn;\n\n if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {\n row += 1;\n\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? params.spaceBetween && params.spaceBetween + \"px\" : '');\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n var slideStyles = getComputedStyle(slide[0]);\n var currentTransform = slide[0].style.transform;\n var currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n var width = getDirectionPropertyValue(slideStyles, 'width');\n var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n var boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n var _slide$ = slide[0],\n clientWidth = _slide$.clientWidth,\n offsetWidth = _slide$.offsetWidth;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = slideSize + \"px\";\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n var newSlidesGrid;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: swiper.virtualSize + params.spaceBetween + \"px\"\n });\n }\n\n if (params.setWrapperSize) {\n var _$wrapperEl$css;\n\n $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css));\n }\n\n if (params.slidesPerColumn > 1) {\n var _$wrapperEl$css2;\n\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + \"px\", _$wrapperEl$css2));\n\n if (params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i = 0; _i < snapGrid.length; _i += 1) {\n var slidesGridItem = snapGrid[_i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid = newSlidesGrid;\n }\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n\n for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {\n var _slidesGridItem = snapGrid[_i2];\n if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);\n\n if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(_slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n var _slides$filter$css;\n\n var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter(function (_, slideIndex) {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + \"px\", _slides$filter$css));\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n var maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(function (snap) {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n var _allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n _allSlidesSize -= params.spaceBetween;\n\n if (_allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}","export default function updateAutoHeight(speed) {\n var swiper = this;\n var activeSlides = [];\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var newHeight = 0;\n var i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n var getSlideByIndex = function getSlideByIndex(index) {\n if (isVirtual) {\n return swiper.slides.filter(function (el) {\n return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;\n })[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(function (slide) {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n var height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight) swiper.$wrapperEl.css('height', newHeight + \"px\");\n}","export default function updateSlidesOffset() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../../utils/dom';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides,\n rtl = swiper.rtlTranslate;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n var offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n\n if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import { extend } from '../../../utils/utils';\nexport default function updateProgress(translate) {\n var swiper = this;\n\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress,\n isBeginning = swiper.isBeginning,\n isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n extend(swiper, {\n progress: progress,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n var swiper = this;\n var slides = swiper.slides,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex,\n realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(params.slideActiveClass + \" \" + params.slideNextClass + \" \" + params.slidePrevClass + \" \" + params.slideDuplicateActiveClass + \" \" + params.slideDuplicateNextClass + \" \" + params.slideDuplicatePrevClass);\n var activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + activeIndex + \"\\\"]\");\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]\").addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n var nextSlide = activeSlide.nextAll(\".\" + params.slideClass).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n var prevSlide = activeSlide.prevAll(\".\" + params.slideClass).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + nextSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(\".\" + params.slideClass + \":not(.\" + params.slideDuplicateClass + \")[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \"[data-swiper-slide-index=\\\"\" + prevSlide.attr('data-swiper-slide-index') + \"\\\"]\").addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","import { extend } from '../../../utils/utils';\nexport default function updateActiveIndex(newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n params = swiper.params,\n previousIndex = swiper.activeIndex,\n previousRealIndex = swiper.realIndex,\n previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n var skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../../utils/dom';\nexport default function updateClickedSlide(e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest(\".\" + params.slideClass)[0];\n var slideFound = false;\n var slideIndex;\n\n if (slide) {\n for (var i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\nexport default {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide\n};","export default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(\"The 'index' argument cannot have type other than 'number' or 'string'. [\" + typeof index + \"] given.\");\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n var indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n var isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(\"The passed-in 'index' (string) couldn't be converted to 'number'. [\" + index + \"] given.\");\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n var params = swiper.params,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n previousIndex = swiper.previousIndex,\n activeIndex = swiper.activeIndex,\n rtl = swiper.rtlTranslate,\n wrapperEl = swiper.wrapperEl,\n enabled = swiper.enabled;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n var translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (var i = 0; i < slidesGrid.length; i += 1) {\n var normalizedTranslate = -Math.floor(translate * 100);\n var normalizedGird = Math.floor(slidesGrid[i] * 100);\n var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGird) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n var direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n var t = -translate;\n\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n animating = swiper.animating,\n snapGrid = swiper.snapGrid,\n slidesGrid = swiper.slidesGrid,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n var translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) {\n return normalize(val);\n });\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n\n var prevIndex;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n var swiper = this;\n var index = swiper.activeIndex;\n var skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n var prevSnap = swiper.snapGrid[snapIndex - 1];\n var _currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../../utils/dom';\nimport { nextTick } from '../../../utils/utils';\nexport default function slideToClickedSlide() {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl;\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(\".\" + params.slideClass + \"[data-swiper-slide-index=\\\"\" + realIndex + \"\\\"]:not(.\" + params.slideDuplicateClass + \")\").eq(0).index();\n nextTick(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\nexport default {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loopCreate() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl; // Remove duplicated slides\n\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass).remove();\n var slides = $wrapperEl.children(\".\" + params.slideClass);\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(document.createElement('div')).addClass(params.slideClass + \" \" + params.slideBlankClass);\n $wrapperEl.append(blankNode);\n }\n\n slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (el, index) {\n var slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (var _i = 0; _i < appendSlides.length; _i += 1) {\n $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {\n $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n var swiper = this;\n swiper.emit('beforeLoopFix');\n var activeIndex = swiper.activeIndex,\n slides = swiper.slides,\n loopedSlides = swiper.loopedSlides,\n allowSlidePrev = swiper.allowSlidePrev,\n allowSlideNext = swiper.allowSlideNext,\n snapGrid = swiper.snapGrid,\n rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n var slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n\n var _slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (_slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n slides = swiper.slides;\n $wrapperEl.children(\".\" + params.slideClass + \".\" + params.slideDuplicateClass + \",.\" + params.slideClass + \".\" + params.slideBlankClass).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n var found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n var swiper = this;\n var document = getDocument();\n var window = getWindow();\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n enabled = swiper.enabled;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n var $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n var noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : \".\" + params.noSwipingClass;\n var isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n var startX = touches.currentX;\n var startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n var preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport { extend, now } from '../../../utils/utils';\nexport default function onTouchMove(event) {\n var document = getDocument();\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n var touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n var diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n var disableParentSwiper = true;\n var resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../../utils/utils';\nexport default function onTouchEnd(event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params,\n touches = swiper.touches,\n rtl = swiper.rtlTranslate,\n $wrapperEl = swiper.$wrapperEl,\n slidesGrid = swiper.slidesGrid,\n snapGrid = swiper.snapGrid,\n enabled = swiper.enabled;\n if (!enabled) return;\n var e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n var touchEndTime = now();\n var timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(function () {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n var currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n var distance = lastMoveEvent.position - velocityEvent.position;\n var time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n data.velocities.length = 0;\n var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n var nextSlide;\n\n for (var j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n swiper.once('transitionEnd', function () {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(function () {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(function () {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n swiper.emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n return;\n } // Find current slide\n\n\n var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n\n for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + _increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + _increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n var swiper = this;\n var params = swiper.params,\n el = swiper.el;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n var allowSlideNext = swiper.allowSlideNext,\n allowSlidePrev = swiper.allowSlidePrev,\n snapGrid = swiper.snapGrid; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n var swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl,\n rtlTranslate = swiper.rtlTranslate,\n enabled = swiper.enabled;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\nvar dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture: capture\n } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n var swiper = this;\n var document = getDocument();\n var params = swiper.params,\n touchEvents = swiper.touchEvents,\n el = swiper.el,\n wrapperEl = swiper.wrapperEl,\n device = swiper.device,\n support = swiper.support;\n var capture = !!params.nested; // Touch Events\n\n if (!support.touch && support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (support.touch) {\n var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n\n if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n } // Resize handler\n\n\n swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);\n}\n\nexport default {\n attachEvents: attachEvents,\n detachEvents: detachEvents\n};","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\nexport default {\n addClasses: addClasses,\n removeClasses: removeClasses\n};","function prepareClasses(entries, prefix) {\n var resultClasses = [];\n entries.forEach(function (item) {\n if (typeof item === 'object') {\n Object.keys(item).forEach(function (classNames) {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n var swiper = this;\n var classNames = swiper.classNames,\n params = swiper.params,\n rtl = swiper.rtl,\n $el = swiper.$el,\n device = swiper.device,\n support = swiper.support; // prettier-ignore\n\n var suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': support.pointerEvents && !support.touch\n }, {\n 'free-mode': params.freeMode\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'multirow': params.slidesPerColumn > 1\n }, {\n 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }], params.containerModifierClass);\n classNames.push.apply(classNames, suffixes);\n $el.addClass([].concat(classNames).join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n var swiper = this;\n var $el = swiper.$el,\n classNames = swiper.classNames;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: false,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-container-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","function _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/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport { extend, now, deleteProps } from '../../utils/utils';\nimport { getSupport } from '../../utils/get-support';\nimport { getDevice } from '../../utils/get-device';\nimport { getBrowser } from '../../utils/get-browser';\nimport Resize from '../../modules/resize/resize';\nimport Observer from '../../modules/observer/observer';\nimport modular from './modular';\nimport eventsEmitter from './events-emitter';\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\nimport defaults from './defaults';\nvar prototypes = {\n modular: modular,\n eventsEmitter: eventsEmitter,\n update: update,\n translate: translate,\n transition: transition,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow,\n classes: classes,\n images: images\n};\nvar extendedDefaults = {};\n\nvar Swiper = /*#__PURE__*/function () {\n function Swiper() {\n var el;\n var params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n el = args[0];\n params = args[1];\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n var swipers = [];\n $(params.el).each(function (containerEl) {\n var newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n var swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n }\n }); // Extend defaults with modules params\n\n var swiperParams = extend({}, defaults);\n swiper.useParams(swiperParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(function (eventName) {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n extend(swiper, {\n enabled: swiper.params.enabled,\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n\n if (swiper.support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n }); // Install Modules\n\n swiper.useModules();\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n var _proto = Swiper.prototype;\n\n _proto.enable = function enable() {\n var swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n };\n\n _proto.disable = function disable() {\n var swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n };\n\n _proto.setProgress = function setProgress(progress, speed) {\n var swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n var min = swiper.minTranslate();\n var max = swiper.maxTranslate();\n var current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n };\n\n _proto.emitContainerClasses = function emitContainerClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var classes = swiper.el.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', classes.join(' '));\n };\n\n _proto.getSlideClasses = function getSlideClasses(slideEl) {\n var swiper = this;\n return slideEl.className.split(' ').filter(function (className) {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n };\n\n _proto.emitSlidesClasses = function emitSlidesClasses() {\n var swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n var updates = [];\n swiper.slides.each(function (slideEl) {\n var classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n };\n\n _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {\n var swiper = this;\n var params = swiper.params,\n slides = swiper.slides,\n slidesGrid = swiper.slidesGrid,\n swiperSize = swiper.size,\n activeIndex = swiper.activeIndex;\n var spv = 1;\n\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n\n for (var i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {\n if (slides[_i] && !breakLoop) {\n slideSize += slides[_i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {\n if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n\n return spv;\n };\n\n _proto.update = function update() {\n var swiper = this;\n if (!swiper || swiper.destroyed) return;\n var snapGrid = swiper.snapGrid,\n params = swiper.params; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n var translated;\n\n if (swiper.params.freeMode) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n };\n\n _proto.changeDirection = function changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n var swiper = this;\n var currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(\"\" + swiper.params.containerModifierClass + currentDirection).addClass(\"\" + swiper.params.containerModifierClass + newDirection);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(function (slideEl) {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n };\n\n _proto.mount = function mount(el) {\n var swiper = this;\n if (swiper.mounted) return true; // Find el\n\n var $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n var getWrapperSelector = function getWrapperSelector() {\n return \".\" + (swiper.params.wrapperClass || '').trim().split(' ').join('.');\n };\n\n var getWrapper = function getWrapper() {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n var res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = function (options) {\n return $el.children(options);\n };\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n var $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n var document = getDocument();\n var wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(\".\" + swiper.params.slideClass).each(function (slideEl) {\n $wrapperEl.append(slideEl);\n });\n }\n\n extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n };\n\n _proto.init = function init(el) {\n var swiper = this;\n if (swiper.initialized) return swiper;\n var mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n };\n\n _proto.destroy = function destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n $el = swiper.$el,\n $wrapperEl = swiper.$wrapperEl,\n slides = swiper.slides;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(function (eventName) {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n };\n\n Swiper.extendDefaults = function extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n };\n\n Swiper.installModule = function installModule(module) {\n if (!Swiper.prototype.modules) Swiper.prototype.modules = {};\n var name = module.name || Object.keys(Swiper.prototype.modules).length + \"_\" + now();\n Swiper.prototype.modules[name] = module;\n };\n\n Swiper.use = function use(module) {\n if (Array.isArray(module)) {\n module.forEach(function (m) {\n return Swiper.installModule(m);\n });\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n };\n\n _createClass(Swiper, null, [{\n key: \"extendedDefaults\",\n get: function get() {\n return extendedDefaults;\n }\n }, {\n key: \"defaults\",\n get: function get() {\n return defaults;\n }\n }]);\n\n return Swiper;\n}();\n\nObject.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import { extend } from '../../utils/utils';\nexport default {\n useParams: function useParams(instanceParams) {\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName]; // Extend params\n\n if (module.params) {\n extend(instanceParams, module.params);\n }\n });\n },\n useModules: function useModules(modulesParams) {\n if (modulesParams === void 0) {\n modulesParams = {};\n }\n\n var instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {}; // Add event listeners\n\n if (module.on && instance.on) {\n Object.keys(module.on).forEach(function (moduleEventName) {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n } // Module create callback\n\n\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n};","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\nexport default {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n translateTo: translateTo\n};","import { getTranslate } from '../../../utils/utils';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n var swiper = this;\n var params = swiper.params,\n rtl = swiper.rtlTranslate,\n translate = swiper.translate,\n $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate,\n params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n wrapperEl = swiper.wrapperEl,\n progress = swiper.progress;\n var x = 0;\n var y = 0;\n var z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(\"translate3d(\" + x + \"px, \" + y + \"px, \" + z + \"px)\");\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n var newProgress;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n var swiper = this;\n var params = swiper.params,\n wrapperEl = swiper.wrapperEl;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var minTranslate = swiper.minTranslate();\n var maxTranslate = swiper.maxTranslate();\n var newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n var isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n var _wrapperEl$scrollTo;\n\n wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\nexport default {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd\n};","export default function setTransition(duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n params = swiper.params,\n previousIndex = swiper.previousIndex;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n\n swiper.emit('slideChangeTransitionStart');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}","export default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n previousIndex = swiper.previousIndex,\n params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n var dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n\n swiper.emit('slideChangeTransitionEnd');\n\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\nexport default {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n var swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n var el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n var swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper.el.style.cursor = '';\n}","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\nexport default {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides\n};","export default function appendSlide(slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n var newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl,\n params = swiper.params,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n var slidesBuffer = [];\n\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var _i = 0; _i < slides.length; _i += 1) {\n if (slides[_i]) $wrapperEl.append(slides[_i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {\n $wrapperEl.append(slidesBuffer[_i2]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeSlide(slidesIndexes) {\n var swiper = this;\n var params = swiper.params,\n $wrapperEl = swiper.$wrapperEl,\n activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(\".\" + params.slideClass);\n }\n\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && swiper.support.observer)) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function removeAllSlides() {\n var swiper = this;\n var slidesIndexes = [];\n\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\nexport default {\n setBreakpoint: setBreakpoint,\n getBreakpoint: getBreakpoint\n};","import { extend } from '../../../utils/utils';\nexport default function setBreakpoint() {\n var swiper = this;\n var activeIndex = swiper.activeIndex,\n initialized = swiper.initialized,\n _swiper$loopedSlides = swiper.loopedSlides,\n loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,\n params = swiper.params,\n $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {\n var paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var isMultiRow = breakpointParams.slidesPerColumn > 1;\n var wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(params.containerModifierClass + \"multirow \" + params.containerModifierClass + \"multirow-column\");\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(params.containerModifierClass + \"multirow\");\n\n if (breakpointParams.slidesPerColumnFill && breakpointParams.slidesPerColumnFill === 'column' || !breakpointParams.slidesPerColumnFill && params.slidesPerColumnFill === 'column') {\n $el.addClass(params.containerModifierClass + \"multirow-column\");\n }\n\n swiper.emitContainerClasses();\n }\n\n var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n var isEnabled = swiper.params.enabled;\n extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n var breakpoint = false;\n var window = getWindow();\n var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n var points = Object.keys(breakpoints).map(function (point) {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n var minRatio = parseFloat(point.substr(1));\n var value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n\n return {\n value: point,\n point: point\n };\n });\n points.sort(function (a, b) {\n return parseInt(a.value, 10) - parseInt(b.value, 10);\n });\n\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n point = _points$i.point,\n value = _points$i.value;\n\n if (base === 'window') {\n if (window.matchMedia(\"(min-width: \" + value + \"px)\").matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n var swiper = this;\n var params = swiper.params;\n var wasLocked = swiper.isLocked;\n var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked; // events\n\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default {\n checkOverflow: checkOverflow\n};","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\nexport default {\n loadImage: loadImage,\n preloadImages: preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../../utils/dom';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n var window = getWindow();\n var image;\n\n function onReady() {\n if (callback) callback();\n }\n\n var isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n var swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { extend, bindModuleMethods } from '../../utils/utils';\nvar Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n var ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl.css({\n opacity: slideOpacity\n }).transform(\"translate3d(\" + tx + \"px, \" + ty + \"px, 0px)\");\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides,\n $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n};\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n fadeEffect: _extends({}, Fade)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(swiper.params.containerModifierClass + \"fade\");\n var overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true\n };\n extend(swiper.params, overwriteParams);\n extend(swiper.originalParams, overwriteParams);\n },\n setTranslate: function setTranslate(swiper) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(swiper, duration) {\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper.$el, swiper.params.navigation, swiper.params.createElements, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click: function click(swiper, e) {\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { extend, isObject, bindModuleMethods } from '../../utils/utils';\nimport $ from '../../utils/dom';\nvar Thumbs = {\n init: function init() {\n var swiper = this;\n var thumbsParams = swiper.params.thumbs;\n if (swiper.thumbs.initialized) return false;\n swiper.thumbs.initialized = true;\n var SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false\n }));\n swiper.thumbs.swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n return true;\n },\n onThumbClick: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n var slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n var currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n var prevIndex = swiper.slides.eq(currentIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n var nextIndex = swiper.slides.eq(currentIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\").eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n },\n update: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var newThumbsIndex;\n var direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(\"[data-swiper-slide-index=\\\"\" + swiper.realIndex + \"\\\"]\").eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\").addClass(thumbActiveClass);\n }\n } else {\n for (var _i = 0; _i < thumbsToActivate; _i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);\n }\n }\n }\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n thumbs: _extends({\n swiper: null,\n initialized: false\n }, Thumbs)\n });\n },\n on: {\n beforeInit: function beforeInit(swiper) {\n var thumbs = swiper.params.thumbs;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update: function update(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize: function resize(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate(swiper) {\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition: function setTransition(swiper, duration) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy(swiper) {\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n }\n }\n};","/**\n * Dom7 3.0.0\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: November 9, 2020\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n var proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get: function get() {\n return proto;\n },\n set: function set(value) {\n proto.__proto__ = value;\n }\n });\n}\n\nvar Dom7 = /*#__PURE__*/function (_Array) {\n _inheritsLoose(Dom7, _Array);\n\n function Dom7(items) {\n var _this;\n\n _this = _Array.call.apply(_Array, [this].concat(items)) || this;\n makeReactive(_assertThisInitialized(_this));\n return _this;\n }\n\n return Dom7;\n}( /*#__PURE__*/_wrapNativeSuper(Array));\n\nfunction arrayFlat(arr) {\n if (arr === void 0) {\n arr = [];\n }\n\n var res = [];\n arr.forEach(function (el) {\n if (Array.isArray(el)) {\n res.push.apply(res, arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n var uniqueArray = [];\n\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, function (match, group) {\n return group.toUpperCase();\n });\n}\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n var a = [];\n var res = context.querySelectorAll(selector);\n\n for (var i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n var window = getWindow();\n var document = getDocument();\n var arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n var html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(' 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (var i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (var propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n var el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute(\"data-\" + key);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n var el = this[0];\n if (!el) return undefined;\n var dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (var dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (var i = 0; i < el.attributes.length; i += 1) {\n var _attr = el.attributes[i];\n\n if (_attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(_attr.name.split('data-')[1])] = _attr.value;\n }\n }\n }\n\n for (var key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n var el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n var values = [];\n\n for (var i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (var _i = 0; _i < this.length; _i += 1) {\n var _el = this[_i];\n\n if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {\n for (var j = 0; j < _el.options.length; j += 1) {\n _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;\n }\n } else {\n _el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? duration + \"ms\" : duration;\n }\n\n return this;\n}\n\nfunction on() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) return;\n var eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n var _parents = $(target).parents(); // eslint-disable-line\n\n\n for (var k = 0; k < _parents.length; k += 1) {\n if ($(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n var events = eventType.split(' ');\n var j;\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var _event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];\n\n el.dom7LiveListeners[_event].push({\n listener: listener,\n proxyListener: handleLiveEvent\n });\n\n el.addEventListener(_event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var eventType = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventType = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n var events = eventType.split(' ');\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = void 0;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once() {\n var dom = this;\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n var eventName = args[0],\n targetSelector = args[1],\n listener = args[2],\n capture = args[3];\n\n if (typeof args[1] === 'function') {\n eventName = args[0];\n listener = args[1];\n capture = args[2];\n targetSelector = undefined;\n }\n\n function onceHandler() {\n for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n eventArgs[_key8] = arguments[_key8];\n }\n\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger() {\n var window = getWindow();\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n var events = args[0].split(' ');\n var eventData = args[1];\n\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n\n if (window.CustomEvent) {\n var evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter(function (data, dataIndex) {\n return dataIndex > 0;\n });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n var dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles = this.styles();\n\n return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n var window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n var _styles2 = this.styles();\n\n return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = document.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === window ? window.scrollY : el.scrollTop;\n var scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (var i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n var window = getWindow();\n\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n var window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n var window = getWindow();\n var i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (var _prop in props) {\n this[i].style[_prop] = props[_prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach(function (el, index) {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n var result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n var window = getWindow();\n var document = getDocument();\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n var child = this[0];\n var i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n var length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n var returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append() {\n var newChild;\n var document = getDocument();\n\n for (var k = 0; k < arguments.length; k += 1) {\n newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];\n\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n var document = getDocument();\n var i;\n var j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n var before = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (var j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n var after = $(selector);\n\n for (var i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (var j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n var _next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_next).is(selector)) nextEls.push(_next);\n } else nextEls.push(_next);\n\n el = _next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n var _prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(_prev).is(selector)) prevEls.push(_prev);\n } else prevEls.push(_prev);\n\n el = _prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n var parents = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var _parent = this[i].parentNode; // eslint-disable-line\n\n while (_parent) {\n if (selector) {\n if ($(_parent).is(selector)) parents.push(_parent);\n } else {\n parents.push(_parent);\n }\n\n _parent = _parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n var closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n var foundElements = [];\n\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n var children = []; // eslint-disable-line\n\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].children;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add() {\n var dom = this;\n var i;\n var j;\n\n for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n els[_key10] = arguments[_key10];\n }\n\n for (i = 0; i < els.length; i += 1) {\n var toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n\n if (el.nodeType === 1) {\n for (var j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\nfunction scrollTo() {\n var window = getWindow();\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var left = args[0],\n top = args[1],\n duration = args[2],\n easing = args[3],\n callback = args[4];\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n left = args[0];\n top = args[1];\n duration = args[2];\n callback = args[3];\n easing = args[4];\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n var el = this;\n var currentTop;\n var currentLeft;\n var maxTop;\n var maxLeft;\n var newTop;\n var newLeft;\n var scrollTop; // eslint-disable-line\n\n var scrollLeft; // eslint-disable-line\n\n var animateTop = top > 0 || top === 0;\n var animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n var startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time) {\n if (time === void 0) {\n time = new Date().getTime();\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n var done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var top = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n top = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var left = args[0],\n duration = args[1],\n easing = args[2],\n callback = args[3];\n\n if (args.length === 3 && typeof easing === 'function') {\n left = args[0];\n duration = args[1];\n callback = args[2];\n easing = args[3];\n }\n\n var dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n var window = getWindow();\n var els = this;\n var a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n easingProgress: function easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n stop: function stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done: function done(complete) {\n a.animating = false;\n a.elements.each(function (el) {\n var element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n var que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate: function animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n var elements = []; // Define & Cache Initials & Units\n\n a.elements.each(function (el, index) {\n var initialFullValue;\n var initialValue;\n var unit;\n var finalValue;\n var finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(function (prop) {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue: initialFullValue,\n initialValue: initialValue,\n unit: unit,\n finalValue: finalValue,\n finalFullValue: finalFullValue,\n currentValue: initialValue\n };\n });\n });\n var startTime = null;\n var time;\n var elementsDone = 0;\n var propsDone = 0;\n var done;\n var began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n var progress;\n var easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(function (element) {\n var el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(function (prop) {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n var _el$prop = el[prop],\n initialValue = _el$prop.initialValue,\n finalValue = _el$prop.finalValue,\n unit = _el$prop.unit;\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n var currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n var animateInstance;\n\n for (var i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n var els = this;\n\n for (var i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (typeof args[0] === 'undefined') {\n for (var i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on.apply(this, [name].concat(args));\n }\n\n return eventHandler;\n}\n\nvar click = shortcut('click');\nvar blur = shortcut('blur');\nvar focus = shortcut('focus');\nvar focusin = shortcut('focusin');\nvar focusout = shortcut('focusout');\nvar keyup = shortcut('keyup');\nvar keydown = shortcut('keydown');\nvar keypress = shortcut('keypress');\nvar submit = shortcut('submit');\nvar change = shortcut('change');\nvar mousedown = shortcut('mousedown');\nvar mousemove = shortcut('mousemove');\nvar mouseup = shortcut('mouseup');\nvar mouseenter = shortcut('mouseenter');\nvar mouseleave = shortcut('mouseleave');\nvar mouseout = shortcut('mouseout');\nvar mouseover = shortcut('mouseover');\nvar touchstart = shortcut('touchstart');\nvar touchend = shortcut('touchend');\nvar touchmove = shortcut('touchmove');\nvar resize = shortcut('resize');\nvar scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nvar Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n styles: styles,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove\n};\nObject.keys(Methods).forEach(function (methodName) {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getDocument, getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (key) {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n var window = getWindow();\n var style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n var window = getWindow();\n var matrix;\n var curTransform;\n var transformMatrix;\n var curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) {\n return a.replace(',', '.');\n }).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n var to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (var i = 1; i < arguments.length; i += 1) {\n var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n var keysArray = Object.keys(Object(nextSource)).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n });\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction bindModuleMethods(instance, obj) {\n Object.keys(obj).forEach(function (key) {\n if (isObject(obj[key])) {\n Object.keys(obj[key]).forEach(function (subKey) {\n if (typeof obj[key][subKey] === 'function') {\n obj[key][subKey] = obj[key][subKey].bind(instance);\n }\n });\n }\n\n instance[key] = obj[key];\n });\n}\n\nfunction classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return \".\" + classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.');\n}\n\nfunction createElementIfNotDefined($container, params, createElements, checkProps) {\n var document = getDocument();\n\n if (createElements) {\n Object.keys(checkProps).forEach(function (key) {\n if (!params[key] && params.auto === true) {\n var element = document.createElement('div');\n element.className = checkProps[key];\n $container.append(element);\n params[key] = element;\n }\n });\n }\n\n return params;\n}\n\nexport { deleteProps, nextTick, now, getTranslate, isObject, extend, bindModuleMethods, getComputedStyle, classesToSelector, createElementIfNotDefined };","!function(t,o){\"function\"==typeof define&&define.amd?define(o):\"object\"==typeof exports?module.exports=o():t.tingle=o()}(this,function(){function t(t){var o={onClose:null,onOpen:null,beforeOpen:null,beforeClose:null,stickyFooter:!1,footer:!1,cssClass:[],closeLabel:\"Close\",closeMethods:[\"overlay\",\"button\",\"escape\"]};this.opts=r({},o,t),this.init()}function o(){this.modalBoxFooter&&(this.modalBoxFooter.style.width=this.modalBox.clientWidth+\"px\",this.modalBoxFooter.style.left=this.modalBox.offsetLeft+\"px\")}function e(){this.modal=document.createElement(\"div\"),this.modal.classList.add(\"tingle-modal\"),0!==this.opts.closeMethods.length&&-1!==this.opts.closeMethods.indexOf(\"overlay\")||this.modal.classList.add(\"tingle-modal--noOverlayClose\"),this.modal.style.display=\"none\",this.opts.cssClass.forEach(function(t){\"string\"==typeof t&&this.modal.classList.add(t)},this),-1!==this.opts.closeMethods.indexOf(\"button\")&&(this.modalCloseBtn=document.createElement(\"button\"),this.modalCloseBtn.type=\"button\",this.modalCloseBtn.classList.add(\"tingle-modal__close\"),this.modalCloseBtnIcon=document.createElement(\"span\"),this.modalCloseBtnIcon.classList.add(\"tingle-modal__closeIcon\"),this.modalCloseBtnIcon.innerHTML=\"×\",this.modalCloseBtnLabel=document.createElement(\"span\"),this.modalCloseBtnLabel.classList.add(\"tingle-modal__closeLabel\"),this.modalCloseBtnLabel.innerHTML=this.opts.closeLabel,this.modalCloseBtn.appendChild(this.modalCloseBtnIcon),this.modalCloseBtn.appendChild(this.modalCloseBtnLabel)),this.modalBox=document.createElement(\"div\"),this.modalBox.classList.add(\"tingle-modal-box\"),this.modalBoxContent=document.createElement(\"div\"),this.modalBoxContent.classList.add(\"tingle-modal-box__content\"),this.modalBox.appendChild(this.modalBoxContent),-1!==this.opts.closeMethods.indexOf(\"button\")&&this.modal.appendChild(this.modalCloseBtn),this.modal.appendChild(this.modalBox)}function s(){this.modalBoxFooter=document.createElement(\"div\"),this.modalBoxFooter.classList.add(\"tingle-modal-box__footer\"),this.modalBox.appendChild(this.modalBoxFooter)}function i(){this._events={clickCloseBtn:this.close.bind(this),clickOverlay:l.bind(this),resize:this.checkOverflow.bind(this),keyboardNav:n.bind(this)},-1!==this.opts.closeMethods.indexOf(\"button\")&&this.modalCloseBtn.addEventListener(\"click\",this._events.clickCloseBtn),this.modal.addEventListener(\"mousedown\",this._events.clickOverlay),window.addEventListener(\"resize\",this._events.resize),document.addEventListener(\"keydown\",this._events.keyboardNav)}function n(t){-1!==this.opts.closeMethods.indexOf(\"escape\")&&27===t.which&&this.isOpen()&&this.close()}function l(t){-1!==this.opts.closeMethods.indexOf(\"overlay\")&&!d(t.target,\"tingle-modal\")&&t.clientX=t},t.prototype.checkOverflow=function(){this.modal.classList.contains(\"tingle-modal--visible\")&&(this.isOverflow()?this.modal.classList.add(\"tingle-modal--overflow\"):this.modal.classList.remove(\"tingle-modal--overflow\"),!this.isOverflow()&&this.opts.stickyFooter?this.setStickyFooter(!1):this.isOverflow()&&this.opts.stickyFooter&&(o.call(this),this.setStickyFooter(!0)))},{modal:t}});","/*!\n * Unidragger v2.4.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( 'ontouchstart' in window ) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","/*!\r\n * verge 1.10.2+201705300050\r\n * http://npm.im/verge\r\n * MIT Ryan Van Etten\r\n */\r\n\r\n!function(root, name, make) {\n if (typeof module != 'undefined' && module['exports']) module['exports'] = make();\r\n else root[name] = make();\r\n}(this, 'verge', function() {\r\n\r\n var xports = {}\r\n , win = typeof window != 'undefined' && window\r\n , doc = typeof document != 'undefined' && document\r\n , docElem = doc && doc.documentElement\r\n , matchMedia = win['matchMedia'] || win['msMatchMedia']\r\n , mq = matchMedia ? function(q) {\r\n return !!matchMedia.call(win, q).matches;\r\n } : function() {\r\n return false;\r\n }\r\n , viewportW = xports['viewportW'] = function() {\r\n var a = docElem['clientWidth'], b = win['innerWidth'];\r\n return a < b ? b : a;\r\n }\r\n , viewportH = xports['viewportH'] = function() {\r\n var a = docElem['clientHeight'], b = win['innerHeight'];\r\n return a < b ? b : a;\r\n };\r\n\n /**\n * Test if a media query is active. Like Modernizr.mq\r\n * @since 1.6.0\r\n * @return {boolean}\r\n */\n xports['mq'] = mq;\r\n\r\n /**\n * Normalized matchMedia\r\n * @since 1.6.0\r\n * @return {MediaQueryList|Object}\r\n */\n xports['matchMedia'] = matchMedia ? function() {\r\n // matchMedia must be binded to window\r\n return matchMedia.apply(win, arguments);\r\n } : function() {\r\n // Gracefully degrade to plain object\r\n return {};\r\n };\r\n\r\n /**\r\n * @since 1.8.0\r\n * @return {{width:number, height:number}}\r\n */\r\n function viewport() {\r\n return {'width':viewportW(), 'height':viewportH()};\r\n }\r\n xports['viewport'] = viewport;\r\n\n /**\n * Cross-browser window.scrollX\r\n * @since 1.0.0\r\n * @return {number}\r\n */\r\n xports['scrollX'] = function() {\r\n return win.pageXOffset || docElem.scrollLeft;\n };\r\n\r\n /**\n * Cross-browser window.scrollY\r\n * @since 1.0.0\r\n * @return {number}\r\n */\r\n xports['scrollY'] = function() {\r\n return win.pageYOffset || docElem.scrollTop;\n };\r\n\r\n /**\r\n * @param {{top:number, right:number, bottom:number, left:number}} coords\r\n * @param {number=} cushion adjustment\r\n * @return {Object}\r\n */\r\n function calibrate(coords, cushion) {\r\n var o = {};\r\n cushion = +cushion || 0;\r\n o['width'] = (o['right'] = coords['right'] + cushion) - (o['left'] = coords['left'] - cushion);\r\n o['height'] = (o['bottom'] = coords['bottom'] + cushion) - (o['top'] = coords['top'] - cushion);\r\n return o;\r\n }\r\n\r\n /**\r\n * Cross-browser element.getBoundingClientRect plus optional cushion.\r\n * Coords are relative to the top-left corner of the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el element or stack (uses first item)\r\n * @param {number=} cushion +/- pixel adjustment amount\r\n * @return {Object|boolean}\r\n */\r\n function rectangle(el, cushion) {\r\n el = el && !el.nodeType ? el[0] : el;\r\n if (!el || 1 !== el.nodeType) return false;\r\n return calibrate(el.getBoundingClientRect(), cushion);\r\n }\r\n xports['rectangle'] = rectangle;\r\n\r\n /**\r\n * Get the viewport aspect ratio (or the aspect ratio of an object or element)\r\n * @since 1.7.0\r\n * @param {(Element|Object)=} o optional object with width/height props or methods\r\n * @return {number}\r\n * @link http://w3.org/TR/css3-mediaqueries/#orientation\r\n */\r\n function aspect(o) {\r\n o = null == o ? viewport() : 1 === o.nodeType ? rectangle(o) : o;\r\n var h = o['height'], w = o['width'];\r\n h = typeof h == 'function' ? h.call(o) : h;\r\n w = typeof w == 'function' ? w.call(o) : w;\r\n return w/h;\r\n }\r\n xports['aspect'] = aspect;\r\n\r\n /**\r\n * Test if an element is in the same x-axis section as the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el\r\n * @param {number=} cushion\r\n * @return {boolean}\r\n */\r\n xports['inX'] = function(el, cushion) {\r\n var r = rectangle(el, cushion);\r\n return !!r && r.right >= 0 && r.left <= viewportW();\r\n };\r\n\r\n /**\r\n * Test if an element is in the same y-axis section as the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el\r\n * @param {number=} cushion\r\n * @return {boolean}\r\n */\r\n xports['inY'] = function(el, cushion) {\r\n var r = rectangle(el, cushion);\r\n return !!r && r.bottom >= 0 && r.top <= viewportH();\r\n };\r\n\r\n /**\r\n * Test if an element is in the viewport.\r\n * @since 1.0.0\r\n * @param {Element|Object} el\r\n * @param {number=} cushion\r\n * @return {boolean}\r\n */\r\n xports['inViewport'] = function(el, cushion) {\r\n // Equiv to `inX(el, cushion) && inY(el, cushion)` but just manually do both\n // to avoid calling rectangle() twice. It gzips just as small like this.\r\n var r = rectangle(el, cushion);\r\n return !!r && r.bottom >= 0 && r.right >= 0 && r.top <= viewportH() && r.left <= viewportW();\r\n };\r\n\r\n return xports;\r\n});\n"],"names":["root","undefined","lib","currency","symbol","format","decimal","thousand","precision","grouping","number","nativeMap","Array","prototype","map","nativeIsArray","isArray","toString","Object","isString","obj","charCodeAt","substr","call","isObject","defaults","object","defs","key","hasOwnProperty","iterator","context","i","j","results","length","checkPrecision","val","base","Math","round","abs","isNaN","checkCurrencyFormat","settings","match","pos","neg","replace","zero","unformat","parse","value","regex","RegExp","unformatted","parseFloat","toFixed","power","pow","formatNumber","opts","usePrecision","negative","parseInt","mod","split","formatMoney","formats","formatColumn","list","padAfterSymbol","indexOf","maxLength","formatted","fVal","join","module","exports","accounting","e","window","g","self","t","a","r","c","s","u","d","l","Function","f","m","max","p","min","b","Date","now","w","NaN","valueOf","test","slice","y","n","o","TypeError","leading","trailing","v","apply","h","k","x","setTimeout","O","arguments","this","maxWait","cancel","clearTimeout","flush","E","N","z","C","A","q","L","T","M","S","D","H","$","W","P","forEach","addedNodes","removedNodes","dataset","aos","children","concat","Y","MutationObserver","WebKitMutationObserver","MozMutationObserver","_","document","observe","documentElement","childList","subtree","F","enumerable","configurable","writable","defineProperty","I","assign","K","G","J","Q","R","navigator","userAgent","vendor","opera","U","B","mobile","phone","style","V","ie11","createEvent","initCustomEvent","detail","CustomEvent","dispatchEvent","X","options","position","node","data","animated","classList","remove","animatedClassNames","id","mirror","out","once","in","add","pageYOffset","Z","offsetLeft","offsetTop","tagName","scrollLeft","scrollTop","offsetParent","top","left","ee","getAttribute","te","useClassNames","animatedClassName","filter","initClassName","innerHeight","Number","querySelectorAll","offsetHeight","offset","anchorPlacement","ne","oe","ie","ae","delay","easing","duration","disable","startEvent","disableMutationObserver","throttleDelay","debounceDelay","re","all","atob","ce","addEventListener","se","de","ue","removeAttribute","tablet","init","console","info","querySelector","setAttribute","readyState","refresh","refreshHard","utils","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","resolve","reject","requestData","requestHeaders","headers","isFormData","request","XMLHttpRequest","auth","username","password","Authorization","btoa","fullPath","baseURL","url","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","status","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","then","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","instance","extend","axios","create","instanceConfig","Cancel","CancelToken","isCancel","promises","spread","message","__CANCEL__","executor","resolvePromise","token","reason","throwIfRequested","source","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","unshift","fulfilled","rejected","push","shift","getUri","merge","handlers","use","eject","fn","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","error","Error","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","isAxiosError","toJSON","name","description","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","prop","deepMerge","axiosKeys","otherKeys","keys","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","JSON","stringify","maxContentLength","thisArg","args","encode","encodeURIComponent","serializedParams","parts","isDate","toISOString","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","toGMTString","decodeURIComponent","originURL","msie","urlParsingNode","createElement","resolveURL","href","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","trim","callback","arr","isFunction","constructor","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","result","assignValue","str","from","passive","removeEventListener","some","allowTouchMove","event","target","touches","preventDefault","body","paddingRight","overflow","platform","maxTouchPoints","disableBodyScroll","targetElement","ontouchstart","targetTouches","clientY","ontouchmove","scrollHeight","clientHeight","stopPropagation","reserveScrollBarGap","innerWidth","clientWidth","clearAllBodyScrollLocks","enableBodyScroll","__assign","CountUp","endVal","version","startVal","decimalPlaces","useEasing","useGrouping","smartEasingThreshold","smartEasingAmount","separator","prefix","suffix","enableScrollSpy","scrollSpyDelay","scrollSpyOnce","finalEndVal","countDown","paused","count","startTime","remaining","frameVal","easingFn","printValue","rAF","requestAnimationFrame","update","numerals","easeOutExpo","formattingFn","validateValue","resetDuration","String","el","getElementById","onScrollFns","handleScroll","onscroll","scrollY","getBoundingClientRect","height","start","reset","determineDirectionAndSmartEasing","pauseResume","cancelAnimationFrame","textContent","innerHTML","ensureNumber","cancelable","defaultPrevented","evt","origPrevent","bubbles","get","Event","SelectorSet","size","uid","selectors","selectorObjects","indexes","activeIndexes","docElem","matches","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","matchesSelector","selector","idRe","sel","element","classRe","className","baseVal","Map","tagRe","nodeName","set","chunker","parseSelectorIndexes","allIndexes","dup","index","allIndexesLen","rest","exec","findByPrototype","ary","proto","len","item","isPrototypeOf","sortById","logDefaultIndexUsed","indexProto","objs","selectorIndexes","selectorIndex","selIndex","removedIds","removeAll","splice","queryAll","len2","els","elements","sort","len3","matchedIds","bubbleEvents","captureEvents","propagationStopped","WeakMap","immediatePropagationStopped","currentTargets","currentTargetDesc","getOwnPropertyDescriptor","before","subject","verb","trackPropagation","trackImmediate","getCurrentTarget","defineCurrentTarget","getter","dispatch","eventPhase","canDispatch","type","queue","reverse","nodeType","_matches","matched","observers","parentElement","len1","on","capture","events","factory","matchesMethod","ElemProto","Element","prefixes","elem","classNames","arrow","composeClassName_1","group_1","state","default","isAtTop","bodyAtTop","isAtBottom","bodyAtBottom","isScrollable","bodyScrollable","styleAttr","isOpen","maxBodyHeight","itemsList","groups","groupState","gradientTop","gradientBottom","option_1","group","isDisabled","groupDisabled","hasLabel","groupHasLabel","groupLabel","label","optionState","arrow_1","value_1","head","select","isSelected","selectedOption","option","optionSelected","focusedOption","optionFocused","optionDisabled","body_1","head_1","rootDisabled","isInvalid","rootInvalid","rootOpen","isFocused","rootFocused","hasValue","rootHasValue","isOpenAbove","rootOpenAbove","isOpenBelow","rootOpenBelow","isUseNativeMode","rootNative","isRequired","isPlaceholderShown","humanReadableValue","showPlaceholderWhenOpen","openOnFocus","closeOnSelect","useNativeUiOnMobile","loop","clampMaxVisibleItems","liveUpdates","maxVisibleItems","seal","onOpen","onClose","onSelect","onOptionClick","Behavior_1","Callbacks_1","ClassNames_1","callbacks","behavior","helpful_merge_1","Config_1","bindEvents_1","Renderer_1","dispatchOpen_1","pollForSelectChange_1","pollForSelectMutation_1","closeOthers_1","scrollToView_1","StateManager_1","StateMapper_1","cache_1","Timers_1","Easydropdown","selectElement","mapFromSelect","renderer","dom","render","timers","actions","proxyActions","closeOthers","scrollToView","handleStateUpdate","eventBindings","pollChangeIntervalId","pollMutationIntervalId","nextValue","close","queryDomRefs","validate","invalidate","destroy","clear","binding","unbind","cacheIndex","cb","getOptionFromIndex","focusedIndex","implementation","defineProperties","Timers","_this","clearInterval","Easydropdown_1","EasydropdownFacade_1","selectElementOrSelector","HTMLSelectElement","multiple","_i","cache_2","cachedInstance","factoryFn","decoratedFactory","selects","UP","DOWN","SPACE","ENTER","ESC","OPTION","EventBinding","eventBindingRaw","debounce","throttle","handler","boundHandler","closestParent_1","Selectors","_a","optionIndex","selectOption","startClickSelecting","isKeying","focusOption","getIsMobilePlatform_1","handleHeadClick","injectedGetIsMobilePlatform","isMobilePlatform","isClosed","focus","boundHandleHeadClick","_b","topOut","bottomOut","scroll","blur","isClickSelecting","killSelectReaction_1","KeyCodes","handleSelectKeydownDown_1","handleSelectKeydownUp_1","handlerParams","keyCode","isSearching","metaKey","selectedIndex","iterations","incrementAmount","totalOptions","searchResetDuration","includes","searchTimeoutId","resetSearch","throttle_1","EventBinding_1","getEventsList_1","bindEvent","eventBinding","handleBodyClick_1","handleBodyMousedown_1","handleBodyMouseover_1","handleHeadClick_1","handleItemsListScroll_1","handleSelectBlur_1","handleSelectFocus_1","handleSelectInvalid_1","handleSelectKeydown_1","handleSelectKeypress_1","handleWindowClick_1","handleWindowClick_2","AttributeChangeType","DomChangeType","Dom","sumItemsHeight","Infinity","totalHeight","newNode","newInnerHtml","newTextContent","attributeChanges","childCommands","root_1","createDomElementFromHtml_1","Dom_1","domDiff_1","domPatch_1","Renderer","html","rootElement","injectSelect","nextHtml","nextRoot","diffCommand","syncSelectWithValue","replaceChild","err","parent","tempSelect","reduce","localDom","ref","AttributeChangeType_1","DomChangeType_1","PatchCommand_1","diffAttributeChanges","prev","next","totalAttributes","attributes","attributesMap","undef","attr1","attr2","attr","change","ADD","REMOVE","EDIT","OUTER","domDiff","totalChildNodes","command","NONE","Text","INNER","HTMLElement","REPLACE","outerHTML","FULL","childNodes","childNode","patchAttributes","raf","patchAttribute","domPatch","childCommand","CollisionType","includeSelf","parentNode","tokens","predicate","temp","firstElementChild","CollisionType_1","mapCollisionData","deltaTop","deltaBottom","maxHeight","itemHeight","maxVisibleItemsOverride","largestDelta","TOP","BOTTOM","floor","bbHead","wh","bottom","detectBodyCollision_1","dispatchOpen","injectedDetectBodyCollision","collisionData","boundDispatchOpen","isIos","isAndroid","isOperaMini","isWindowsPhone","keyingTimeoutId","keying","resetKeying","disabled","lastValue","setInterval","getOptionIndexFromValue","handleMutation","lastOuterHtml","timerId","last","later","difference","BodyStatus","ScrollStatus","Group","thisInstance","cache","getScrollTop","currentScrollTop","optionOffsetTop","optionHeight","bodyHeight","scrollOffset","remainder","scrollToMiddle","BodyStatus_1","ScrollStatus_1","Group_1","Option_1","State","stateRaw","placeholder","scrollStatus","AT_TOP","bodyStatus","CLOSED","groupRaw","optionRaw","total","hasPlaceholder","Boolean","find","OPEN_ABOVE","OPEN_BELOW","AT_BOTTOM","groupStartIndex","_c","resolveActions_1","StateManager","injectedActions","onAction","stateProxy","createStateProxy","getPropertyDescriptorsFromValue","proxy","getPrototypeOf","localDescriptors","isAccessorProperty","readPropertyValue","updatePropertyValue","State_1","StateMapper","isWithinGroup","required","child","HTMLOptionElement","mapGroup","lastGroup","mapOption","selected","HTMLOptGroupElement","groupChild","isParentGroupDisabled","SCROLLED","makeScrollable","makeUnscrollable","collisionType","optionAtIndex","shouldScrollToView","useNative","factory_1","EvEmitter","eventName","listener","_events","listeners","onceEvents","_onceEvents","off","emitEvent","onceListeners","allOff","num","div","arraySlice","makeArray","removeFrom","getParent","getQueryElement","handleEvent","filterFindElements","elems","ffElems","childElems","debounceMethod","_class","methodName","threshold","timeoutName","docReady","toDashed","$1","$2","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","jQuery","Flickity","Slide","slideUpdateTarget","updateTarget","fade","slideTargetX","firstCellX","cells","cell","targetX","renderPosition","setOpacity","alpha","opacity","createMethods","_createFade","fadeIndex","prevSelectedIndex","onSelectFade","onDragEndFade","onSettleFade","onActivateFade","onDeactivateFade","updateSlides","slides","slide","didDragEnd","selectedSlide","positionSlider","fadeSlides","dispatchScrollEvent","positionSliderAtSelected","setTranslateX","getFadeIndexes","fadeSlideA","fadeSlideB","distance","wrapDifference","progress","fadeHideIndex","isDragging","wrapAround","getFadeDragWrapIndexes","getFadeDragLimitIndexes","distances","getSlideDistance","absDistances","minDistance","closestIndex","delta","modulo","dragIndex","diff","diffPlus","slideableWidth","diffMinus","_getWrapShiftCells","shiftWrapCells","_createSync","syncers","syncOption","sync","unsyncAll","companion","_syncCompanion","syncListener","guid","flickity","unsync","_unsync","_unsyncCompanion","syncer","insert","_makeCells","fragment","createDocumentFragment","appendChild","getCellsFragment","isAppend","slider","insertCellElement","insertBefore","endCells","_sizeCells","cellChange","append","prepend","getCells","minCellIndex","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","setGallerySize","getCellSlideIndex","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","transform","firstSlide","positionX","slidesWidth","velocity","percentPosition","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","wrapShift","outerWidth","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","selectedAttraction","Cell","originSide","unselect","side","setPosition","setDefaultTarget","marginProperty","width","cellAlign","sideOffset","adjustedX","removeChild","Unidragger","draggable","dragThreshold","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","pageXOffset","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","dragStart","dragStartPosition","startAnimation","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","endBound","getLastSlide","dragMoveTime","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","isDragSelect","positiveResting","_getClosestResting","negativeResting","increment","condition","contain","dist","minDist","isWrapAround","slideIndex","wrap","staticClick","clickedCell","getParentCell","cellElem","cellIndex","scrollMoveX","scrollMoveY","_pointerDone","animatePrototype","getComputedStyle","moveElements","toElem","GUID","instances","queryElement","flickityGUID","$element","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","_createSlider","watchCSS","activate","isActive","_filterFindCellElements","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","positionCells","getLastCell","maxCellHeight","cellX","startCell","outerHeight","_containSlides","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","addCell","updateSelectedSlide","groupCells","percentMatch","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","right","shorthand","adaptiveHeight","_unshiftCells","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","emitArgs","$event","jQEvent","trigger","isWrap","isInstant","_wrapSelect","prevIndex","wrapIndex","backWrapDelta","forewardWrapDelta","previous","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","initialIndex","queryCell","selectCell","getAdjacentCellElements","adjCount","cellElems","uiChange","childUIPointerDown","onresize","content","deactivate","onkeydown","isNotFocused","keyboardHandlers","leftMethod","rightMethod","prevScrollY","preventScroll","scrollTo","removeData","bridget","setJQuery","jq","LazyLoader","img","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","getCellLazyImages","src","srcset","onload","complete","Unipointer","PageDots","holder","dots","handleClick","onClick","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","autoPlay","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","svg","createSVG","createElementNS","shape","pathMovements","arrowShape","x0","x1","y1","x2","y2","x3","onclick","enable","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","isOriginLeft","lastCell","lastMargin","getStyleSize","logError","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","padding","borderStyle","borderWidth","boxSizing","setup","display","getZeroSize","offsetWidth","isBorderBox","measurement","paddingWidth","paddingLeft","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","ArrayStrategy_1","Messages","deep","useReferenceIfTargetUnset","useReferenceIfArray","preserveTypeIfTargetUnset","includeReadOnly","includeNonEmurable","arrayStrategy","errorMessage","MERGE_ERROR","ArrayStrategy","merge_1","FluentMerge","sources","to","with","offender","suggestion","TYPE_ERROR_TARGET","TYPE_ERROR_SOURCE","INVALID_ARRAY_STRATEGY","strategy","reduceBestMatch","offendingKeyLower","offendingKey","currBestMatch","currKey","totalMatching","getTotalMatching","possibleKey","longer","shorter","leftPointer","leftInnerPointer","leftTotalMatching","lastCommonIndex","rightPointer","rightInnerPointer","rightTotalMatching","longerLastIndex","shorterLastIndex","isSealed","isExtensible","reducer","bestMatch","deriveCustomTypeInstance_1","FluentMerge_1","handleMergeError_1","isClientSide","sourceKeys","PUSH","RangeError","getOwnPropertyNames","sourceKeys_1","descriptor","Node","createFluent","_typeof","Symbol","_classCallCheck","Constructor","_defineProperties","props","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","setPrototypeOf","__proto__","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","_superPropBase","property","_get","receiver","desc","_defineProperty","_set","isStrict","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","done","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","ChangeDetails","details","inserted","rawInserted","skip","tailShift","DIRECTION","forceDirection","escapeRegExp","normalizePrepare","prep","objectIncludes","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","insertedCount","end","removedCount","substring","ContinuousTailDetails","tail","masked","aggregate","_appendPlaceholder","beforePos","shiftChar","IMask","InputMask","Masked","_value","_update","DEFAULTS","isInitialized","withValueRefresh","input","doCommit","doParse","doFormat","extractInput","raw","isComplete","fromPos","toPos","appendTo","ch","flags","checkTail","consistentState","_normalizePrepare","doPrepare","_normalizePrepare2","_appendCharRaw","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","appendTail","_beforeTailState","ci","_appendChar","eager","_appendEager","_refreshing","rawInput","rawInputValue","ret","_isolated","prepare","commit","deleteCount","removeDirection","oldRawValue","tailPos","extractTail","nearestInputPos","valLength","mask","tval","typedValue","EMPTY_VALUES","maskedClass","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","MaskedFunction","warn","createMask","MaskedClass","_excluded","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","blockOpts","isFilled","isOptional","placeholderChar","unmaskedValue","lazy","_this$masked","_this$masked2","_this$masked3","minPos","maxPos","boundPos","_this$masked4","_this$parent","PatternFixedDefinition","isFixed","isUnmasking","_isRawInput","char","isResolved","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","cstate","chunkShiftPos","PatternCursor","_log","_ref","ok","_blockStartPos","pop","block","pushState","bindBlock","_this$block","_pushLeft","_this2","_this3","_this4","_pushRight","_this5","_this6","_Masked","_super","definitions","_rebuildMask","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","bNames","bName","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","_flags$_beforeTailSta","_flags$_beforeTailSta2","_block","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","bDetails","accVal","_block2","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","pushRightBeforeInput","popState","pushLeftBeforeInput","pushRightBeforeFilled","pushLeftBeforeRequired","pushLeftBeforeFilled","pushRightBeforeRequired","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","_MaskedPattern","fromStr","padStart","toStr","sameCharsCount","repeat","minstr","maxstr","_ref2","padEnd","autofix","nextVal","_this$boundaries","boundaries","_this$boundaries2","_get2","firstNonZero","_matchFrom","_this$boundaries3","_this$boundaries4","_len","_key","GET_DEFAULT_BLOCKS","getFullYear","getMonth","getDate","bk","date","isDateExist","_str$split2","day","month","year","MaskElement","_unsafeSelectionStart","_unsafeSelectionEnd","selectionStart","selectionEnd","_unsafeSelect","HTMLMaskElement","_MaskElement","_handlers","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","setSelectionRange","_toggleEventHandler","EVENTS_MAP","selectionChange","drop","click","HTMLContenteditableMaskElement","_HTMLMaskElement","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","isContentEditable","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","updateOptions","updateControl","typedValueEquals","bindEvents","unbindEvents","ev","_cursorChanging","_changingCursorPos","_selection","newUnmaskedValue","newValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","_delayUpdateCursor","_abortUpdateCursor","_fireEvent","_inputEvent","hIndex","removed","updateCursor","_unbindEvents","MaskedEnum","enum","_updateRegExps","allowNegative","scale","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","noSepCh","_removeThousandsSeparators","prepCh","extendOnSeparators","_separatorsCount","_this$_adjustRangeWit","_adjustRangeWithSeparators","_this$_adjustRangeWit2","prevBeforeTailValue","prevBeforeTailSeparatorsCount","_separatorsCountFromSlice","appendDetails","_insertThousandsSeparators","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","_findSeparatorAround","separatorAroundToPos","_this$_adjustRangeWit3","_this$_adjustRangeWit4","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","validnum","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","currentMask","compiledMasks","_applyDispatch","currentMaskFlags","prevValueBeforeTail","inputValue","insertValue","_rawInputValue","tailValue","prevMask","prevMaskState","doDispatch","currentMaskRef","currentDetails","_normalizePrepare3","_normalizePrepare4","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","_this$currentMask5","mi","_this$currentMask6","_this$currentMask7","_this$currentMask8","_get3","_len2","_key2","_mask$mi","_this$currentMask9","inputs","weight","i1","i2","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","runIsolated","pipeArgs","globalThis","decode","converter","api","toUTCString","escape","stringifiedAttributes","attributeName","json","jar","getJSON","withConverter","easeInOutQuad","a11y","timeStart","timeElapsed","timeCurrent","jumper","require","global","lgThumbnail","_extends","thumbnailDefaults","thumbnail","animateThumb","currentPagerPosition","thumbWidth","thumbContHeight","thumbMargin","exThumbImage","showThumbByDefault","toggleThumb","pullCaptionUp","enableThumbDrag","enableThumbSwipe","swipeThreshold","loadYoutubeThumbnail","youtubeThumbSize","loadVimeoThumbnail","vimeoThumbSize","loadDailymotionThumbnail","Thumbnail","core","lgData","thumbOuter","thumbOuterWidth","thumbTotalWidth","items","thumbIndex","addClass","outer","build","isTouch","doCss","thumbClickable","toggle","thumbkeyPress","$thumb","thumbList","vimeoErrorThumbSize","getThumb","thumb","thumbImg","isVideo","vimeoId","youtube","vimeo","dailymotion","insertAdjacentHTML","dynamic","dynamicEl","$this","vimeoVideoId","script","removeClass","lgBusy","setTranslate","setVendor","lGalleryOn","hasClass","speed","startCoords","endCoords","isDraging","isMoved","tempLeft","lgScript","getElementsByClassName","lgModules","lgUtils","wrapper","contains","customEvent","Listener","_id","_event","param","lightgallery","_lgUtils","_lgUtils2","__esModule","mode","cssEasing","startClass","backdropDuration","hideBarsDelay","useLeft","ariaLabelledby","ariaDescribedby","closable","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selectWithin","prevHtml","iframeMaxWidth","download","counter","appendCounterTo","enableSwipe","enableDrag","galleryId","supportLegacyBrowser","Plugin","modules","hideBartimeout","___slide","_hash","structure","closeGallery","initialHideBarTimeout","template","subHtmlCont","setTop","inner","prevScrollTop","wH","lGallery","transition","support","html5","vk","addHtml","currentEle","subHtml","fL","loadContent","rec","_img","_src","_poster","_srcset","_sizes","_html","_alt","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","wWidth","poster","alt","responsive","sizes","iframe","_isVideo","videoClass","picturefill","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","arrowDisable","touchPrev","touchNext","goToNextSlide","goToPrevSlide","xValue","yValue","touchMove","touchEnd","manageSwipeClass","deltaY","mousedown","lguid","lightGallery","moment","field","secondField","firstDay","parentEl","lang","numberOfMonths","numberOfColumns","singleDate","autoclose","repick","startDate","endDate","minDate","maxDate","disableDates","selectForward","selectBackward","minDays","maxDays","onError","hoveringTooltip","hideOnBodyClick","footer","disabledDatesInRange","tooltipNights","orientation","disableWeekends","locale","buttons","tooltip","one","other","tooltipOnDisabled","pluralize","renderTopButtons","viewMode","weekdayName","short","toLocaleString","weekday","renderDay","dummy","extraClass","prevMonth","subtract","nextMonth","_from","_to","isValid","isBetween","isSame","isAfter","setStartDate","setEndDate","isSameOrAfter","isSameOrBefore","tempStartDate","repickTrigger","isBefore","isoWeekday","renderCalendar","monthDate","calendar","toDate","prevDays","daysInMonth","nextDays","renderMonthsOfYear","ym","updateDates","days","checkDisabledDatesInRange","disabledArray","entry","closestPrev","closestNext","dayCell","Lightpick","_onMouseDown","isShowing","srcElement","_opts","visibility","swapDate","hide","footerMessage","not_allowed_range","hasAttribute","prevYear","nextYear","_toolbar","gotoDate","_onMouseEnter","showTooltip","hideTooltip","hoverDate","dt","pluralText","gotoMonth","gotoYear","_onInputChange","syncFields","show","_onInputFocus","_onInputClick","text","hasParentEl","dayBounding","pickerBouding","_left","_top","tooltipBounding","browserLang","language","userLanguage","dates","tmp","setDateRange","gotoToday","updatePosition","rect","calRect","preventOnSelect","dateISO","ISO_8601","dateOptFormat","getStartDate","getEndDate","setDate","setDisableDates","reloadOptions","getRawTag","objectToString","symToStringTag","toStringTag","trimmedEndIndex","reTrimStart","string","freeGlobal","objectProto","nativeObjectToString","isOwn","tag","unmasked","freeSelf","reWhitespace","toNumber","nativeMax","nativeMin","func","wait","lastArgs","lastThis","lastCallTime","lastInvokeTime","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","baseGetTag","isObjectLike","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","hookCallback","hooks","hasOwnProp","isObjectEmpty","res","arrLen","createUTC","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","array","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","aliases","addUnitAlias","unit","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","ms","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","getSetGlobalLocale","values","getLocale","defineLocale","abbr","_config","parentLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","milliseconds","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","positiveMomentsDifference","inp","createAdder","period","addSubtract","isAdding","invalid","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","properties","propertyLen","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","inclusivity","localFrom","localTo","inputMs","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","toArray","toObject","keepOffset","inspect","zone","isLocal","for","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","OFI","propRegex","testImg","Image","supportsObjectFit","supportsObjectPosition","supportsOFI","supportsCurrentSrc","currentSrc","nativeGetAttribute","nativeSetAttribute","autoModeEnabled","setPlaceholder","onImageReady","naturalWidth","fixOne","fontFamily","ofi","skipTest","naturalHeight","descriptors","keepSrcUsable","pf","ns","evaled","fillImg","reselect","curSrc","supported","polyfillCurrentSrc","backgroundImage","backgroundPosition","backgroundRepeat","backgroundOrigin","backgroundSize","fix","startAutoMode","getElementsByTagName","watchMQ","getOfiImageMaybe","HTMLImageElement","hijackAttributes","email","integer","tel","maxlength","minlength","tmpl","_arguments","groupedElemCount","pristine","form","classTo","errorClass","successClass","errorTextParent","errorTextTag","errorTextClass","PRISTINE_ERROR","ALLOWED_ATTRIBUTES","EMAIL_REGEX","validators","validator","Pristine","live","_addValidatorToField","valueParams","_validateField","errors","messages","halt","_getErrorElements","errorElements","errorClassElement","cls","findAncestor","errorTextElement","pristineDisplay","_showError","_showSuccess","_removeError","obj1","obj2","fields","endsWith","silent","NodeList","getErrors","erroneousFields","addValidator","addError","setGlobalConfig","ssrDocument","initEvent","importNode","origin","getDocument","doc","ssrWindow","history","replaceState","go","back","getPropertyValue","screen","matchMedia","getWindow","win","Autoplay","run","swiper","$activeSlideEl","eq","activeIndex","autoplay","autoplayResult","reverseDirection","loopFix","slidePrev","emit","isBeginning","stopOnLastSlide","slideTo","slideNext","isEnd","cssMode","running","waitForTransition","$wrapperEl","onTransitionEnd","visibilityState","destroyed","onMouseEnter","disableOnInteraction","onMouseLeave","attachMouseEvents","pauseOnMouseEnter","$el","detachMouseEvents","enabled","beforeTransitionStart","internal","sliderFirstMove","device","browser","getSupport","touch","DocumentTouch","pointerEvents","PointerEvent","observer","passiveListener","supportsPassive","gestures","calcSupport","getDevice","overrides","_temp","ua","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isEdge","isSafari","isWebView","calcBrowser","createObserver","initialized","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","resizeHandler","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","attach","WebkitMutationObserver","mutations","observerUpdate","characterData","observeParents","containerParents","parents","observeSlideChildren","disconnect","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","isHorizontal","isVertical","css","getDirectionLabel","getDirectionPropertyValue","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","slidesPerColumn","slidesPerView","slidesPerColumnFill","newSlidesGrid","_$wrapperEl$css","_$wrapperEl$css2","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","_slide$","swiperSlideSize","centeredSlides","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","_i2","_slidesGridItem","_slides$filter$css","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","_allSlidesSize","allSlidesOffset","snapIndex","watchOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","each","swiperSlideOffset","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","updateProgress","multiplier","translatesDiff","maxTranslate","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","nextAll","prevSlide","prevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","runCallbacksOnInit","updateClickedSlide","closest","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","runCallbacks","initial","indexAsNumber","wrapperEl","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGird","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","_wrapperEl$scrollTo","isH","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","loopPreventsSlide","_clientLeft","clientLeft","normalize","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","getTranslate","loopDestroy","removeAttr","onTouchStart","touchEventsData","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","button","isTouched","noSwipingClass","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","closestElement","allowClick","swipeHandler","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","is","focusableElements","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","touchAngle","diffX","diffY","sqrt","atan2","PI","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","_increment","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","previousTranslate","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","move","passiveListeners","simulateTouch","updateOnWindowResize","detachEvents","addClasses","resultClasses","suffixes","containerModifierClass","emitContainerClasses","removeClasses","createElements","virtualTranslate","breakpointsBase","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","prototypes","modular","useParams","instanceParams","moduleName","useModules","modulesParams","moduleParams","moduleEventName","eventsEmitter","axis","byController","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","containerEl","currentHeight","points","point","minRatio","_points$i","wasLocked","lastSlidePosition","classes","images","loadImage","imageEl","checkForComplete","image","onReady","imagesLoaded","imagesToLoad","extendedDefaults","Swiper","swipers","newParams","__swiper__","moduleParamName","auto","desktop","swiperParams","passedParams","touchEventsTouch","touchEventsDesktop","clickTimeout","_proto","setProgress","current","getSlideClasses","slideEl","updates","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","prototypeGroup","protoMethod","Fade","$slideEl","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","beforeInit","overwriteParams","Navigation","toggleEl","disabledClass","_swiper$navigation","$nextEl","$prevEl","lockClass","onPrevClick","onNextClick","_swiper$navigation2","hideOnClick","hiddenClass","toEdge","fromEdge","_swiper$navigation3","_swiper$navigation4","targetEl","pagination","clickable","isHidden","toggleClass","Thumbs","thumbsParams","thumbs","SwiperClass","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","nextIndex","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","slideChange","beforeDestroy","_construct","Parent","Class","_wrapNativeSuper","_cache","has","Wrapper","Dom7","_Array","arrayFlat","arrayFilter","toCreate","tempParent","qsa","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","_el$classList","_el$classList2","_len4","_key4","_len3","_key3","attrs","attrName","transitionDuration","_len5","_key5","eventType","targetSelector","handleLiveEvent","eventData","dom7EventData","_parents","dom7LiveListeners","proxyListener","dom7Listeners","_len6","_key6","dom7proxy","_len9","_key9","dataIndex","fireCallBack","includeMargins","_styles","styles","_styles2","box","clientTop","scrollX","_prop","compareWith","previousSibling","returnIndex","newChild","tempDiv","nextElementSibling","nextEls","previousElementSibling","prevEls","_parent","foundElements","found","deleteProps","nextTick","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","noExtend","nextSource","keysArray","nextKey","bindModuleMethods","subKey","createElementIfNotDefined","$container","checkProps","beforeOpen","beforeClose","stickyFooter","cssClass","closeLabel","closeMethods","modalBoxFooter","modalBox","modal","modalCloseBtn","modalCloseBtnIcon","modalCloseBtnLabel","modalBoxContent","clickCloseBtn","clickOverlay","keyboardNav","clientX","OTransition","MozTransition","WebkitTransition","addFooter","_busy","_isBusy","removeProperty","_scrollPosition","setStickyFooter","setContent","getContent","setFooterContent","getFooterContent","isOverflow","addFooterBtn","_bindHandles","isAdd","bindMethod","touchAction","handle","_bindStartEvent","cursorNodes","clickTypes","radio","checkbox","submit","file","isCursorNode","isClickType","isOkay","_pointerReset","focused","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","getTouch","identifier","pointerIdentifier","onmousedown","_pointerDown","onpointerdown","pointerId","postStartEvents","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","make","xports","mq","viewportW","viewportH","rectangle","cushion","coords","calibrate"],"sourceRoot":""}