{"version":3,"file":"js/libraries/lib.js","mappings":"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AAAH,IAAiBG,EAAAnK,OAAA,SACnC,MAAI,yBAAAmK,EAAA1I,OAAA,GAAAyI,EAAA,kBAEd,SAAAG,GAAA,OAAA3B,EAAA7M,MAAA,KAAAS,UAAA,OAAA1M,IAAA,cAAAR,MAED,WAAiC,IAAdgE,EAAGkJ,UAAAzM,OAAA,QAAA4G,IAAA6F,UAAA,GAAAA,UAAA,GAAGjJ,OAIvB,OAHAD,EAAIkX,GAAKlX,EAAIkX,IAAM,CAAC,EACpBlX,EAAIkX,GAAGC,KAAOnX,EAAIkX,GAAGC,MAAQ,IAAI/B,EAE1BpV,EAAIkX,GAAGC,IAChB,KAAC/B,CAAA,CApEgB,GAuEIA,EAAOgC,YAAYnX,yBCpH1C,IAAIqB,EAAM,CACT,kBAAmB,CAClB,GACA,GAED,qBAAsB,CACrB,GACA,GAED,aAAc,CACb,GACA,EACA,GAED,oBAAqB,CACpB,GACA,EACA,GAED,uBAAwB,CACvB,GACA,EACA,GAED,gBAAiB,CAChB,GACA,EACA,GAED,yBAA0B,CACzB,IACA,GAED,4BAA6B,CAC5B,IACA,GAED,oBAAqB,CACpB,IACA,GAED,uBAAwB,CACvB,IACA,GAED,sBAAuB,CACtB,IACA,GAED,yBAA0B,CACzB,IACA,GAED,gBAAiB,CAChB,IACA,GAED,mBAAoB,CACnB,IACA,GAED,kBAAmB,CAClB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,IAED,wBAAyB,CACxB,IACA,IAED,kBAAmB,CAClB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,aAAc,CACb,GACA,EACA,GAED,gBAAiB,CAChB,GACA,EACA,GAED,UAAW,CACV,IACA,IAED,iBAAkB,CACjB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,aAAc,CACb,IACA,IAED,aAAc,CACb,IACA,IAED,gBAAiB,CAChB,IACA,IAED,kBAAmB,CAClB,IACA,IAED,qBAAsB,CACrB,IACA,IAED,iBAAkB,CACjB,IACA,IAED,oBAAqB,CACpB,IACA,IAED,gBAAiB,CAChB,IACA,EACA,EACA,IAED,mBAAoB,CACnB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","sources":["webpack://@template/frontend/webpack/runtime/load script","webpack://@template/frontend/./node_modules/swiper/shared/dom.js","webpack://@template/frontend/./node_modules/ssr-window/ssr-window.esm.js","webpack://@template/frontend/./node_modules/lodash/isObject.js","webpack://@template/frontend/./node_modules/swiper/shared/utils.js","webpack://@template/frontend/./node_modules/lodash/_root.js","webpack://@template/frontend/./node_modules/lodash/_Symbol.js","webpack://@template/frontend/./node_modules/lodash/_baseGetTag.js","webpack://@template/frontend/./node_modules/lodash/isObjectLike.js","webpack://@template/frontend/./node_modules/lodash/_freeGlobal.js","webpack://@template/frontend/./node_modules/lodash/toNumber.js","webpack://@template/frontend/./node_modules/lodash/_getRawTag.js","webpack://@template/frontend/./node_modules/lodash/_objectToString.js","webpack://@template/frontend/./node_modules/lodash/throttle.js","webpack://@template/frontend/./node_modules/lodash/debounce.js","webpack://@template/frontend/./node_modules/lodash/now.js","webpack://@template/frontend/./node_modules/lodash/_baseTrim.js","webpack://@template/frontend/./node_modules/lodash/_trimmedEndIndex.js","webpack://@template/frontend/./node_modules/lodash/isSymbol.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@template/frontend/./node_modules/@babel/runtime/regenerator/index.js","webpack://@template/frontend/./node_modules/swiper/shared/effect-init.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://@template/frontend/./node_modules/swiper/shared/effect-target.js","webpack://@template/frontend/./node_modules/swiper/shared/create-shadow.js","webpack://@template/frontend/./node_modules/lodash/identity.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://@template/frontend/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://@template/frontend/./node_modules/lodash/isLength.js","webpack://@template/frontend/./node_modules/lodash/isArray.js","webpack://@template/frontend/./node_modules/lodash/isArrayLike.js","webpack://@template/frontend/./node_modules/lodash/isFunction.js","webpack://@template/frontend/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://@template/frontend/./scripts/libraries/core.js","webpack://@template/frontend/./scripts/libraries/_plugins/ lazy ^\\.\\/.*$ chunkName: plugins/[request] namespace object","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://@template/frontend/./scripts/libraries/_helpers/index.js","webpack://@template/frontend/./node_modules/lodash/isBuffer.js","webpack://@template/frontend/./node_modules/lodash/_nodeUtil.js","webpack://@template/frontend/./scripts/libraries/_helpers/events.js","webpack://@template/frontend/./node_modules/lodash/_isPrototype.js","webpack://@template/frontend/./node_modules/lodash/_getNative.js","webpack://@template/frontend/./node_modules/lodash/isArguments.js","webpack://@template/frontend/./node_modules/lodash/_baseIsArguments.js","webpack://@template/frontend/./node_modules/lodash/stubFalse.js","webpack://@template/frontend/./node_modules/lodash/isTypedArray.js","webpack://@template/frontend/./node_modules/lodash/_baseIsTypedArray.js","webpack://@template/frontend/./node_modules/lodash/_baseUnary.js","webpack://@template/frontend/./node_modules/lodash/_baseKeys.js","webpack://@template/frontend/./node_modules/lodash/_nativeKeys.js","webpack://@template/frontend/./node_modules/lodash/_overArg.js","webpack://@template/frontend/./node_modules/lodash/_toSource.js","webpack://@template/frontend/./node_modules/swiper/shared/get-support.js","webpack://@template/frontend/./node_modules/lodash/forEach.js","webpack://@template/frontend/./node_modules/lodash/_arrayEach.js","webpack://@template/frontend/./node_modules/lodash/_baseEach.js","webpack://@template/frontend/./node_modules/lodash/_baseForOwn.js","webpack://@template/frontend/./node_modules/lodash/_baseFor.js","webpack://@template/frontend/./node_modules/lodash/_createBaseFor.js","webpack://@template/frontend/./node_modules/lodash/keys.js","webpack://@template/frontend/./node_modules/lodash/_arrayLikeKeys.js","webpack://@template/frontend/./node_modules/lodash/_baseTimes.js","webpack://@template/frontend/./node_modules/lodash/_isIndex.js","webpack://@template/frontend/./node_modules/lodash/_createBaseEach.js","webpack://@template/frontend/./node_modules/lodash/_castFunction.js","webpack://@template/frontend/./node_modules/lodash/_baseIsNative.js","webpack://@template/frontend/./node_modules/lodash/_isMasked.js","webpack://@template/frontend/./node_modules/lodash/_coreJsData.js","webpack://@template/frontend/./node_modules/lodash/_getValue.js","webpack://@template/frontend/./node_modules/lodash/delay.js","webpack://@template/frontend/./node_modules/lodash/_baseDelay.js","webpack://@template/frontend/./node_modules/lodash/_baseRest.js","webpack://@template/frontend/./node_modules/lodash/_overRest.js","webpack://@template/frontend/./node_modules/lodash/_apply.js","webpack://@template/frontend/./node_modules/lodash/_setToString.js","webpack://@template/frontend/./node_modules/lodash/_baseSetToString.js","webpack://@template/frontend/./node_modules/lodash/constant.js","webpack://@template/frontend/./node_modules/lodash/_defineProperty.js","webpack://@template/frontend/./node_modules/lodash/_shortOut.js","webpack://@template/frontend/./node_modules/swiper/core/transition/transitionEmit.js","webpack://@template/frontend/./node_modules/swiper/shared/classes-to-selector.js","webpack://@template/frontend/./node_modules/swiper/core/core.js","webpack://@template/frontend/./node_modules/lodash/each.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@template/frontend/./scripts/libraries/_helpers/swiperHelper.js","webpack://@template/frontend/./node_modules/swiper/swiper-bundle.esm.js","webpack://@template/frontend/./node_modules/swiper/shared/get-device.js","webpack://@template/frontend/./node_modules/swiper/shared/get-browser.js","webpack://@template/frontend/./node_modules/swiper/core/modules/resize/resize.js","webpack://@template/frontend/./node_modules/swiper/core/modules/observer/observer.js","webpack://@template/frontend/./node_modules/swiper/core/events-emitter.js","webpack://@template/frontend/./node_modules/swiper/core/update/index.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateSlides.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://@template/frontend/./node_modules/swiper/core/translate/index.js","webpack://@template/frontend/./node_modules/swiper/core/translate/getTranslate.js","webpack://@template/frontend/./node_modules/swiper/core/translate/translateTo.js","webpack://@template/frontend/./node_modules/swiper/core/transition/index.js","webpack://@template/frontend/./node_modules/swiper/core/slide/index.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slideTo.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://@template/frontend/./node_modules/swiper/core/loop/index.js","webpack://@template/frontend/./node_modules/swiper/core/loop/loopCreate.js","webpack://@template/frontend/./node_modules/swiper/core/grab-cursor/index.js","webpack://@template/frontend/./node_modules/swiper/core/events/index.js","webpack://@template/frontend/./node_modules/swiper/core/events/onTouchStart.js","webpack://@template/frontend/./node_modules/swiper/core/events/onTouchMove.js","webpack://@template/frontend/./node_modules/swiper/core/events/onTouchEnd.js","webpack://@template/frontend/./node_modules/swiper/core/breakpoints/index.js","webpack://@template/frontend/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://@template/frontend/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://@template/frontend/./node_modules/swiper/core/classes/index.js","webpack://@template/frontend/./node_modules/swiper/core/images/index.js","webpack://@template/frontend/./node_modules/swiper/core/images/loadImage.js","webpack://@template/frontend/./node_modules/swiper/core/check-overflow/index.js","webpack://@template/frontend/./node_modules/swiper/core/defaults.js","webpack://@template/frontend/./node_modules/swiper/core/moduleExtendParams.js","webpack://@template/frontend/./node_modules/swiper/modules/virtual/virtual.js","webpack://@template/frontend/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://@template/frontend/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://@template/frontend/./node_modules/swiper/modules/navigation/navigation.js","webpack://@template/frontend/./node_modules/swiper/modules/pagination/pagination.js","webpack://@template/frontend/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://@template/frontend/./node_modules/swiper/modules/parallax/parallax.js","webpack://@template/frontend/./node_modules/swiper/modules/zoom/zoom.js","webpack://@template/frontend/./node_modules/swiper/modules/lazy/lazy.js","webpack://@template/frontend/./node_modules/swiper/modules/controller/controller.js","webpack://@template/frontend/./node_modules/swiper/modules/a11y/a11y.js","webpack://@template/frontend/./node_modules/swiper/modules/history/history.js","webpack://@template/frontend/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://@template/frontend/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://@template/frontend/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://@template/frontend/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://@template/frontend/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://@template/frontend/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://@template/frontend/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://@template/frontend/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://@template/frontend/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://@template/frontend/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://@template/frontend/./node_modules/dom7/dom7.esm.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateSize.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateProgress.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://@template/frontend/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://@template/frontend/./node_modules/swiper/core/translate/setTranslate.js","webpack://@template/frontend/./node_modules/swiper/core/translate/minTranslate.js","webpack://@template/frontend/./node_modules/swiper/core/translate/maxTranslate.js","webpack://@template/frontend/./node_modules/swiper/core/transition/setTransition.js","webpack://@template/frontend/./node_modules/swiper/core/transition/transitionStart.js","webpack://@template/frontend/./node_modules/swiper/core/transition/transitionEnd.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slideToLoop.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slideNext.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slidePrev.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slideReset.js","webpack://@template/frontend/./node_modules/swiper/core/slide/slideToClosest.js","webpack://@template/frontend/./node_modules/swiper/core/loop/loopFix.js","webpack://@template/frontend/./node_modules/swiper/core/loop/loopDestroy.js","webpack://@template/frontend/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://@template/frontend/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://@template/frontend/./node_modules/swiper/core/events/onResize.js","webpack://@template/frontend/./node_modules/swiper/core/events/onScroll.js","webpack://@template/frontend/./node_modules/swiper/core/events/onClick.js","webpack://@template/frontend/./node_modules/swiper/core/classes/addClasses.js","webpack://@template/frontend/./node_modules/swiper/core/classes/removeClasses.js","webpack://@template/frontend/./node_modules/swiper/core/images/preloadImages.js","webpack://@template/frontend/./node_modules/swiper/modules/grid/grid.js","webpack://@template/frontend/./node_modules/swiper/modules/manipulation/manipulation.js","webpack://@template/frontend/./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack://@template/frontend/./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack://@template/frontend/./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack://@template/frontend/./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack://@template/frontend/./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack://@template/frontend/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://@template/frontend/./scripts/libraries/_helpers/filters-helper.js","webpack://@template/frontend/./node_modules/fitty/dist/fitty.module.js","webpack://@template/frontend/webpack/bootstrap","webpack://@template/frontend/webpack/runtime/compat get default export","webpack://@template/frontend/webpack/runtime/define property getters","webpack://@template/frontend/webpack/runtime/ensure chunk","webpack://@template/frontend/webpack/runtime/get javascript chunk filename","webpack://@template/frontend/webpack/runtime/get mini-css chunk filename","webpack://@template/frontend/webpack/runtime/global","webpack://@template/frontend/webpack/runtime/hasOwnProperty shorthand","webpack://@template/frontend/webpack/runtime/make namespace object","webpack://@template/frontend/webpack/runtime/node module decorator","webpack://@template/frontend/webpack/runtime/publicPath","webpack://@template/frontend/webpack/runtime/jsonp chunk loading","webpack://@template/frontend/./scripts/libraries/_helpers/cookies.js","webpack://@template/frontend/./scripts/libraries/_helpers/segment.js","webpack://@template/frontend/./scripts/libraries/_components/03-organisms/header-dropdown/header.js","webpack://@template/frontend/./scripts/libraries/_modules/carousels.js","webpack://@template/frontend/./scripts/libraries/_components/03-organisms/search-dropdown/search.js","webpack://@template/frontend/./scripts/libraries/_modules/tabs.js","webpack://@template/frontend/./scripts/libraries/_components/03-organisms/sticky-nav/sticky-nav.js","webpack://@template/frontend/./scripts/libraries/_modules/accordion.js","webpack://@template/frontend/./scripts/libraries/_modules/grid-carousel.js","webpack://@template/frontend/./scripts/libraries/_modules/dropdown.js","webpack://@template/frontend/./scripts/libraries/_modules/ajax-content-loader.js","webpack://@template/frontend/./scripts/libraries/_helpers/translations.js","webpack://@template/frontend/./scripts/libraries/_helpers/translationHelper.js","webpack://@template/frontend/./scripts/libraries/_helpers/datetimeHelper.js","webpack://@template/frontend/./scripts/libraries/_modules/user-favourite-content.js","webpack://@template/frontend/./scripts/libraries/_modules/tooltip.js","webpack://@template/frontend/./scripts/libraries/_modules/competition-list/filter.js","webpack://@template/frontend/./scripts/libraries/_modules/fitty.js","webpack://@template/frontend/./scripts/libraries/_modules/secondary-nav.js","webpack://@template/frontend/./scripts/libraries/lib.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"@template/frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\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';\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n};\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, {\n    value: Methods[methodName],\n    writable: true\n  });\n});\nexport default $;","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\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    Object.keys(src).forEach((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\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\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    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst 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() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\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","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(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 = 0) {\n  return setTimeout(callback, delay);\n}\n\nfunction now() {\n  return Date.now();\n}\n\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let 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 = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const 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(a => a.replace(',', '.')).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(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const 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 setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n  swiper,\n  targetPosition,\n  side\n}) {\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n\n  animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","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","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","/**\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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","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 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 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","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 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","/** 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 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 _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n    return e;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  var t,\n    e = {},\n    r = Object.prototype,\n    n = r.hasOwnProperty,\n    o = Object.defineProperty || function (t, e, r) {\n      t[e] = r.value;\n    },\n    i = \"function\" == typeof Symbol ? Symbol : {},\n    a = i.iterator || \"@@iterator\",\n    c = i.asyncIterator || \"@@asyncIterator\",\n    u = i.toStringTag || \"@@toStringTag\";\n  function define(t, e, r) {\n    return Object.defineProperty(t, e, {\n      value: r,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), t[e];\n  }\n  try {\n    define({}, \"\");\n  } catch (t) {\n    define = function define(t, e, r) {\n      return t[e] = r;\n    };\n  }\n  function wrap(t, e, r, n) {\n    var i = e && e.prototype instanceof Generator ? e : Generator,\n      a = Object.create(i.prototype),\n      c = new Context(n || []);\n    return o(a, \"_invoke\", {\n      value: makeInvokeMethod(t, r, c)\n    }), a;\n  }\n  function tryCatch(t, e, r) {\n    try {\n      return {\n        type: \"normal\",\n        arg: t.call(e, r)\n      };\n    } catch (t) {\n      return {\n        type: \"throw\",\n        arg: t\n      };\n    }\n  }\n  e.wrap = wrap;\n  var h = \"suspendedStart\",\n    l = \"suspendedYield\",\n    f = \"executing\",\n    s = \"completed\",\n    y = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var p = {};\n  define(p, a, function () {\n    return this;\n  });\n  var d = Object.getPrototypeOf,\n    v = d && d(d(values([])));\n  v && v !== r && n.call(v, a) && (p = v);\n  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n  function defineIteratorMethods(t) {\n    [\"next\", \"throw\", \"return\"].forEach(function (e) {\n      define(t, e, function (t) {\n        return this._invoke(e, t);\n      });\n    });\n  }\n  function AsyncIterator(t, e) {\n    function invoke(r, o, i, a) {\n      var c = tryCatch(t[r], t, o);\n      if (\"throw\" !== c.type) {\n        var u = c.arg,\n          h = u.value;\n        return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n          invoke(\"next\", t, i, a);\n        }, function (t) {\n          invoke(\"throw\", t, i, a);\n        }) : e.resolve(h).then(function (t) {\n          u.value = t, i(u);\n        }, function (t) {\n          return invoke(\"throw\", t, i, a);\n        });\n      }\n      a(c.arg);\n    }\n    var r;\n    o(this, \"_invoke\", {\n      value: function value(t, n) {\n        function callInvokeWithMethodAndArg() {\n          return new e(function (e, r) {\n            invoke(t, n, e, r);\n          });\n        }\n        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(e, r, n) {\n    var o = h;\n    return function (i, a) {\n      if (o === f) throw new Error(\"Generator is already running\");\n      if (o === s) {\n        if (\"throw\" === i) throw a;\n        return {\n          value: t,\n          done: !0\n        };\n      }\n      for (n.method = i, n.arg = a;;) {\n        var c = n.delegate;\n        if (c) {\n          var u = maybeInvokeDelegate(c, n);\n          if (u) {\n            if (u === y) continue;\n            return u;\n          }\n        }\n        if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n          if (o === h) throw o = s, n.arg;\n          n.dispatchException(n.arg);\n        } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n        o = f;\n        var p = tryCatch(e, r, n);\n        if (\"normal\" === p.type) {\n          if (o = n.done ? s : l, p.arg === y) continue;\n          return {\n            value: p.arg,\n            done: n.done\n          };\n        }\n        \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(e, r) {\n    var n = r.method,\n      o = e.iterator[n];\n    if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n    var i = tryCatch(o, e.iterator, r.arg);\n    if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n    var a = i.arg;\n    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n  }\n  function pushTryEntry(t) {\n    var e = {\n      tryLoc: t[0]\n    };\n    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n  }\n  function resetTryEntry(t) {\n    var e = t.completion || {};\n    e.type = \"normal\", delete e.arg, t.completion = e;\n  }\n  function Context(t) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], t.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(e) {\n    if (e || \"\" === e) {\n      var r = e[a];\n      if (r) return r.call(e);\n      if (\"function\" == typeof e.next) return e;\n      if (!isNaN(e.length)) {\n        var o = -1,\n          i = function next() {\n            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n            return next.value = t, next.done = !0, next;\n          };\n        return i.next = i;\n      }\n    }\n    throw new TypeError(_typeof(e) + \" is not iterable\");\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), o(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n    var e = \"function\" == typeof t && t.constructor;\n    return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n  }, e.mark = function (t) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n  }, e.awrap = function (t) {\n    return {\n      __await: t\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n    return this;\n  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n    void 0 === i && (i = Promise);\n    var a = new AsyncIterator(wrap(t, r, n, o), i);\n    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n      return t.done ? t.value : a.next();\n    });\n  }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n    return this;\n  }), define(g, \"toString\", function () {\n    return \"[object Generator]\";\n  }), e.keys = function (t) {\n    var e = Object(t),\n      r = [];\n    for (var n in e) r.push(n);\n    return r.reverse(), function next() {\n      for (; r.length;) {\n        var t = r.pop();\n        if (t in e) return next.value = t, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, e.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(e) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var t = this.tryEntries[0].completion;\n      if (\"throw\" === t.type) throw t.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(e) {\n      if (this.done) throw e;\n      var r = this;\n      function handle(n, o) {\n        return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n      }\n      for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n        var i = this.tryEntries[o],\n          a = i.completion;\n        if (\"root\" === i.tryLoc) return handle(\"end\");\n        if (i.tryLoc <= this.prev) {\n          var c = n.call(i, \"catchLoc\"),\n            u = n.call(i, \"finallyLoc\");\n          if (c && u) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          } else if (c) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n          } else {\n            if (!u) throw new Error(\"try statement without catch or finally\");\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(t, e) {\n      for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n        var o = this.tryEntries[r];\n        if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n          var i = o;\n          break;\n        }\n      }\n      i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n      var a = i ? i.completion : {};\n      return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n    },\n    complete: function complete(t, e) {\n      if (\"throw\" === t.type) throw t.arg;\n      return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n    },\n    finish: function finish(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n      }\n    },\n    \"catch\": function _catch(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.tryLoc === t) {\n          var n = r.completion;\n          if (\"throw\" === n.type) {\n            var o = n.arg;\n            resetTryEntry(r);\n          }\n          return o;\n        }\n      }\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(e, r, n) {\n      return this.delegate = {\n        iterator: values(e),\n        resultName: r,\n        nextLoc: n\n      }, \"next\" === this.method && (this.arg = t), y;\n    }\n  }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","export default function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n      swiper.slides.each(slideEl => {\n        const $slideEl = swiper.$(slideEl);\n        $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n      }); // create new one\n\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","import toPropertyKey from \"./toPropertyKey.js\";\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, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _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}","export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","export default function effectTarget(effectParams, $slideEl) {\n  if (effectParams.transformEl) {\n    return $slideEl.find(effectParams.transformEl).css({\n      'backface-visibility': 'hidden',\n      '-webkit-backface-visibility': 'hidden'\n    });\n  }\n\n  return $slideEl;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : String(i);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","export default function effectVirtualTransitionEnd({\n  swiper,\n  duration,\n  transformEl,\n  allSlides\n}) {\n  const {\n    slides,\n    activeIndex,\n    $wrapperEl\n  } = swiper;\n\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let $transitionEndTarget;\n\n    if (allSlides) {\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n    } else {\n      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n    }\n\n    $transitionEndTarget.transitionEnd(() => {\n      if (eventTriggered) return;\n      if (!swiper || swiper.destroyed) return;\n      eventTriggered = true;\n      swiper.animating = false;\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n      for (let i = 0; i < triggerEvents.length; i += 1) {\n        $wrapperEl.trigger(triggerEvents[i]);\n      }\n    });\n  }\n}","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is classified as an `Array` object.\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 array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}","function Warn(...args) {\n  window.console && window.console.warn(...args);\n}\n\nconst watchAddedNodes = async (callback, querySelector, immediate = true) => {\n  const throttle = await import('./_helpers/throttle');\n  if (!callback || typeof callback !== 'function') throw new Error('callback must be a function');\n  if (!querySelector) throw new Error('querySelector must have a value');\n\n  if (immediate) {\n    const initialElements = Array.from(document.querySelectorAll(querySelector));\n    callback(initialElements);\n  }\n\n  const observer = new MutationObserver((mutationsList) => {\n    let elements = [];\n    const debouncedClbk = throttle.debounce(\n      () => {\n        callback(elements);\n      },\n      250,\n      false\n    );\n    for (const mutation of mutationsList) {\n      if (mutation.type === 'childList') {\n        const nodes = Array.from(mutation.addedNodes).filter((node) => node.nodeType === 1);\n        const selfNodes = nodes.filter((node) => !querySelector || node.matches(querySelector));\n        const innerNodes = nodes\n          .filter((node) => querySelector && node.querySelector(querySelector))\n          .map((node) => Array.from(node.querySelectorAll(querySelector)))\n          .reduce((a, b) => a.concat(b), []);\n        elements = [...elements, ...selfNodes, ...innerNodes];\n      }\n    }\n\n    if (elements && elements.length) {\n      debouncedClbk();\n    }\n  });\n  observer.observe(document, {\n    childList: true,\n    subtree: true,\n  });\n  return observer;\n};\nexport class D3Core {\n  constructor() {\n    this.init();\n  }\n\n  async init() {\n    document.addEventListener('DOMContentLoaded', () => {\n      watchAddedNodes((elements) => {\n        elements.map((el) => {\n          this.launchPlugin(el);\n        });\n      }, '[data-vbw-plugin]');\n    });\n  }\n\n  launchPlugin(el) {\n    // plugin already set\n    if (!el || el.plugin) return;\n\n    const names = el.dataset?.vbwPlugin?.split('|');\n\n    //check if exist\n    if (!names) {\n      Warn('can not find data-plugin for element', el);\n      return;\n    }\n\n    let o;\n    try {\n      o = JSON.parse(el.dataset.options ?? '{}');\n    } catch (e) {\n      Warn('Options parsing error for element', el, e, el.dataset.options);\n      o = {};\n    }\n\n    names.map(async (pluginName) => {\n      const PluginClass = await this.getPlugin(pluginName);\n\n      if (!PluginClass) {\n        Warn(`Plugin ${pluginName} does not exist`);\n        return;\n      }\n\n      try {\n        const pluginInstance = new PluginClass(el, o);\n        el.plugin = pluginInstance;\n        await pluginInstance.init(el);\n      } catch (er) {\n        Warn('plugin function error', er, el, o, pluginName);\n      }\n    });\n  }\n\n  async getPlugin(pluginName) {\n    try {\n      return (await import(/* webpackChunkName: \"plugins/[request]\" */ `./_plugins/${pluginName}`))\n        .default;\n    } catch (e) {\n      Warn(`Plugin ${pluginName} not found`, e);\n      return null;\n    }\n  }\n\n  static getInstance(win = window) {\n    win.D3 = win.D3 || {};\n    win.D3.core = win.D3.core || new D3Core();\n\n    return win.D3.core;\n  }\n}\n\nconst d3CoreInstance = D3Core.getInstance(window);\nexport default d3CoreInstance;\n","var map = {\n\t\"./articles-list\": [\n\t\t98,\n\t\t3\n\t],\n\t\"./articles-list.js\": [\n\t\t98,\n\t\t3\n\t],\n\t\"./brackets\": [\n\t\t99,\n\t\t2,\n\t\t4\n\t],\n\t\"./brackets-helper\": [\n\t\t93,\n\t\t2,\n\t\t5\n\t],\n\t\"./brackets-helper.js\": [\n\t\t93,\n\t\t2,\n\t\t5\n\t],\n\t\"./brackets.js\": [\n\t\t99,\n\t\t2,\n\t\t4\n\t],\n\t\"./hamburger-multi-menu\": [\n\t\t100,\n\t\t6\n\t],\n\t\"./hamburger-multi-menu.js\": [\n\t\t100,\n\t\t6\n\t],\n\t\"./header-megamenu\": [\n\t\t101,\n\t\t7\n\t],\n\t\"./header-megamenu.js\": [\n\t\t101,\n\t\t7\n\t],\n\t\"./language-switcher\": [\n\t\t102,\n\t\t8\n\t],\n\t\"./language-switcher.js\": [\n\t\t102,\n\t\t8\n\t],\n\t\"./match-strip\": [\n\t\t103,\n\t\t9\n\t],\n\t\"./match-strip.js\": [\n\t\t103,\n\t\t9\n\t],\n\t\"./nav-countdown\": [\n\t\t104,\n\t\t0,\n\t\t10\n\t],\n\t\"./nav-countdown.js\": [\n\t\t104,\n\t\t0,\n\t\t10\n\t],\n\t\"./overlay-jwplayer\": [\n\t\t105,\n\t\t11\n\t],\n\t\"./overlay-jwplayer.js\": [\n\t\t105,\n\t\t11\n\t],\n\t\"./overlay-promo\": [\n\t\t106,\n\t\t12\n\t],\n\t\"./overlay-promo.js\": [\n\t\t106,\n\t\t12\n\t],\n\t\"./packages\": [\n\t\t96,\n\t\t0,\n\t\t1\n\t],\n\t\"./packages.js\": [\n\t\t96,\n\t\t0,\n\t\t1\n\t],\n\t\"./popup\": [\n\t\t107,\n\t\t13\n\t],\n\t\"./popup-module\": [\n\t\t108,\n\t\t14\n\t],\n\t\"./popup-module.js\": [\n\t\t108,\n\t\t14\n\t],\n\t\"./popup.js\": [\n\t\t107,\n\t\t13\n\t],\n\t\"./readmore\": [\n\t\t109,\n\t\t15\n\t],\n\t\"./readmore.js\": [\n\t\t109,\n\t\t15\n\t],\n\t\"./schedule-sort\": [\n\t\t110,\n\t\t16\n\t],\n\t\"./schedule-sort.js\": [\n\t\t110,\n\t\t16\n\t],\n\t\"./table-helper\": [\n\t\t111,\n\t\t17\n\t],\n\t\"./table-helper.js\": [\n\t\t111,\n\t\t17\n\t],\n\t\"./vbtv-engine\": [\n\t\t112,\n\t\t0,\n\t\t1,\n\t\t18\n\t],\n\t\"./vbtv-engine.js\": [\n\t\t112,\n\t\t0,\n\t\t1,\n\t\t18\n\t],\n\t\"./volley-station-widget\": [\n\t\t113,\n\t\t19\n\t],\n\t\"./volley-station-widget.js\": [\n\t\t113,\n\t\t19\n\t],\n\t\"./world-ranking-hp\": [\n\t\t114,\n\t\t20\n\t],\n\t\"./world-ranking-hp.js\": [\n\t\t114,\n\t\t20\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 39;\nmodule.exports = webpackAsyncContext;","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n      args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n      _next(undefined);\n    });\n  };\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _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}","export const x = (selector, context = document) => context.querySelectorAll(selector);\n\nexport const x0 = (selector, context = document) => context.querySelector(selector);\n\nexport const isTouch = (() =>\n  'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0)();\n\nexport const getOffsetTop = (elem) => {\n  let offsetTop = 0;\n  do {\n    if (!isNaN(elem.offsetTop)) {\n      offsetTop += elem.offsetTop;\n    }\n  } while ((elem = elem.offsetParent));\n  return offsetTop;\n};\n\nexport const getScrollTop = () => {\n  if (typeof pageYOffset != 'undefined') {\n    return pageYOffset;\n  } else {\n    let doc = document,\n      B = doc.body,\n      D = doc.documentElement;\n\n    D = D.clientHeight ? D : B;\n    return D.scrollTop;\n  }\n};\n\nexport const encodeURLComponent = (str) => {\n  return encodeURIComponent(str).replace(/[!'()*]/g, escape);\n};\n\nexport const getParametersFromURL = () => {\n  let re = /(?:\\?|&(?:amp;)?)([^=&#]+)(?:=?([^&#]*))/g,\n    match,\n    params = {},\n    url = document.location.href,\n    decode = (s) => decodeURIComponent(s.replace(/\\+/g, ' '));\n\n  while ((match = re.exec(url))) {\n    if (!params[decode(match[1])]) {\n      params[decode(match[1])] = [];\n    }\n    params[decode(match[1])].push(decode(match[2]));\n  }\n\n  return params;\n};\n\nexport const closest = (el, parentClass) => {\n  do {\n    if (el.classList && el.classList.contains(parentClass)) {\n      return el;\n    }\n  } while ((el = el.parentNode));\n\n  return null;\n};\n\nexport const minmax = (value, min, max) => {\n  if (parseInt(value) < min || isNaN(parseInt(value))) return min;\n  else if (parseInt(value) > max) return max;\n  else return value;\n};\n\nexport const setScrollTop = (offset = 0) => {\n  document.documentElement.scrollTop = document.body.scrollTop = offset;\n};\n\nexport const getSiblings = (elem) => {\n  const siblings = [];\n  let sibling = elem.parentNode.firstChild;\n  while (sibling) {\n    if (sibling.nodeType === 1) {\n      siblings.push(sibling);\n    }\n    sibling = sibling.nextSibling;\n  }\n  return siblings;\n};\n\nexport const capitalize = (string) => {\n  return string.charAt(0).toUpperCase() + string.toLowerCase().slice(1);\n};\n\nexport const isDarkMode = () => window.matchMedia('(prefers-color-scheme: light)').matches;\n\nexport const isDesktop = () => window.innerWidth >= 1024;\nexport const isLargeDesktop = () => window.innerWidth >= 1440;\nexport const isSmallDesktop = () => window.innerWidth >= 1024 && window.innerWidth < 1440;\nexport const isMobile = () => window.innerWidth <= 768;\nexport const isTablet = () => window.innerWidth <= 1024 && window.innerWidth > 768;\nexport const isIOS = (() => /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream)();\nexport const isIE11 = !!(\n  navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/)\n);\nexport const localLangVal = () => x0('html').lang;\n\nexport const horizontalScrollTo = (element, left, behavior = 'smooth') => document.querySelector(element).scrollTo({ left: left, behavior: behavior });\nexport const verticalScrollTo = (top) => window.scrollTo({ top: top, behavior: 'smooth' });\n\nexport const yieldToMain = () => {\n  return new Promise(resolve => {\n    setTimeout(resolve, 0);\n  });\n}\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","\nclass EventsHelper {\n  Trigger(eventName, data) {\n    const event = new CustomEvent(eventName, { detail: data });\n    document.dispatchEvent(event);\n  }\n\n  On(eventName, callback) {\n    if (!callback) { return; }\n    document.addEventListener(eventName, callback);\n  }\n\n  AjaxModuleLoaded() {\n    let event = new Event('ajax-module-loaded');\n    document.dispatchEvent(event);\n  }\n\n  OnAjaxModuleLoaded(callback) {\n    if (!callback) { return; }\n    document.addEventListener(\"ajax-module-loaded\", callback);\n  }\n\n  ReloadCarousels() {\n    let event = new Event('reload-carousels');\n    document.dispatchEvent(event);\n  }\n\n  OnReloadCarousels(callback) {\n    if (!callback) { return; }\n    document.addEventListener(\"reload-carousels\", callback);\n  }\n\n  BeforeMatchDay() {\n    let event = new Event('before-match-day');\n    document.dispatchEvent(event);\n  }\n\n  OnBeforeMatchDay(callback) {\n    if (!callback) { return; }\n    document.addEventListener(\"before-match-day\", callback);\n  }\n\n  AfterMatchDay() {\n    let event = new Event('after-match-day');\n    document.dispatchEvent(event);\n  }\n\n  OnAfterMatchDay(callback) {\n    if (!callback) { return; }\n    document.addEventListener(\"after-match-day\", callback);\n  }\n\n  GlobalScheduleWeeklyNavChange(fromDate, toDate) {\n    let event = new CustomEvent('gs-calendar-nav-date-changed', {\n      \"detail\": { \"fromDate\": fromDate, \"toDate\": toDate }\n    });\n    document.dispatchEvent(event);\n  }\n\n  OnGlobalScheduleWeeklyNavChange(callback) {\n    if (!callback) { return; }\n    document.addEventListener(\"gs-calendar-nav-date-changed\", callback);\n  }\n\n  ContentReload() {\n    let event = new Event('content-reload');\n    document.dispatchEvent(event);\n  }\n\n  OnContentReload(callback) {\n    if (!callback) { return; }\n    document.addEventListener(\"content-reload\", callback);\n  }\n}\n\nEventsHelper = new EventsHelper();\nexport default EventsHelper;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\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 `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\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 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\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 };","var arrayEach = require('./_arrayEach'),\n    baseEach = require('./_baseEach'),\n    castFunction = require('./_castFunction'),\n    isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n *   console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n  var func = isArray(collection) ? arrayEach : baseEach;\n  return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","var baseForOwn = require('./_baseForOwn'),\n    createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\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 * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\nmodule.exports = createBaseEach;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n  return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseDelay = require('./_baseDelay'),\n    baseRest = require('./_baseRest'),\n    toNumber = require('./toNumber');\n\n/**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n *   console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\nvar delay = baseRest(function(func, wait, args) {\n  return baseDelay(func, toNumber(wait) || 0, args);\n});\n\nmodule.exports = delay;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nmodule.exports = baseDelay;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let 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(`transition${step}`);\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n\n    swiper.emit(`slideChangeTransition${step}`);\n\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}","export default function classesToSelector(classes = '') {\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\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, params] = args;\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      const swipers = [];\n      $(params.el).each(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      }); // eslint-disable-next-line no-constructor-return\n\n      return swipers;\n    } // Swiper Instance\n\n\n    const 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    swiper.modules = [...swiper.__modules__];\n\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    }); // Extend defaults with modules params\n\n    const swiperParams = extend({}, defaults, allModulesParams); // 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(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    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\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        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\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    });\n    swiper.emit('_swiper'); // Init\n\n    if (swiper.params.init) {\n      swiper.init();\n    } // Return app instance\n    // eslint-disable-next-line no-constructor-return\n\n\n    return swiper;\n  }\n\n  enable() {\n    const 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  disable() {\n    const 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  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.each(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n\n      for (let 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 (let 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      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper; // 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      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n\n    let translated;\n\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\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  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const 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(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  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n    if (swiper.rtl) {\n      swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n\n    swiper.update();\n  }\n\n  mount(el) {\n    const swiper = this;\n    if (swiper.mounted) return true; // Find el\n\n    const $el = $(el || swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.swiper = swiper;\n\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n        res.children = options => $el.children(options);\n\n        return res;\n      }\n\n      if (!$el.children) {\n        return $($el).children(getWrapperSelector());\n      }\n\n      return $el.children(getWrapperSelector());\n    }; // Find Wrapper\n\n\n    let $wrapperEl = getWrapper();\n\n    if ($wrapperEl.length === 0 && swiper.params.createElements) {\n      const document = getDocument();\n      const wrapper = document.createElement('div');\n      $wrapperEl = $(wrapper);\n      wrapper.className = swiper.params.wrapperClass;\n      $el.append(wrapper);\n      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n        $wrapperEl.append(slideEl);\n      });\n    }\n\n    Object.assign(swiper, {\n      $el,\n      el,\n      $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  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const 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  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params,\n      $el,\n      $wrapperEl,\n      slides\n    } = swiper;\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(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  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n\n    Swiper.installModule(module);\n    return Swiper;\n  }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","module.exports = require('./forEach');\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\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  return obj;\n}","import Swiper from \"swiper/bundle\";\nimport { isMobile, isTablet } from \"./../_helpers\";\nimport EventsHelper from './../_helpers/events';\n\nexport const initBase = (el) => {\n    return new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.querySelector(\"[js-carousel-trigger-next]\"),\n        prevEl: el.querySelector(\"[js-carousel-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n  }\n\nexport const initMatches = (el) => {\n    return new Swiper(el, {\n      speed: 600,\n      freeMode: true,\n      slidesPerView: \"auto\",\n      initialSlide: el.getAttribute(\"js-carouel-initialslide\") || 0,\n      //loopedSlides: null,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.querySelector(\"[js-carousel-trigger-next]\"),\n        prevEl: el.querySelector(\"[js-carousel-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n  }\n\nexport const initVbtvRails = (el) => {\n    return new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      spaceBetween: 0,\n      slidesOffsetBefore: 10,\n      slidesOffsetAfter: 10,\n      observer: true,\n      observeParents: true,\n      loop: false,\n      a11y: {\n        slideRole: \"link\",\n      },\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: isMobile() ? el.querySelector(\"[js-carousel-trigger-next]\") : el.parentNode.parentNode.parentNode.querySelector(\"[video-rail-trigger-next]\"),\n        prevEl: isMobile() ? el.querySelector(\"[js-carousel-trigger-prev]\") : el.parentNode.parentNode.parentNode.querySelector(\"[video-rail-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n  }\n\nexport const initMatchesCalendar = (el) => {\n    return new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      slidesOffsetAfter: 60,\n      slidesOffsetBefore: 30,\n      spaceBetween: 16,\n      initialSlide: el.getAttribute(\"js-carouel-initialslide\") || 0,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.querySelector(\"[js-carousel-trigger-next]\"),\n        prevEl: el.querySelector(\"[js-carousel-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n  }\n\nexport const initGallery = (el) => {\n    return new Swiper(el, {\n      speed: 600,\n      slidesPerView: 1,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.querySelector(\"[js-carousel-trigger-next]\"),\n        prevEl: el.querySelector(\"[js-carousel-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n  }\n\nexport const initHero = (el) => {\n    return new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      loop: true,\n      threshold: isMobile() || isTablet() ? 5 : 10,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 6000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.querySelector(\"[js-carousel-trigger-next]\"),\n        prevEl: el.querySelector(\"[js-carousel-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n\n  }\n\nexport const initScheduleCalender = (el) => {\n    const swiper = new Swiper(el, {\n      speed: 600,\n      centeredSlides: true,\n      slidesPerView: isMobile() || isTablet() ? 3 : 5,\n      spaceBetween: 20,\n      observer: true,\n      observeParents: true,\n      initialSlide: el.getAttribute(\"js-carouel-initialslide\") || 0,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.parentNode.querySelector(\"[js-gs-dates-next]\"),\n        prevEl: el.parentNode.querySelector(\"[js-gs-dates-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n\n    swiper.on(\"reachBeginning\", function () {\n      EventsHelper.Trigger(\"schedule-dates-end\", { position: \"start\", swiper: swiper });\n    });\n\n    swiper.on(\"reachEnd\", function () {\n      EventsHelper.Trigger(\"schedule-dates-end\", { position: \"end\", swiper: swiper });\n    });\n\n    swiper.on(\"slideChangeTransitionEnd\", function () {\n      EventsHelper.Trigger(\"schedule-date-change\");\n    })\n    // click on the next arrow button\n    swiper.on(\"slideNextTransitionStart\", function (e) {\n      EventsHelper.Trigger(\"schedule-date-change-by-arrow\");\n    })\n    // click on the prev arrow button\n    swiper.on(\"slidePrevTransitionStart\", function (e) {\n      EventsHelper.Trigger(\"schedule-date-change-by-arrow\");\n    })\n\n    return swiper;\n  }\n\nexport const initCompetitionNav = (el) => {\n    const swiper = new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      spaceBetween: 0,\n      slidesOffsetAfter: window.innerWidth < 1024 ? 0 : 42,\n      slidesOffsetBefore: window.innerWidth < 1024 ? 0 : 42,\n      observer: true,\n      observeParents: true,\n      initialSlide: el.getAttribute(\"js-carouel-initialslide\") || 0,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.parentNode.querySelector(\"[js-gs-dates-next]\"),\n        prevEl: el.parentNode.querySelector(\"[js-gs-dates-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n      },\n    });\n\n    return swiper;\n  }\n\nexport const initPackagesNav = (el) => {\n    const swiper = new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      slidesOffsetBefore: 10,\n      slidesOffsetAfter: 10,\n      observer: true,\n      observeParents: true,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.querySelector(\"[js-carousel-trigger-next]\"),\n        prevEl: el.querySelector(\"[js-carousel-trigger-prev]\"),\n      },\n      pagination: {\n        el: el.querySelector(\"[js-carousel-pagination]\"),\n        type: el.hasAttribute(\"js-carousel-fraction-pagination\")\n          ? \"fraction\"\n          : \"bullets\",\n        clickable: true,\n      },\n      slideToClickedSlide: true,\n      observeSlideChildren: true\n    });\n\n    return swiper;\n  }\n\nexport const initGsFilters = (el) => {\n    const swiper = new Swiper(el, {\n      speed: 600,\n      slidesPerView: \"auto\",\n      freeMode: true,\n      observer: true,\n      observeParents: true,\n      spaceBetween: 4,\n      loop: false,\n      autoplay: el.hasAttribute(\"js-carousel-autoplay\")\n        ? {\n          delay: 4000,\n        }\n        : false,\n      navigation: {\n        nextEl: el.parentNode.querySelector(\"[js-filters-prev]\"),\n        prevEl: el.parentNode.querySelector(\"[js-filters-next]\"),\n      },\n      slideToClickedSlide: true,\n      observeSlideChildren: true\n    });\n    return swiper;\n  }\n","/**\n * Swiper 8.4.7\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 30, 2023\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Lazy from './modules/lazy/lazy.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n  userAgent\n} = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n  const 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 (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n\n  return {\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';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(({\n          contentBoxSize,\n          contentRect,\n          target\n        }) => {\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          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(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        emit('observerUpdate', mutations[0]);\n        return;\n      }\n\n      const observerUpdate = function observerUpdate() {\n        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    observers.push(observer);\n  };\n\n  const init = () => {\n    if (!swiper.params.observer) return;\n\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    } // Observe container\n\n\n    attach(swiper.$el[0], {\n      childList: swiper.params.observeSlideChildren\n    }); // Observe wrapper\n\n    attach(swiper.$wrapperEl[0], {\n      attributes: false\n    });\n  };\n\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n\n      handler.apply(self, args);\n    }\n\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((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\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\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    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n  const 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  const params = swiper.params;\n  const {\n    $wrapperEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let 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  }); // reset cssMode offsets\n\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n  }\n\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  } // Calc slides\n\n\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n\n      const slideStyles = getComputedStyle(slide[0]);\n      const currentTransform = slide[0].style.transform;\n      const 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        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide[0];\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\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    $wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  } // Remove last grid elements depending on width\n\n\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n      if (snapGrid[i] <= 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    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode) return true;\n\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n\n      return true;\n    }).css({\n      [key]: `${spaceBetween}px`\n    });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(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    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\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) {\n    swiper.updateSlidesOffset();\n  }\n\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.$el.removeClass(backFaceHiddenClass);\n    }\n  }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let 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  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[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(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const 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      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  } // Update Height\n\n\n  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate; // Visible Slides\n\n  slides.removeClass(params.slideVisibleClass);\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const 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    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  let slideIndex;\n\n  if (slide) {\n    for (let 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 getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    $wrapperEl\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let 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    const isH = swiper.isHorizontal();\n\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\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.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\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    const 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    const 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  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\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  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  } // Update progress\n\n\n  swiper.updateProgress(translate);\n  let 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    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._swiperImmediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\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 (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else 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  return true;\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let 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(() => {\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(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    $wrapperEl\n  } = swiper; // Remove duplicated slides\n\n  const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $selector.append(blankNode);\n      }\n\n      slides = $selector.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 && swiper.params.loopedSlidesLimit) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < swiper.loopedSlides; i += 1) {\n    const index = i - Math.floor(i / slides.length) * slides.length;\n    appendSlides.push(slides.eq(index)[0]);\n    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n  }\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\n};","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    touchEvents,\n    el,\n    wrapperEl,\n    device,\n    support\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method; // Touch Events\n\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n      passive: false,\n      capture\n    } : capture);\n    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n    }\n  } // Prevent Links Clicks\n\n\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  } // Resize handler\n\n\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    support\n  } = swiper;\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\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(swiper, 'on');\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n\n    return found || __closestFrom(el.getRootNode().host);\n  }\n\n  return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let $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  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    $targetEl = $(eventPath[0]);\n  }\n\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const 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, $targetEl[0]) : $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  const startX = touches.currentX;\n  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const 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  Object.assign(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    let preventDefault = true;\n\n    if ($targetEl.is(data.focusableElements)) {\n      preventDefault = false;\n\n      if ($targetEl[0].nodeName === 'SELECT') {\n        data.isTouched = false;\n      }\n    }\n\n    if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n      e.preventDefault();\n    }\n  }\n\n  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n\n  swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let 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  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const 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    if (!$(e.target).is(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n\n    if (data.isTouched) {\n      Object.assign(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  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let 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 && !params.cssMode) {\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  let 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  let disableParentSwiper = true;\n  let 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 + (-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 - (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.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  } // Update progress\n\n\n  swiper.updateProgress(data.currentTranslate); // Update translate\n\n  swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let 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  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\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(() => {\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  let 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 (swiper.params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  } // Find current slide\n\n\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const 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  }\n\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  } // Find current slide size\n\n\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const 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(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    const 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(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const {\n    activeIndex,\n    initialized,\n    loopedSlides = 0,\n    params,\n    $el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n\n    swiper.emitContainerClasses();\n  } // Toggle navigation, pagination, scrollbar\n\n\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(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 = 'window', containerEl) {\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\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}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n\n  function onReady() {\n    if (callback) callback();\n  }\n\n  const 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}","function checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default {\n  checkOverflow\n};","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\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  // 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  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\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: true,\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  // 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  loopedSlidesLimit: true,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n  // rewind\n  rewind: false,\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  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\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};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\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)) {\n      extend(allModulesParams, obj);\n      return;\n    }\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    extend(allModulesParams, obj);\n  };\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n\n    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  }\n\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n\n      emit('virtualUpdate');\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n\n          return slidesToRender;\n        }()\n      });\n\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n\n      return;\n    }\n\n    const prependIndexes = [];\n    const appendIndexes = [];\n\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n\n    appendIndexes.forEach(index => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach(index => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  }\n\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n\n    update(true);\n  }\n\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    swiper.virtual.slides = swiper.params.virtual.slides;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n    // Legacy\n\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    } // side scrolling on FF with DOMMouseScroll\n\n\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    } // Fall-back if spin cannot be determined\n\n\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    } // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n\n\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    } // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n\n\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    } // If you got here is because an animation has been triggered so store the current time\n\n\n    lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n    return false;\n  }\n\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n\n    return false;\n  }\n\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta; // Get the scroll positions\n\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      }; // Keep the most recent events\n\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      } // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n\n\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        } // Emit event\n\n\n        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n\n    if (swiper.mousewheel.enabled) return false;\n    events('on');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n\n    if (!swiper.mousewheel.enabled) return false;\n    events('off');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\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      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $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\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\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  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const 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      let 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        emit('navigationShow');\n      } else {\n        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  const enable = () => {\n    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n    init();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n    destroy();\n  };\n\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  }\n\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Object.assign(swiper.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    init();\n    render();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    if (!$el) return;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const $el = swiper.scrollbar.$el;\n\n    if ($el) {\n      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n\n    disableDraggable();\n  }\n\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n    if (swiper.scrollbar.$el) {\n      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n\n    init();\n    updateSize();\n    setTranslate();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n    if (swiper.scrollbar.$el) {\n      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n      setTransform(el, progress);\n    });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n        setTransform(el, slideProgress);\n      });\n    });\n  };\n\n  const setTransition = (duration = swiper.params.speed) => {\n    const {\n      $el\n    } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n      const $parallaxEl = $(parallaxEl);\n      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      $parallaxEl.transition(parallaxDuration);\n    });\n  };\n\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\n    $slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    $imageEl: undefined,\n    $imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n\n      scale = value;\n    }\n\n  });\n\n  function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  } // Events\n\n\n  function onGestureStart(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n\n    isScaling = true;\n  }\n\n  function onGestureChange(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    }\n\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function onGestureEnd(e) {\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n\n      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n        return;\n      }\n\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  }\n\n  function onTouchMove(e) {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n    } // Define if we need image drag\n\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    e.stopPropagation();\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    } // Velocity\n\n\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY; // Define if we need image drag\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      }\n\n      if (!gesture.$slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  } // Toggle Zoom\n\n\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = swiper.support;\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = support.passiveListener ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  function getSlideSelector() {\n    return `.${swiper.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const {\n      passiveListener\n    } = getListeners();\n    const slideSelector = getSlideSelector();\n    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  } // Attach/Detach Events\n\n\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = swiper.support;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader'\n    }\n  });\n  swiper.lazy = {};\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate = true) {\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images.push($slideEl[0]);\n    }\n\n    if ($images.length === 0) return;\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const {\n      $wrapperEl,\n      params: swiperParams,\n      slides,\n      activeIndex\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n    let slidesPerView = swiperParams.slidesPerView;\n\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n\n    if (swiper.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n        const amount = params.loadPrevNextAmount;\n        const spv = Math.ceil(slidesPerView);\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n        for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        } // Prev Slides\n\n\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!swiper || swiper.destroyed) return;\n    const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const swiperOffset = swiper.$el.offset();\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let inView = false;\n    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n    for (let i = 0; i < swiperCoord.length; i += 1) {\n      const point = swiperCoord[i];\n\n      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n        inView = true;\n      }\n    }\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n      swiper.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n        if (swiper.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const {\n      lazy,\n      cssMode,\n      watchSlidesProgress,\n      touchReleaseOnEdges,\n      resistanceRatio\n    } = swiper.params;\n\n    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n      load();\n    }\n  });\n  on('destroy', () => {\n    if (!swiper.$el) return;\n    swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n  });\n  Object.assign(swiper.lazy, {\n    load,\n    loadInSlide\n  });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n\n    }\n  });\n  swiper.controller = {\n    control: undefined\n  };\n\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n\n        return maxIndex;\n      };\n    }();\n\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n\n    return this;\n  } // xxx: for now i will just save one spline function to to\n\n\n  function getInterpolateFunction(c) {\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  }\n\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n\n      if (duration !== 0) {\n        c.transitionStart();\n\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n\n          c.transitionEnd();\n        });\n      }\n    }\n\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n\n  on('beforeInit', () => {\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\n\n  function getRandomNumber(size = 16) {\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n\n  function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n  }\n\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const $targetEl = $(e.target);\n\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.each(bulletEl => {\n      const $bulletEl = $(bulletEl);\n\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable($bulletEl);\n\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n        }\n      }\n\n      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n        $bulletEl.attr('aria-current', 'true');\n      } else {\n        $bulletEl.removeAttr('aria-current');\n      }\n    });\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n\n  const handlePointerDown = () => {\n    swiper.a11y.clicked = true;\n  };\n\n  const handlePointerUp = () => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n\n  const handleFocus = e => {\n    if (swiper.a11y.clicked) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n\n    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n  };\n\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    if (params.slideRole) {\n      addElRole($(swiper.slides), params.slideRole);\n    }\n\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n    if (params.slideLabelMessage) {\n      swiper.slides.each((slideEl, index) => {\n        const $slideEl = $(slideEl);\n        const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel($slideEl, ariaLabelMessage);\n      });\n    }\n  };\n\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.$el.append(liveRegion); // Container\n\n    const $containerEl = swiper.$el;\n\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    } // Wrapper\n\n\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live); // Slide\n\n    initSlides(); // Navigation\n\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    } // Tab focus\n\n\n    swiper.$el.on('focus', handleFocus, true);\n    swiper.$el.on('pointerdown', handlePointerDown, true);\n    swiper.$el.on('pointerup', handlePointerUp, true);\n  };\n\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    } // Tab focus\n\n\n    swiper.$el.off('focus', handleFocus, true);\n    swiper.$el.off('pointerdown', handlePointerDown, true);\n    swiper.$el.off('pointerup', handlePointerUp, true);\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n\n    const slide = swiper.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n\n    const currentState = window.history.state;\n\n    if (currentState && currentState.value === value) {\n      return;\n    }\n\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = slugify(slide.attr('data-history'));\n\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  const destroy = () => {\n    const window = getWindow();\n\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  };\n\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n      emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  let timeout;\n  swiper.autoplay = {\n    running: false,\n    paused: false\n  };\n  extendParams({\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\n  function run() {\n    if (!swiper.size) {\n      swiper.autoplay.running = false;\n      swiper.autoplay.paused = false;\n      return;\n    }\n\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let 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(timeout);\n    timeout = nextTick(() => {\n      let 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          emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n\n      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n\n  function stop() {\n    if (!swiper.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n\n    swiper.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n\n  function pause(speed) {\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    swiper.autoplay.paused = true;\n\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n\n  function onVisibilityChange() {\n    const document = getDocument();\n\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      pause();\n    }\n\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      run();\n      swiper.autoplay.paused = false;\n    }\n  }\n\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    swiper.autoplay.paused = false;\n\n    if (!swiper.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n\n  function onMouseEnter() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      emit('autoplayPause');\n      pause();\n    }\n\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n  }\n\n  function onMouseLeave() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      return;\n    }\n\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n    run();\n  }\n\n  function attachMouseEvents() {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.$el.on('mouseenter', onMouseEnter);\n      swiper.$el.on('mouseleave', onMouseLeave);\n    }\n  }\n\n  function detachMouseEvents() {\n    swiper.$el.off('mouseenter', onMouseEnter);\n    swiper.$el.off('mouseleave', onMouseLeave);\n  }\n\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      start();\n      const document = getDocument();\n      document.addEventListener('visibilitychange', onVisibilityChange);\n      attachMouseEvents();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.autoplay.running) {\n      if (internal || !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.pause(speed);\n      } else {\n        stop();\n      }\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.autoplay.running) {\n      if (swiper.params.autoplay.disableOnInteraction) {\n        stop();\n      } else {\n        pause();\n      }\n    }\n  });\n  on('touchEnd', () => {\n    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n      run();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n\n    if (swiper.autoplay.running) {\n      stop();\n    }\n\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  });\n  Object.assign(swiper.autoplay, {\n    pause,\n    run,\n    start,\n    stop\n  });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let 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      let 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      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const 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\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n    let thumbsToActivate = 1;\n    const 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 (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let 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        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const 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    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n  swiper,\n  extendParams,\n  emit,\n  once\n}) {\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n\n  function onTouchStart() {\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n\n  function onTouchMove() {\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper; // Velocity\n\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  }\n\n  function onTouchEnd({\n    currentPos\n  }) {\n    const {\n      params,\n      $wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper; // Time diff\n\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\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.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\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.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\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.freeMode.momentumBounce) {\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.freeMode.sticky) {\n        let nextSlide;\n\n        for (let 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        once('transitionEnd', () => {\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.freeMode.sticky) {\n          // If freeMode.sticky 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          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const 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.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && 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(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\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(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n    if (shadowBefore.length === 0) {\n      shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n      $slideEl.append(shadowBefore);\n    }\n\n    if (shadowAfter.length === 0) {\n      shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n      $slideEl.append(shadowAfter);\n    }\n\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n  };\n\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.each(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows($(slideEl), progress, isHorizontal);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n\n        $cubeShadowEl.css({\n          height: `${swiperWidth}px`\n        });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n\n      $slideEl.transform(transform);\n\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, isHorizontal);\n      }\n    }\n\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n\n  const setTransition = duration => {\n    const {\n      $el,\n      slides\n    } = swiper;\n    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, params) => {\n    let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n    if (shadowBefore.length === 0) {\n      shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n\n    if (shadowAfter.length === 0) {\n      shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n  };\n\n  const recreateShadows = () => {\n    // Set shadows\n    const params = swiper.params.flipEffect;\n    swiper.slides.each(slideEl => {\n      const $slideEl = $(slideEl);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n\n      createSlideShadows($slideEl, progress, params);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, params);\n      }\n\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.flipEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth; // Each slide offset from center\n\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n        }\n\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.coverflowEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n  };\n\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    creativeEffect: {\n      transformEl: null,\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      $wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      } // set translate\n\n\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      }); // set rotates\n\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n      if (custom && data.shadow || !custom) {\n        let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0 && data.shadow) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform).css({\n        opacity: opacityString\n      });\n\n      if (data.origin) {\n        $targetEl.css('transform-origin', data.origin);\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.creativeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = swiper.translate;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = $slideEl[0].swiperSlideOffset;\n\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n      }\n\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rotate : 0}deg)\n        scale(${scaleString})\n      `;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.cardsEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}","export default function _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 * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    if (typeof items === 'number') {\n      super(items);\n    } else {\n      super(...(items || []));\n      makeReactive(this);\n    }\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...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  const uniqueArray = [];\n\n  for (let 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, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let 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    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 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 (let 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 (const 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 (let 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 (let 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 (const 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  let 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    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let 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 (let i = 0; i < this.length; i += 1) {\n    const 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  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const 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 (const 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    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let 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 (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let 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 (let 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 (let 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(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const 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      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let 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    const 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  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          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        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\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 (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const 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(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\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(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionStart(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionstart', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionstart', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const 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  const 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  const 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      const styles = this.styles();\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  const 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      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.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    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const 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 (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const 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  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let 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 (const 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((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const 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 (let 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 (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let 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  let child = this[0];\n  let 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  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const 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 (let 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  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const 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  const before = $(selector);\n\n  for (let 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 (let 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  const after = $(selector);\n\n  for (let 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 (let 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  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const 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    const 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  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const 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  const parents = []; // eslint-disable-line\n\n  for (let 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  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let 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  let 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  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let 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 (let 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(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const 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 (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let 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\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let 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    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let 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(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const 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(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const 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\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const 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\n    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\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(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,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let 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(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(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            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const 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\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let 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  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let 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(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst 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, transitionStart, trigger, val, value, width };\n","export default function updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const $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  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}","export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}","export default function updateProgress(translate) {\n  const swiper = this;\n\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const 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  Object.assign(swiper, {\n    progress,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || 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  const swiper = this;\n  const {\n    slides,\n    params,\n    $wrapperEl,\n    activeIndex,\n    realIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n  let 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  let 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  let 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}","export default function updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n\n  if (typeof activeIndex === 'undefined') {\n    for (let 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    const 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  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n  Object.assign(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    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}","export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    $wrapperEl,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const 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  let newProgress;\n  const 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 setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const 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    const 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  const swiper = this;\n  let 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 = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    animating,\n    enabled,\n    params\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\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  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    animating,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled\n  } = swiper;\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  const 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  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n\n  let prevIndex = 0;\n\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const 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    const currentSnap = swiper.snapGrid[snapIndex];\n    const 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    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const 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}","export default function loopFix() {\n  const swiper = this;\n  swiper.emit('beforeLoopFix');\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const 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    const 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  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    slides\n  } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}","export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n  const swiper = this;\n\n  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","export default function onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return; // Breakpoints\n\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  } // Save locks\n\n\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper; // 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 onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\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  let newProgress;\n  const 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}","export default function onClick(e) {\n  const 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}","function prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(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  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    $el,\n    device,\n    support\n  } = swiper; // prettier-ignore\n\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'pointer-events': !support.touch\n  }, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  $el.addClass([...classNames].join(' '));\n  swiper.emitContainerClasses();\n}","export default function removeClasses() {\n  const swiper = this;\n  const {\n    $el,\n    classNames\n  } = swiper;\n  $el.removeClass(classNames.join(' '));\n  swiper.emitContainerClasses();\n}","export default function preloadImages() {\n  const 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 (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const 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}","export default function Grid({\n  swiper,\n  extendParams\n}) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup,\n      spaceBetween\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid; // Set slides order\n\n    let newSlideOrderIndex;\n    let column;\n    let row;\n\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n\n        if (row >= rows) {\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 ? spaceBetween && `${spaceBetween}px` : '');\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      spaceBetween,\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n    });\n\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\n      const newSlidesGrid = [];\n\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n  swiper\n}) {\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}","export default function appendSlide(slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let 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) {\n    swiper.update();\n  }\n}","export default function prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  let newActiveIndex = activeIndex + 1;\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let 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) {\n    swiper.update();\n  }\n\n  swiper.slideTo(newActiveIndex, 0, false);\n}","export default function addSlide(index, slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  const 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  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let 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 (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.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  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let 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) {\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  const swiper = this;\n  const slidesIndexes = [];\n\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n\n  swiper.removeSlide(slidesIndexes);\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    fadeEffect: {\n      crossFade: false,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const 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      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.css({\n        opacity: slideOpacity\n      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.fadeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}","export const onFilterElemClick = ($elem, _this, text = $elem.text()) => {\n  const $parent = $elem.parents(\".vbw-filters--container\");\n  const filterId = $parent.find(\".filters-dropdown\").attr(\"id\");\n  const filterHeader = $elem\n    .parent()\n    .parent()\n    .find(\"#\" + filterId + \"-text\", \"#\" + filterId + \"-text-mobile\");\n  _this.filters[filterId] = $elem.attr(\"value\");\n  filterHeader.text(text);\n\n  $elem.siblings().removeClass(\"active\");\n  $elem.addClass(\"active\");\n  $elem.parents(\".vbw-filters--container\").addClass(\"filter-active\");\n\n  $(\".vbw-filters--container\").each(function () {\n    $(this).removeClass(\"active\");\n  });\n};\n\nexport const clearFilterDesktop = ($elem, _this) => {\n  const $parent = $elem.parents(\".vbw-filters--container\");\n  const filterId = $parent.find(\".filters-dropdown\").attr(\"id\");\n\n  $parent.removeClass(\"active\");\n  $parent.removeClass(\"filter-active\");\n  $parent\n    .find(\".filters-dropdown-head-text\")\n    .text(\n      $parent.find(\".filters-dropdown-head-text\").attr(\"data-original-text\")\n    );\n  $parent.find(\".dropdown-li\").removeClass(\"active\");\n  _this.filters[filterId] = undefined;\n\n  _this.applyFilters();\n  //condition for global schedule filters\n  if (_this.applyCompetitionFilters !== undefined)\n    _this.applyCompetitionFilters()\n};\n\nexport const resetFilterMobile = ($elem, _this) => {\n  $elem.find(\".filters-dropdown-head-text\").each(function () {\n    $(this).text($(this).attr(\"data-original-text\"));\n    $(this).removeClass(\"active\");\n  });\n\n  $elem.find(\".dropdown-li\").each(function () {\n    $(this).removeClass(\"active\");\n  });\n  _this.filters = {};\n};\n\nexport const onFilterHeadClick = ($elem, _this) => {\n  if ($elem.parent().hasClass(\"active\")) {\n    $elem.parent().removeClass(\"active\");\n  } else {\n    $(\".vbw-filters--container\").each(function () {\n      $(this).removeClass(\"active\");\n    });\n    $elem.parent().addClass(\"active\");\n  }\n};\n\nexport const closeAllDropdowns = () => {\n  $(\".vbw-filters--container\").each(function () {\n    $(this).removeClass(\"active\");\n  });\n};\n\nexport const onSearchInputChange = ($elem, _this) => {\n  const searchText = $elem.val();\n  if (searchText.length > 0) {\n    _this.filters[\"filters-searchBox\"] = searchText;\n    _this.applyFilters();\n  } else {\n    _this.filters[\"filters-searchBox\"] = undefined;\n    _this.applyFilters();\n  }\n};\n\nexport const sortAlphabetically = (items) => {\n  return items.sort((a, b) => {\n    if (a < b) {\n      return -1;\n    }\n    if (a > b) {\n      return 1;\n    }\n    return 0;\n  });\n};\n\nexport const updateFilterCounter = (count) => {\n  if (count == 0) {\n    $(\".vbw-competitions-filters--icon\")\n      .find(\".vbw-filter-active-count\")\n      .hide();\n  } else {\n    $(\".vbw-competitions-filters--icon\")\n      .find(\".vbw-filter-active-count\")\n      .show()\n      .text(count);\n  }\n};\n","/*\n * fitty v2.3.0 - Snugly resizes text to fit its parent container\n * Copyright (c) 2020 Rik Schennink <rik@pqina.nl> (https://pqina.nl/)\n */\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; };\n\nexports.default = function (w) {\n\n  // no window, early exit\n  if (!w) return;\n\n  // node list to array helper method\n  var toArray = function toArray(nl) {\n    return [].slice.call(nl);\n  };\n\n  // states\n  var DrawState = {\n    IDLE: 0,\n    DIRTY_CONTENT: 1,\n    DIRTY_LAYOUT: 2,\n    DIRTY: 3\n  };\n\n  // all active fitty elements\n  var fitties = [];\n\n  // group all redraw calls till next frame, we cancel each frame request when a new one comes in. If no support for request animation frame, this is an empty function and supports for fitty stops.\n  var redrawFrame = null;\n  var requestRedraw = 'requestAnimationFrame' in w ? function () {\n    w.cancelAnimationFrame(redrawFrame);\n    redrawFrame = w.requestAnimationFrame(function () {\n      return redraw(fitties.filter(function (f) {\n        return f.dirty && f.active;\n      }));\n    });\n  } : function () {};\n\n  // sets all fitties to dirty so they are redrawn on the next redraw loop, then calls redraw\n  var redrawAll = function redrawAll(type) {\n    return function () {\n      fitties.forEach(function (f) {\n        return f.dirty = type;\n      });\n      requestRedraw();\n    };\n  };\n\n  // redraws fitties so they nicely fit their parent container\n  var redraw = function redraw(fitties) {\n\n    // getting info from the DOM at this point should not trigger a reflow, let's gather as much intel as possible before triggering a reflow\n\n    // check if styles of all fitties have been computed\n    fitties.filter(function (f) {\n      return !f.styleComputed;\n    }).forEach(function (f) {\n      f.styleComputed = computeStyle(f);\n    });\n\n    // restyle elements that require pre-styling, this triggers a reflow, please try to prevent by adding CSS rules (see docs)\n    fitties.filter(shouldPreStyle).forEach(applyStyle);\n\n    // we now determine which fitties should be redrawn\n    var fittiesToRedraw = fitties.filter(shouldRedraw);\n\n    // we calculate final styles for these fitties\n    fittiesToRedraw.forEach(calculateStyles);\n\n    // now we apply the calculated styles from our previous loop\n    fittiesToRedraw.forEach(function (f) {\n      applyStyle(f);\n      markAsClean(f);\n    });\n\n    // now we dispatch events for all restyled fitties\n    fittiesToRedraw.forEach(dispatchFitEvent);\n  };\n\n  var markAsClean = function markAsClean(f) {\n    return f.dirty = DrawState.IDLE;\n  };\n\n  var calculateStyles = function calculateStyles(f) {\n\n    // get available width from parent node\n    f.availableWidth = f.element.parentNode.clientWidth;\n\n    // the space our target element uses\n    f.currentWidth = f.element.scrollWidth;\n\n    // remember current font size\n    f.previousFontSize = f.currentFontSize;\n\n    // let's calculate the new font size\n    f.currentFontSize = Math.min(Math.max(f.minSize, f.availableWidth / f.currentWidth * f.previousFontSize), f.maxSize);\n\n    // if allows wrapping, only wrap when at minimum font size (otherwise would break container)\n    f.whiteSpace = f.multiLine && f.currentFontSize === f.minSize ? 'normal' : 'nowrap';\n  };\n\n  // should always redraw if is not dirty layout, if is dirty layout, only redraw if size has changed\n  var shouldRedraw = function shouldRedraw(f) {\n    return f.dirty !== DrawState.DIRTY_LAYOUT || f.dirty === DrawState.DIRTY_LAYOUT && f.element.parentNode.clientWidth !== f.availableWidth;\n  };\n\n  // every fitty element is tested for invalid styles\n  var computeStyle = function computeStyle(f) {\n\n    // get style properties\n    var style = w.getComputedStyle(f.element, null);\n\n    // get current font size in pixels (if we already calculated it, use the calculated version)\n    f.currentFontSize = parseInt(style.getPropertyValue('font-size'), 10);\n\n    // get display type and wrap mode\n    f.display = style.getPropertyValue('display');\n    f.whiteSpace = style.getPropertyValue('white-space');\n  };\n\n  // determines if this fitty requires initial styling, can be prevented by applying correct styles through CSS\n  var shouldPreStyle = function shouldPreStyle(f) {\n\n    var preStyle = false;\n\n    // if we already tested for prestyling we don't have to do it again\n    if (f.preStyleTestCompleted) return false;\n\n    // should have an inline style, if not, apply\n    if (!/inline-/.test(f.display)) {\n      preStyle = true;\n      f.display = 'inline-block';\n    }\n\n    // to correctly calculate dimensions the element should have whiteSpace set to nowrap\n    if (f.whiteSpace !== 'nowrap') {\n      preStyle = true;\n      f.whiteSpace = 'nowrap';\n    }\n\n    // we don't have to do this twice\n    f.preStyleTestCompleted = true;\n\n    return preStyle;\n  };\n\n  // apply styles to single fitty\n  var applyStyle = function applyStyle(f) {\n\n    // remember original style, we need this to restore the fitty style when unsubscribing\n    if (!f.originalStyle) f.originalStyle = f.element.getAttribute('style') || '';\n\n    // set the new style to the original style plus the fitty styles\n    f.element.style.cssText = f.originalStyle + ';white-space:' + f.whiteSpace + ';display:' + f.display + ';font-size:' + f.currentFontSize + 'px';\n  };\n\n  // dispatch a fit event on a fitty\n  var dispatchFitEvent = function dispatchFitEvent(f) {\n    f.element.dispatchEvent(new CustomEvent('fit', {\n      detail: {\n        oldValue: f.previousFontSize,\n        newValue: f.currentFontSize,\n        scaleFactor: f.currentFontSize / f.previousFontSize\n      }\n    }));\n  };\n\n  // fit method, marks the fitty as dirty and requests a redraw (this will also redraw any other fitty marked as dirty)\n  var fit = function fit(f, type) {\n    return function () {\n      f.dirty = type;\n      if (!f.active) return;\n      requestRedraw();\n    };\n  };\n\n  var init = function init(f) {\n\n    // should we observe DOM mutations\n    observeMutations(f);\n\n    // this is a new fitty so we need to validate if it's styles are in order\n    f.newbie = true;\n\n    // because it's a new fitty it should also be dirty, we want it to redraw on the first loop\n    f.dirty = true;\n\n    // we want to be able to update this fitty\n    fitties.push(f);\n  };\n\n  var destroy = function destroy(f) {\n    return function () {\n\n      // remove from fitties array\n      fitties = fitties.filter(function (_) {\n        return _.element !== f.element;\n      });\n\n      // stop observing DOM\n      if (f.observeMutations) f.observer.disconnect();\n\n      // reset font size to inherited size\n      f.element.style.cssText = f.originalStyle;\n    };\n  };\n\n  // add a new fitty, does not redraw said fitty\n  var subscribe = function subscribe(f) {\n    return function () {\n      if (f.active) return;\n      f.active = true;\n      requestRedraw();\n    };\n  };\n\n  // remove an existing fitty\n  var unsubscribe = function unsubscribe(f) {\n    return function () {\n      return f.active = false;\n    };\n  };\n\n  var observeMutations = function observeMutations(f) {\n\n    // no observing?\n    if (!f.observeMutations) return;\n\n    // start observing mutations\n    f.observer = new MutationObserver(fit(f, DrawState.DIRTY_CONTENT));\n\n    // start observing\n    f.observer.observe(f.element, f.observeMutations);\n  };\n\n  // default mutation observer settings\n  var mutationObserverDefaultSetting = {\n    subtree: true,\n    childList: true,\n    characterData: true\n  };\n\n  // default fitty options\n  var defaultOptions = {\n    minSize: 16,\n    maxSize: 512,\n    multiLine: true,\n    observeMutations: 'MutationObserver' in w ? mutationObserverDefaultSetting : false\n  };\n\n  // array of elements in, fitty instances out\n  function fittyCreate(elements, options) {\n\n    // set options object\n    var fittyOptions = _extends({}, defaultOptions, options);\n\n    // create fitties\n    var publicFitties = elements.map(function (element) {\n\n      // create fitty instance\n      var f = _extends({}, fittyOptions, {\n\n        // internal options for this fitty\n        element: element,\n        active: true\n      });\n\n      // initialise this fitty\n      init(f);\n\n      // expose API\n      return {\n        element: element,\n        fit: fit(f, DrawState.DIRTY),\n        unfreeze: subscribe(f),\n        freeze: unsubscribe(f),\n        unsubscribe: destroy(f)\n      };\n    });\n\n    // call redraw on newly initiated fitties\n    requestRedraw();\n\n    // expose fitties\n    return publicFitties;\n  }\n\n  // fitty creation function\n  function fitty(target) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\n    // if target is a string\n    return typeof target === 'string' ?\n\n    // treat it as a querySelector\n    fittyCreate(toArray(document.querySelectorAll(target)), options) :\n\n    // create single fitty\n    fittyCreate([target], options)[0];\n  }\n\n  // handles viewport changes, redraws all fitties, but only does so after a timeout\n  var resizeDebounce = null;\n  var onWindowResized = function onWindowResized() {\n    w.clearTimeout(resizeDebounce);\n    resizeDebounce = w.setTimeout(redrawAll(DrawState.DIRTY_LAYOUT), fitty.observeWindowDelay);\n  };\n\n  // define observe window property, so when we set it to true or false events are automatically added and removed\n  var events = ['resize', 'orientationchange'];\n  Object.defineProperty(fitty, 'observeWindow', {\n    set: function set(enabled) {\n      var method = (enabled ? 'add' : 'remove') + 'EventListener';\n      events.forEach(function (e) {\n        w[method](e, onWindowResized);\n      });\n    }\n  });\n\n  // fitty global properties (by setting observeWindow to true the events above get added)\n  fitty.observeWindow = true;\n  fitty.observeWindowDelay = 100;\n\n  // public fit all method, will force redraw no matter what\n  fitty.fitAll = redrawAll(DrawState.DIRTY);\n\n  // export our fitty function, we don't want to keep it to our selves\n  return fitty;\n}(typeof window === 'undefined' ? null : window);","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + ({\"1\":\"plugins/packages\",\"3\":\"plugins/articles-list\",\"4\":\"plugins/brackets\",\"5\":\"plugins/brackets-helper\",\"6\":\"plugins/hamburger-multi-menu\",\"7\":\"plugins/header-megamenu\",\"8\":\"plugins/language-switcher\",\"9\":\"plugins/match-strip\",\"10\":\"plugins/nav-countdown\",\"11\":\"plugins/overlay-jwplayer\",\"12\":\"plugins/overlay-promo\",\"13\":\"plugins/popup\",\"14\":\"plugins/popup-module\",\"15\":\"plugins/readmore\",\"16\":\"plugins/schedule-sort\",\"17\":\"plugins/table-helper\",\"18\":\"plugins/vbtv-engine\",\"19\":\"plugins/volley-station-widget\",\"20\":\"plugins/world-ranking-hp\"}[chunkId] || chunkId) + \".\" + {\"0\":\"687df1dc58e0a4c6bd9a\",\"1\":\"d5aadf334f3f4d95fb44\",\"2\":\"b27fb8c3f3fefd4e2542\",\"3\":\"c6664c8ae94de25695a4\",\"4\":\"1b5e17d4d0d79f2e204f\",\"5\":\"2dfc6e853c90d658380b\",\"6\":\"bff058f414edc06097ee\",\"7\":\"e1054bc8ec1a511c867c\",\"8\":\"697901e453380da641fd\",\"9\":\"f18f3f391aef5f0e639f\",\"10\":\"806b24cafc7575c5b61b\",\"11\":\"e38b7e15e77ba24dbe13\",\"12\":\"ef018715448107979e0d\",\"13\":\"f27ea5a97bbd657ae62e\",\"14\":\"efe9dcbfe819b4bb62eb\",\"15\":\"26cdd51589aaabf7db0a\",\"16\":\"9d78ae9f1dde77cb4cda\",\"17\":\"64acaa1e6d9e3714bd34\",\"18\":\"b8a9add7b09d073bc946\",\"19\":\"6964a72917f7df17dcc5\",\"20\":\"168f9c1fe75246e2f7d2\",\"68\":\"0593256943336b71c18b\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/assets/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t62: 0,\n\t60: 0,\n\t0: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_template_frontend\"] = self[\"webpackChunk_template_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default class CookieHelper {\n  $dates = {};\n\n  set(name, value, secondsToExp, path) {\n    let ex = '';\n\n    secondsToExp = secondsToExp || 3600;\n\n    const d = new Date();\n    d.setTime(d.getTime() + 1000 * parseFloat(secondsToExp));\n    ex = '; expires=' + d.toGMTString();\n\n    let cookieDomain = 'deltatre.digital';\n\n\n    if (document.location.href.indexOf('localhost') != -1) {\n      cookieDomain = 'localhost';\n    }\n\n    if (path) {\n      if (path != '.') ex += '; path=' + path;\n    } else {\n      ex += '; path=/';\n    }\n    if (cookieDomain && cookieDomain != '')\n      ex += ';domain=' + cookieDomain;\n    return (document.cookie = escape(name) + '=' + (value || '') + ex);\n  }\n\n  get(name) {\n    const c = document.cookie.match(new RegExp('(^|;)\\\\s*' + escape(name) + '=([^;]*)'));\n    return c ? c[2] : null;\n  }\n\n  erase(name, path) {\n    const _this = this;\n    _this.set(name, '', -1, path);\n  }\n}\n\nwindow.CookieHelper = new CookieHelper();\n","import CookieHelper from './cookies';\n\nexport default class SegmentHelper {\n\n  cookies = new CookieHelper();\n  userObj = {};\n\n  constructor() {\n    let _this = this;\n    _this.loadSegmentScript();\n  }\n\n  loadSegmentScript() {\n    let _this = this;\n\n    let analytics = window.analytics = window.analytics || []; if (!analytics.initialize) if (analytics.invoked) window.console && console.error && console.error(\"Segment snippet included twice.\"); else {\n      analytics.invoked = !0; analytics.methods = [\"trackSubmit\", \"trackClick\", \"trackLink\", \"trackForm\", \"pageview\", \"identify\", \"reset\", \"group\", \"track\", \"ready\", \"alias\", \"debug\", \"page\", \"once\", \"off\", \"on\", \"addSourceMiddleware\", \"addIntegrationMiddleware\", \"setAnonymousId\", \"addDestinationMiddleware\"]; analytics.factory = function (e) { return function () { const t = Array.prototype.slice.call(arguments); t.unshift(e); analytics.push(t); return analytics } }; for (let e = 0; e < analytics.methods.length; e++) { const key = analytics.methods[e]; analytics[key] = analytics.factory(key) } analytics.load = function (key, e) { const t = document.createElement(\"script\"); t.type = \"text/javascript\"; t.async = !0; t.src = \"https://cdn.segment.com/analytics.js/v1/\" + key + \"/analytics.min.js\"; const n = document.getElementsByTagName(\"script\")[0]; n.parentNode.insertBefore(t, n); analytics._loadOptions = e }; analytics._writeKey = \"write key redacted\"; analytics.SNIPPET_VERSION = \"4.13.2\";\n\n      let search = window.location.search;\n      let referrer = document.referrer;\n\n      if (_this.cookies.get(\"azureb2c_oid\") && (referrer.indexOf('b2clogin') !== -1)) {\n        analytics.load(window._sgmtk);\n        analytics.page();\n\n        if (!search) { return; }\n\n        if (search.indexOf('login=sign-in') !== -1) {\n          _this.loadUser('sign-in', function () {\n            analytics.identify(_this.userObj.id, _this.userObj);\n            analytics.track('Signed In', _this.userObj);\n\n          });\n        } else if (search.indexOf('sign-up', 'login=sign-up') !== -1) {\n          _this.loadUser('sign-up', function () {\n            analytics.identify(_this.userObj.id, _this.userObj);\n            analytics.track('Signed Up', _this.userObj);\n          });\n        } else if (search.indexOf('login=edit-profile') !== -1) {\n          _this.loadUser('edit-profile', function () {\n            analytics.identify(_this.userObj.id, _this.userObj);\n            analytics.track('Profile Updated', _this.userObj);\n          });\n        }\n      }\n\n    }\n  }\n\n  loadUser(eventtype, callback) {\n    let _this = this;\n    let country3l = _this.cookies.get(\"azureb2c_extension_FavoriteTeam\");\n\n    if (country3l) {\n      $.ajax({\n        url: '/mobileapp/v1/countries-list',\n      }).done(function (data) {\n\n        if (!data) {\n          console.warn('Cannot get country list for 2letters ISO');\n          return;\n        }\n\n        let country2l = [];\n        let cntrs = country3l.split(',');\n\n        for (let i = 0; i < cntrs.length; i++) {\n          let c2l = data.filter(c => c['alpha-3'] === cntrs[i]);\n          if (c2l.length) {\n            country2l.push(c2l[0]['alpha-2']);\n          }\n        }\n\n        _this.mapUserObjectFromCookies(eventtype, country2l?.join(','));\n        if (callback) {\n          callback();\n        }\n      });\n    } else {\n      _this.mapUserObjectFromCookies(eventtype);\n      if (callback) {\n        callback();\n      }\n    }\n  }\n\n  mapUserObjectFromCookies(eventtype, country2l) {\n    let _this = this;\n\n    _this.userObj.id = _this.cookies.get(\"azureb2c_oid\") || 0;\n\n\n    if (_this.cookies.get(\"azureb2c_name\")) {\n      _this.userObj.firstName = _this.sanitize(_this.cookies.get(\"azureb2c_name\"));\n    }\n\n    if (_this.cookies.get(\"azureb2c_emails\")) {\n      _this.userObj.email = _this.sanitize(_this.cookies.get(\"azureb2c_emails\"));\n    }\n\n    if (_this.cookies.get(\"azureb2c_country\")) {\n      _this.userObj.country = _this.sanitize(_this.cookies.get(\"azureb2c_country\"));\n    }\n\n    if (_this.cookies.get(\"azureb2c_extension_DateOfBirth\")) {\n      _this.userObj.birthday = _this.cookies.get(\"azureb2c_extension_DateOfBirth\");\n    }\n\n    if (_this.cookies.get(\"azureb2c_extension_PrivacyPolicy\")) {\n      _this.userObj.agreedToPrivacyPolicy = (_this.cookies.get(\"azureb2c_extension_PrivacyPolicy\").toString().toLowerCase() === 'true');\n    }\n\n    if (_this.cookies.get(\"azureb2c_extension_TermsOfUse\")) {\n      _this.userObj.agreedToTermsAndConditions = (_this.cookies.get(\"azureb2c_extension_TermsOfUse\").toString().toLowerCase() === 'true');\n    }\n\n    if (country2l) {\n      _this.userObj.favoriteCountryTeams = country2l\n    }\n\n    if (_this.cookies.get(\"azureb2c_extension_FavoriteDiscipline\")) {\n      _this.userObj.favoriteDisciplines = unescape(_this.cookies.get(\"azureb2c_extension_FavoriteDiscipline\"));\n    }\n\n    if (_this.cookies.get(\"azureb2c_extension_FavoritePlayer\")) {\n      _this.userObj.favoritePlayers = unescape(_this.cookies.get(\"azureb2c_extension_FavoritePlayer\"));\n    }\n\n    if (_this.cookies.get(\"azureb2c_surname\")) {\n      _this.userObj.lastName = unescape(_this.sanitize(_this.cookies.get(\"azureb2c_surname\")));\n    }\n\n    if (_this.cookies.get(\"azureb2c_extension_NewsLetter\") && eventtype === 'sign-up') {\n      _this.userObj.appResidentMarketingAllowed = (_this.cookies.get(\"azureb2c_extension_NewsLetter\").toString().toLowerCase() === 'true');\n    }\n\n    if (_this.cookies.get(\"azureb2c_country\")) {\n      _this.userObj.billingCountryCode = _this.sanitize(_this.cookies.get(\"azureb2c_country\"));\n    }\n\n    window.segmentProperties = _this.userObj;\n  }\n\n  sanitize(source) {\n\n    return unescape(decodeURI(source));\n\n  }\n\n}\n","import { each } from 'lodash';\nimport { x, x0, isMobile } from '../../../_helpers';\n\nexport default class Header {\n  constructor() {\n    this.el = x0('.fo-header');\n    if (!this.el) return;\n    this.init();\n  }\n\n  toggleMenu(e) {\n    e.preventDefault();\n    // to defer all other work until at least the next frame by queuing a task in a `requestAnimationFrame()` callback.\n    requestAnimationFrame(() => {\n      setTimeout(() => {\n        document.body.classList.toggle('-menu-open');\n      }, 0);\n    });\n  }\n\n  onMenuLinkClick(el, evt) {\n    if (!el.nextElementSibling) {\n      return;\n    }\n    evt && evt.preventDefault();\n    this.activeItem = el.nextElementSibling;\n    this.activeItem.classList.add('-active');\n    this.menuSlider.classList.add('-active');\n  }\n\n  onMenuBackLinkClick(el) {\n    this.activeItem.classList.remove('-active');\n    this.menuSlider.classList.remove('-active');\n    this.activeItem = null;\n  }\n\n  attachEvents() {\n    //open menu\n    if (this.menuBtn) {\n      this.menuBtn.addEventListener('click', this.toggleMenu.bind(this));\n    }\n\n    //slide in\n    each(this.menuLinks, (link) => {\n      link.addEventListener('click', (e) => {\n        requestAnimationFrame(() => {\n          setTimeout(() => {\n            if (isMobile()) {\n              this.onMenuLinkClick(link, e);\n            }\n          }, 0);\n        });\n      });\n    });\n\n    //slide back\n    each(this.menuSublinkTitle, (link) => {\n      link.addEventListener('click', (e) => {\n        requestAnimationFrame(() => {\n          setTimeout(() => {\n            if (isMobile()) {\n              e.preventDefault();\n              this.onMenuBackLinkClick(link);\n            }\n          }, 0);\n        });\n      });\n    });\n\n    window.addEventListener('resize', () => {\n      requestAnimationFrame(() => {\n        setTimeout(() => {\n          document.body.classList.add('-resize');\n          clearTimeout(this.resizeTimeout);\n          this.resizeTimeout = setTimeout(() => {\n            document.body.classList.remove('-resize');\n          }, 500);\n        }, 0);\n      });\n    });\n  }\n\n  init() {\n    this.menuBtn = x0('[js-menu-btn]', this.el);\n    this.menuLinks = x('[js-menu-link]', this.el);\n    this.menuSublinkTitle = x('[js-menu-sublink]', this.el);\n    this.menuSlider = x0('[js-menu-slider]', this.el);\n\n    this.attachEvents();\n  }\n}\n","import { each } from 'lodash';\nimport { initGallery, initHero, initMatches, initMatchesCalendar, initVbtvRails, initBase } from '../_helpers/swiperHelper';\nimport { x, isDesktop } from '../_helpers';\nimport EventsHelper from '../_helpers/events';\n\nexport default class Carousels {\n  list = {};\n  isDesktop = isDesktop();\n\n  constructor() {\n    const _this = this;\n    _this.init();\n\n    EventsHelper.OnAjaxModuleLoaded(function () {\n      window.setTimeout(function () {\n        _this.init();\n      }, 1000);\n    });\n\n    EventsHelper.OnReloadCarousels(function () {\n      _this.init();\n    });\n  }\n\n  initCarousel(el) {\n    const _this = this;\n\n    if (el.hasAttribute('js-carousel-gallery')) {\n      const carousel = initGallery(el);\n      _this.list[el.id || el.className] = _this.createGallery(el, carousel);\n    } else if (el.hasAttribute('hero-carousel')) {\n      _this.list[el.id || el.className] = initHero(el);\n    } else if (el.hasAttribute('js-carousel-matches')) {\n      _this.list[el.id || el.className] = initMatches(el);\n    } else if (el.hasAttribute('js-carousel-matchescalendar')) {\n      _this.list[el.id || el.className] = initMatchesCalendar(el);\n    } else if (el.hasAttribute('js-video-list-carousel')) {\n      _this.list[el.id || el.className] = initVbtvRails(el);\n    } else {\n      _this.list[el.id || el.className] = initBase(el);\n    }\n  }\n\n  createGallery(el, carousel) {\n    // ELEMENTS\n\n    const paginationWrapper = el.parentNode.parentNode.querySelector('.swiper-info__pagination');\n\n    const photoWrapper = el.parentNode.parentNode.querySelector(\n      '.swiper-wrapper-info .swiper-info__photo'\n    );\n\n    const photoWrapperCaption = el.parentNode.parentNode.querySelector(\n      '.swiper-wrapper-info-caption .swiper-info__photo-caption'\n    );\n\n    const fullscreenWrapper = el.parentNode.parentNode.querySelector('.swiper-info__fullscreen');\n    const paginationCurrent = paginationWrapper\n      ? paginationWrapper.querySelector('.swiper-info__pagination--current')\n      : null;\n    const paginationTotal = paginationWrapper\n      ? paginationWrapper.querySelector('.swiper-info__pagination--total')\n      : null;\n    let photoCaption = photoWrapper\n      ? photoWrapper.querySelector('.swiper-info__photo h1')\n      : undefined;\n    photoCaption = photoCaption\n      ? photoCaption\n      : photoWrapper.querySelector('.swiper-info__photo div');\n    const photoDescription = photoWrapperCaption\n      ? photoWrapperCaption.querySelector('.swiper-info__photo-caption span')\n      : undefined;\n\n    // FULLSCREEN\n    fullscreenWrapper.addEventListener('click', () => {\n      el.querySelector('.swiper-slide-active a').click();\n    });\n\n    // PAGINATION && TEXT\n    carousel.on('paginationUpdate', (swiper, paginationEl) => {\n      this.setPagination(paginationCurrent, paginationTotal, paginationEl);\n    });\n    carousel.on('slideChangeTransitionEnd', (swiper) => {\n      target = el.querySelector('.swiper-slide-active a');\n      this.setInfo(photoCaption, photoDescription, target);\n    });\n\n    // INITIALIZE\n    let target = el.querySelector('.swiper-slide-active a');\n\n    this.setInfo(photoCaption, photoDescription, target);\n    carousel.pagination.update();\n  }\n\n  setPagination(paginationCurrent, paginationTotal, paginationEl) {\n    if (paginationCurrent) {\n      paginationCurrent.innerHTML = (\n        paginationEl.querySelector('.swiper-pagination-current') || {\n          innerText: '',\n        }\n      ).innerText;\n    }\n    if (paginationTotal) {\n      paginationTotal.innerHTML = (\n        paginationEl.querySelector('.swiper-pagination-total') || {\n          innerText: '',\n        }\n      ).innerText;\n    }\n  }\n\n  setInfo(photoCaption, photoDescription, target) {\n    if (photoCaption && target) {\n      const caption = target.getAttribute('data-caption');\n      photoCaption.innerHTML = caption;\n    }\n    if (photoDescription && target) {\n      const desc = target.getAttribute('data-desc');\n      photoDescription.innerHTML = desc;\n    }\n  }\n\n  handleEvents() {\n    const _this = this;\n    _this.carousels = x('[js-carousel]');\n\n    if (!_this.carousels) {\n      return;\n    }\n\n    each(_this.carousels, (el) => {\n      _this.initCarousel(el);\n    });\n  }\n\n  init() {\n    this.handleEvents();\n  }\n}\n\n(function ($, d) {\n  $(d).ready(function () {\n    $('.fo-hero-carousel .swiper-container[js-carousel-autoplay]').each(function (elem, target) {\n      const swp = target.swiper;\n      $(this)\n        .find('.fm-card .fa-button')\n        .hover(\n          function () {\n            swp.autoplay.stop();\n          },\n          function () {\n            swp.autoplay.start();\n          }\n        );\n    });\n  });\n})(jQuery, document);\n","import { x0 } from '../../../_helpers';\n\nexport default class Search {\n  constructor() {\n    this.el = x0('.fo-search-btn');\n    if (!this.el) return;\n    this.init();\n  }\n\n  toggleSearch(e) {\n    // to defer all other work until at least the next frame by queuing a task in a `requestAnimationFrame()` callback.\n    requestAnimationFrame(() => {\n      setTimeout(() => {\n\n        e.preventDefault();\n        this.searchField = x0('[js-search]', this.el);\n        if (!this.searchField) {\n          return;\n        }\n        this.searchField.classList.toggle('-is-active');\n        document.body.classList.toggle('-search-is-open');\n      }, 0);\n    });\n  }\n\n  attachEvents() {\n    //open search\n    if (this.searchOpener) {\n      this.searchOpener.addEventListener('click', this.toggleSearch);\n    }\n    if (this.searchCloser) {\n      this.searchCloser.addEventListener('click', this.toggleSearch);\n    }\n  }\n\n  init() {\n    this.searchOpener = x0('[js-search-open]', this.el);\n    this.searchCloser = x0('[js-menu-close]');\n\n    this.attachEvents();\n  }\n}\n","import EventsHelper from \"../_helpers/events\";\n\nexport default class Tabs {\n  $tabsBtns = null;\n\n  constructor() {\n    let _this = this;\n\n    _this.init();\n\n    EventsHelper.OnAjaxModuleLoaded(function () {\n      _this.init();\n    });\n\n    EventsHelper.On(\"TabsReload\", function (tabid) {\n      setTimeout(function () {\n        _this.init();\n      }, 2000);\n    });\n  }\n\n  init() {\n    let _this = this;\n    _this.$tabsBtns = $(\".tabs-nav .tab-item:not([tab-item-custom])\");\n\n    if (!_this.$tabsBtns.length) {\n      return;\n    }\n\n    _this.$tabsBtns.click(function (e) {\n      let tabId = $(this).data(\"tab-id\");\n      $(this).siblings().removeClass(\"active\");\n      $(this).addClass(\"active\");\n      _this.updatePageUrl(tabId);\n      _this.showContent(tabId);\n    });\n\n    _this.loadFirstContent();\n  }\n\n  loadFirstContent() {\n    let _this = this;\n\n    let $hashBtn = null;\n    let hashid = null;\n\n    if (window.location.hash) {\n      hashid = window.location.hash.replace(\"#\", \"\");\n    }\n\n    $(\".tabs-nav__content\").each(function (index, item) {\n      let tabId = \"\";\n      $hashBtn = $(item).find('.tab-item[data-tab-id=\"' + hashid + '\"]');\n\n      let $activeBtn;\n      if ($hashBtn && $hashBtn.length) {\n        $activeBtn = $hashBtn.first();\n      } else {\n        let activeItem = $(item).find(\".active\");\n        if (activeItem && activeItem.length > 0) {\n          $activeBtn = activeItem.first();\n        } else {\n          $activeBtn = $(item).find(\"li:first\");\n        }\n      }\n\n      if ($activeBtn) {\n        tabId = $activeBtn.data(\"tab-id\");\n        $activeBtn.addClass(\"active\");\n        _this.showContent(tabId);\n      }\n    });\n  }\n\n  showContent(tabId) {\n    if (!tabId) {\n      return;\n    }\n\n    let $selectedContent = $('[data-tab=\"' + tabId + '\"]');\n    if ($selectedContent.length) {\n      $selectedContent.siblings(\"[data-tab]\").hide();\n      $selectedContent.show();\n      EventsHelper.Trigger(\"TabChanged\", tabId);\n    }\n  }\n\n  updatePageUrl(tabId) {\n    if (window.history.pushState) {\n      const newurl =\n        window.location.protocol +\n        \"//\" +\n        window.location.host +\n        window.location.pathname +\n        \"#\" +\n        tabId;\n      window.history.pushState({ path: newurl }, \"\", newurl);\n    }\n  }\n}\n","import { x0, x, isMobile } from '../../../_helpers';\nimport { throttle } from \"lodash\";\n\nexport default class StickyNav {\n\n  constructor() {\n\n    this.e1 = x0(\".fo-header__nav\");\n    this.e3 = x0(\".vbw-secondary-nav\");\n    this.e4 = x0(\".vbw-main-nav\");\n    if (!this.e3 && !this.e4) {\n      return;\n    }\n    this.issticky = false;\n    this.e2 = x0(\".vbw-secondary-nav-fixed\")\n    this.lastScrollTop = 0;\n    this.init();\n  }\n\n  stickyNavInit() {\n    this.extraTopModules = x0(\".vbw-extra-top-modules\");\n    this.primarynav = x0('[js-primary-nav]');\n    this.header = x0('[js-sticky-header]');\n    this.maincontent = x0('#main-content');\n    this.innermodules = x(\".vbw-inner-modules\");\n    this.innermodule;\n    this.maincontentFirstChild = x0('#main-content :not(script, h1.vbw-page-default-title)');\n    this.sectionHeaderV1 = this.maincontent ? this.maincontent.querySelector('.section-header:first-child') : null;\n    this.sectionHeaderV2 = this.maincontent ? this.maincontent.querySelector('.vbw-section-header-wrap:first-child') : null;\n    this.secondarynavV2 = x0('[js-secondary-nav-v2]', this.el);\n    this.primarynavLev2 = x0('[js-primary-nav-lev2]', this.el);\n\n    if (this.maincontentFirstChild && this.maincontentFirstChild.classList.contains('vbw-background')) {\n      this.maincontentFirstChild = this.maincontentFirstChild.querySelector(':not(script):first-child');\n    }\n\n    if (!this.primarynav && !this.secondarynavV2 && !this.innermodules) {\n      return;\n    }\n\n    let navPrimaryHeight = this.primarynav.getBoundingClientRect().height;\n\n    let navPrimaryLev2Height = 0;\n    let navSecondaryV2Height = 0;\n    let extraTopModulesBottom = 0;\n    let navSecondaryV2HeightNew = 0;\n\n\n    if (this.primarynavLev2) {\n      navPrimaryLev2Height = this.primarynavLev2.getBoundingClientRect().height;\n    }\n\n    // Manage extraModules\n    if (this.extraTopModules && this.primarynav) {\n      const extraTopModulesRect = this.extraTopModules.getBoundingClientRect();\n      extraTopModulesBottom = extraTopModulesRect.bottom > 0 ? extraTopModulesRect.bottom : 0;\n    }\n\n    // Secondary nav V2 & Primary nav Level-2 section height -----------------\n    if (this.secondarynavV2) {\n      navSecondaryV2Height = this.secondarynavV2.offsetHeight;\n      this.secondarynavV2.style.top = (navPrimaryHeight + navPrimaryLev2Height) + \"px\";\n    }\n\n    //Primary nav fixed behaviour updated to position value changes from top value to avoid visual flickering \n    if (this.header.classList.contains('--full-width')) {\n      if (extraTopModulesBottom === 0) {\n        this.primarynav.style.position = \"fixed\";\n      } else {\n        this.primarynav.style.position = \"absolute\";\n      }\n\n      //To Check user scrolling direction\n      let st = window.pageYOffset || document.documentElement.scrollTop;\n      if (st > this.lastScrollTop) { //------------------------------------ Going down from top to bottom\n        if (this.primarynavLev2) {\n          this.primarynavLev2.style.position = \"absolute\";\n          this.primarynavLev2.style.top = navPrimaryHeight + \"px\";\n        }\n\n        if (this.secondarynavV2) {\n          if (isMobile()) {\n            this.secondarynavV2.classList.add('vbw-secondary-nav-sticky');\n            this.secondarynavV2.style.top = navPrimaryHeight + \"px\";\n          }\n          else {\n            this.primarynav.style.position = \"absolute\";\n            const extraTopModuleHeight = !!this.extraTopModules ? this.extraTopModules.clientHeight : 0;\n\n            if (st > (navPrimaryHeight + navPrimaryLev2Height + extraTopModuleHeight)) {\n              this.secondarynavV2.classList.add('vbw-secondary-nav-sticky');\n              this.secondarynavV2.style.top = \"0px\";\n            } else {\n              this.secondarynavV2.classList.remove('vbw-secondary-nav-sticky');\n            }\n          }\n        }\n\n      }\n      else { //------------------------------------------------------------- Going Up from bottom\n        if (this.primarynavLev2) {\n          if (extraTopModulesBottom === 0) {\n            this.primarynavLev2.style.position = \"fixed\";\n          } else {\n            this.primarynavLev2.style.position = \"absolute\";\n          }\n          if (isMobile()) {\n            this.primarynavLev2.style.top = (navPrimaryHeight + navSecondaryV2Height) + \"px\";\n          }\n          else {\n            this.primarynavLev2.style.top = navPrimaryHeight + \"px\";\n          }\n        }\n\n        if (this.secondarynavV2) {\n          if (isMobile()) {\n            this.secondarynavV2.style.top = navPrimaryHeight + \"px\";\n            if (extraTopModulesBottom !== 0 || st === 0) {\n              this.secondarynavV2.classList.remove('vbw-secondary-nav-sticky');\n            }\n\n          }\n          else {\n            if (extraTopModulesBottom !== 0 || st === 0) {\n              this.secondarynavV2.classList.remove('vbw-secondary-nav-sticky');\n              this.primarynav.style.position = \"absolute\";\n            } else {\n              // For new primary hidden on scroll requirement\n              this.primarynav.style.position = \"fixed\";\n            }\n          }\n        }\n      }\n      this.lastScrollTop = st <= 0 ? 0 : st; // For Mobile or negative scrolling\n\n      // Inner module & main need margin from top update margin and paddings\n      this.primarynav.style.top = \"0px\";\n\n      if (this.secondarynavV2) {\n        navSecondaryV2HeightNew = this.secondarynavV2.offsetHeight;\n      }\n\n      for (let ele of this.innermodules) {\n        if (ele.innerHTML.trim() !== \"\") {\n          this.innermodule = ele;\n          break;\n        }\n      }\n\n      if (!!this.innermodule) {\n        this.innermodule.style.paddingTop = (navPrimaryHeight + navSecondaryV2HeightNew + navPrimaryLev2Height) + \"px\";\n      } else {\n        if (this.sectionHeaderV2) {\n          this.sectionHeaderV2.style.marginTop = (navSecondaryV2HeightNew + navPrimaryLev2Height) + \"px\";\n        } else if (this.sectionHeaderV1) {\n          this.sectionHeaderV1.style.marginTop = (navSecondaryV2HeightNew + navPrimaryLev2Height) + \"px\";\n        }\n\n        if (this.maincontentFirstChild) {\n          this.maincontentFirstChild.style.paddingTop = (navPrimaryHeight + navSecondaryV2HeightNew + navPrimaryLev2Height) + \"px\";\n        }\n      }\n    }\n  }\n\n  init() {\n    document.addEventListener(\"DOMContentLoaded\", this.stickyNavInit());\n\n    if ($(\".vbw-ul-menu-list\").width() > $(\".fo-header__nav\").width()) {\n      $(\".fo-header__nav\").css(\"justify-content\", \"unset\")\n    }\n\n    //when both primary and secondary nav are present are are both stickly initialized\n    if (this.e2 && !this.extraTopModules && !this.primarynavLev2 && !this.secondarynavV2) {\n      return;\n    }\n\n    // Attach Event\n    window.addEventListener(\"scroll\", throttle(this.stickyNavInit.bind(this), 300));\n  }\n}\n","import { x } from '../_helpers';\nexport default class Accordion {\n  accordion = null;\n\n  constructor() {\n    let _this = this;\n    _this.init();\n    _this.initMenu();\n  }\n\n  initMenu() {\n    const _this = this;\n    _this.accordion = x('[js-menu-accordion]');\n    if (!_this.accordion.length) { return; }\n\n    _this.accordion.forEach(el => {\n      _this.accordionPanels = x(\".vbw-accordion-panel\", el);\n\n      for (let i = 0, len = _this.accordionPanels.length; i < len; i++) {\n        _this.accordionPanels[i].querySelector(\".vbw-accordion-header\").addEventListener(\"click\", (event) => {\n          requestAnimationFrame(() => {\n            setTimeout(() => {\n              _this.showPanel(event.target.parentNode);\n            }, 0);\n          });\n        });\n      }\n    })\n\n    _this.showPanel(_this.accordionPanels[0]);\n  }\n\n  init() {\n    let _this = this;\n    _this.accordion = x('[js-base-accordion]');\n    if (!_this.accordion.length) { return; }\n\n    _this.accordion.forEach(el => {\n      _this.accordionPanels = x(\".vbw-accordion-panel\", el);\n\n      for (let i = 0, len = _this.accordionPanels.length; i < len; i++) {\n        _this.accordionPanels[i].querySelector(\".vbw-accordion-header\").addEventListener(\"click\", (event) => {\n          requestAnimationFrame(() => {\n            setTimeout(() => {\n              _this.showPanel(event.target.closest(\".vbw-accordion-panel\"));\n            }, 0);\n          });\n        });\n      }\n    })\n  }\n\n  showPanel(panel) {\n    let isPanelExpanded = panel.classList.contains(\"active\");\n\n    if (isPanelExpanded) {\n      panel.classList.remove(\"active\");\n    } else {\n      panel.classList.add(\"active\");\n    }\n  }\n\n}\n\n","import { x0, x } from '../_helpers';\n\nexport default class GridCarousel {\n  constructor() {\n    const _this = this;\n    _this.carousels = x('[js-carousel]');\n\n    if (_this.carousels.length === 0) return;\n    _this.init();\n  }\n\n  init() {\n    const _this = this;\n\n    _this.carousels.forEach((carousel) => {\n      if (x0('.vbw-event-card', carousel)) {\n        carousel.classList.add('vbw-competition-list-carousel');\n        const parentItem = carousel.parentNode.parentNode;\n        if (\n          parentItem.classList.contains('d3-l-col__col-12') ||\n          parentItem.classList.contains('d3-l-col__col-9')\n        ) {\n          parentItem.classList.add('vbw-competition-list-carousel-wrap');\n        }\n      }\n    });\n  }\n}\n","import EventsHelper from '../_helpers/events';\n\nexport default class Dropdown {\n\n  constructor() {\n    const _this = this;\n\n    _this.init();\n\n    EventsHelper.OnAjaxModuleLoaded(function () {\n      setTimeout(function () {\n        _this.init();\n      }, 2000);\n    });\n\n    EventsHelper.On('DropDownReload', function (tabid) {\n      setTimeout(function () {\n        _this.init();\n      }, 2000);\n    });\n  }\n\n  init() {\n    const _this = this;\n\n    _this.dropdownList = $('.tabs-nav__content.tab-type-dropdown:not(.custom)');\n\n    if (_this.dropdownList.length === 0) return;\n\n    _this.dropdownList.off('click').click(function (e) { _this.toggleOpenDropdown(e) });\n\n    $(document).click(function () {\n      _this.dropdownList.removeClass('open');\n    });\n\n  }\n\n  toggleOpenDropdown(e) {\n    let element = e.currentTarget;\n    element.classList.toggle('open');\n    e.stopPropagation();\n  }\n}\n","import { x } from '../_helpers';\nimport { each } from 'lodash';\nimport EventsHelper from '../_helpers/events';\n\nexport default class AjaxContentLoader {\n  loaders = null;\n\n  constructor() {\n    let _this = this;\n    _this.init();\n\n    EventsHelper.OnAjaxModuleLoaded(function () {\n      _this.init();\n    });\n  }\n\n  init() {\n    const _this = this;\n    _this.loaders = x('.vbw-ajax-content-loader:not(.loaded)');\n\n    if (_this.loaders.length === 0) return;\n\n    each(_this.loaders, (loader) => {\n      const observer = new IntersectionObserver(_this.handleIntersection);\n      observer.observe(loader);\n    });\n  }\n\n  handleIntersection(entries) {\n    each(entries, (entry) => {\n      if (entry.isIntersecting && !entry.target.classList.contains('loaded')) {\n\n        const url = entry.target.getAttribute('data-library-url');\n\n        $.ajax({\n          url: url,\n        }).done(function (data) {\n          if (data) {\n            entry.target.innerHTML = data;\n            entry.target.classList.add('loaded');\n            EventsHelper.AjaxModuleLoaded();\n          }\n        });\n\n      } \n    });\n  }\n\n}\n\n","const TRANSLATIONS = {\n  \"year\": {\n    \"en\": { text: \"year\", abbreviation: \"y\" },\n    \"it\": { text: \"anno\", abbreviation: \"a\" },\n    \"ru\": { text: \"\", abbreviation: \"Г.\"},\n    \"pl\": { text: \"\", abbreviation: \"r\"},\n    \"nl\": { text: \"\", abbreviation: \"j\"},\n    \"pt\": { text: \"\", abbreviation: \"a\"},\n    \"es\": { text: \"año\", abbreviation: \"Año\" },\n    \"fr\": { text: \"\", abbreviation: \"y\" }\n  },\n  \"month\": {\n    \"en\": { text: \"month\", abbreviation: \"m\" },\n    \"it\": { text: \"mese\", abbreviation: \"m\" },\n    \"ru\": { text: \"\", abbreviation: \"М.\"},\n    \"pl\": { text: \"\", abbreviation: \"m\"},\n    \"nl\": { text: \"\", abbreviation: \"m\"},\n    \"pt\": { text: \"\", abbreviation: \"m\"},\n    \"es\": { text: \"\", abbreviation: \"m\" },\n    \"fr\": { text: \"\", abbreviation: \"m\" }\n  },\n  \"week\": {\n    \"en\": { text: \"week\", abbreviation: \"w\" },\n    \"it\": { text: \"settimana\", abbreviation: \"s\" },\n    \"ru\": { text: \"\", abbreviation: \"Нед.\"},\n    \"pl\": { text: \"\", abbreviation: \"t\"},\n    \"nl\": { text: \"\", abbreviation: \"w\"},\n    \"pt\": { text: \"\", abbreviation: \"s\"},\n    \"es\": { text: \"\", abbreviation: \"Sem\" },\n    \"fr\": { text: \"\", abbreviation: \"w\" }\n  },\n  \"day\": {\n    \"en\": { text: \"day\", abbreviation: \"d\" },\n    \"it\": { text: \"giorno\", abbreviation: \"g\" },\n    \"ru\": { text: \"\", abbreviation: \"Д.\"},\n    \"pl\": { text: \"\", abbreviation: \"d\"},\n    \"nl\": { text: \"\", abbreviation: \"d\"},\n    \"pt\": { text: \"\", abbreviation: \"d\"},\n    \"es\": { text: \"\", abbreviation: \"D\" },\n    \"fr\": { text: \"\", abbreviation: \"d\" }\n  },\n  \"hour\": {\n    \"en\": { text: \"hour\", abbreviation: \"h\" },\n    \"it\": { text: \"ora\", abbreviation: \"o\" },\n    \"ru\": { text: \"\", abbreviation: \"Ч.\"},\n    \"pl\": { text: \"\", abbreviation: \"g\"},\n    \"nl\": { text: \"\", abbreviation: \"u\"},\n    \"pt\": { text: \"\", abbreviation: \"h\"},\n    \"es\": { text: \"\", abbreviation: \"h\" },\n    \"fr\": { text: \"\", abbreviation: \"h\" }\n  },\n  \"minute\": {\n    \"en\": { text: \"minute\", abbreviation: \"m\" },\n    \"it\": { text: \"minuto\", abbreviation: \"m\" },\n    \"ru\": { text: \"\", abbreviation: \"\"},\n    \"pl\": { text: \"\", abbreviation: \"\"},\n    \"nl\": { text: \"\", abbreviation: \"\"},\n    \"pt\": { text: \"\", abbreviation: \"\"},\n    \"es\": { text: \"\", abbreviation: \"\" },\n    \"fr\": { text: \"\", abbreviation: \"\" }\n  },\n  \"matchstatus-upcoming\": {\n    \"en\": { text: \"upcoming\", abbreviation: \"upcoming\" },\n    \"it\": { text: \"in arrivo\", abbreviation: \"in arrivo\" },\n    \"ru\": { text: \"расписание\", abbreviation: \"расписание\" },\n    \"pl\": { text: \"wkrótce\", abbreviation: \"wkrótce\" },\n    \"nl\": { text: \"aanstaande\", abbreviation: \"aanstaande\" },\n    \"pt\": { text: \"próximo\", abbreviation: \"próximo\" },\n    \"es\": { text: \"próximo\", abbreviation: \"próximo\" },\n    \"fr\": { text: \"\", abbreviation: \"\" }\n\n  },\n  \"matchstatus-live\": {\n    \"en\": { text: \"live\", abbreviation: \"live\" },\n    \"it\": { text: \"live\", abbreviation: \"live\" },\n    \"ru\": { text: \"Матч идет\", abbreviation: \"Матч идет\" },\n    \"pl\": { text: \"Na żywo\", abbreviation: \"Na żywo\" },\n    \"nl\": { text: \"live\", abbreviation: \"live\" },\n    \"pt\": { text: \"ao vivo\", abbreviation: \"ao vivo\" },\n    \"es\": { text: \"en vivo\", abbreviation: \"en vivo\" },\n    \"fr\": { text: \"\", abbreviation: \"\" }\n\n  },\n  \"matchstatus-results\": {\n    \"en\": { text: \"results\", abbreviation: \"results\" },\n    \"it\": { text: \"risultati\", abbreviation: \"risultati\" },\n    \"ru\": { text: \"Матчи закончен\", abbreviation: \"Матчи закончен\" },\n    \"pl\": { text: \"wyniki\", abbreviation: \"wyniki\" },\n    \"nl\": { text: \"uitslag\", abbreviation: \"uitslag\" },\n    \"pt\": { text: \"resultados\", abbreviation: \"resultados\" },\n    \"es\": { text: \"resultados\", abbreviation: \"resultados\" },\n    \"fr\": { text: \"\", abbreviation: \"\" }\n  }\n}\n\nexport default TRANSLATIONS;\n","import TRANSLATIONS from \"./translations\";\n\nclass TranslationHelper {\n\n  lang = \"en\";\n  constructor() {\n    let _this = this;\n    _this.lang = document.querySelector('html').getAttribute('lang');\n  }\n\n  getWordTag(wordTag) {\n    let _this = this;\n    if (wordTag in TRANSLATIONS && _this.lang in TRANSLATIONS[wordTag]) {\n      return TRANSLATIONS[wordTag][_this.lang];\n    }\n\n    return null;\n  }\n\n  getText(wordTag) {\n    let _this = this;\n    let word = _this.getWordTag(wordTag);\n    if (word && \"text\" in word && word.text && word.text.length > 0) {\n      return word.text;\n    }\n    else {\n      return wordTag;\n    }\n  }\n\n  getAbbreviation(wordTag) {\n    let _this = this;\n    let word = _this.getWordTag(wordTag);\n    if (word && \"abbreviation\" in word && word.abbreviation && word.abbreviation.length > 0) {\n      return word.abbreviation;\n    }\n    else {\n      return wordTag;\n    }\n  }\n}\n\nTranslationHelper = new TranslationHelper();\nexport default TranslationHelper;\n","import EventsHelper from './events';\nimport TranslationHelper from './translationHelper';\n\nexport default class DatetimeHelper {\n  dt = null;\n  disableDateAge = false;\n  TBD_SCHEDULEINFO_VALUE = 2;\n\n  constructor() {\n    let _this = this;\n    _this.disableDateAge = $('html').is('[data-disable-date-age]');\n\n    document.addEventListener(\"DOMContentLoaded\", _this.init());\n\n    EventsHelper.OnAjaxModuleLoaded(function () {\n      _this.init();\n    });\n\n    EventsHelper.On('MatchListDataUpdate', function () {\n      _this.init();\n    });\n\n    EventsHelper.On('MatchDataUpdate', function () {\n      _this.init();\n    });\n\n    _this.init();\n  }\n\n  init() {\n    requestAnimationFrame(() => {\n      setTimeout(() => {\n        let _this = this;\n        _this.dt = new Date();\n        if (!_this.disableDateAge) {\n          _this.onDateTimeAge();\n        }\n        _this.onMyTime();\n      }, 0);\n    });\n  }\n\n  onDateTimeAge() {\n    let _this = this;\n    let datesToBeFormatted = $('.fm-card__content .fa-text__meta');\n    if (!datesToBeFormatted || datesToBeFormatted.length < 1) {\n      return;\n    }\n\n    for (let i = 0; datesToBeFormatted.length > i; i++) {\n      let date = _this.normalizeDate(datesToBeFormatted[i]);\n      if (date != null) {\n        let renderedDate = _this.getDateTimeAge(date);\n        datesToBeFormatted[i].textContent = renderedDate;\n      }\n    }\n  }\n\n  getDateTimeAge(date) {\n    let actualDateTime = new Date();\n    let diffMs = (actualDateTime - date); // milliseconds between now & date\n\n    let diffYears = Math.floor(diffMs / 31536000000); // years\n    if (diffYears >= 1) {\n      return diffYears + TranslationHelper.getAbbreviation('year');\n    }\n\n    let diffMonths = Math.floor(diffMs / 2628000000); // months\n    if (diffMonths >= 1) {\n      return diffMonths + TranslationHelper.getAbbreviation('month');\n    }\n\n    let diffWeeks = Math.floor(diffMs / 604800000); // weeks\n    if (diffWeeks >= 1) {\n      return diffWeeks + TranslationHelper.getAbbreviation('week');\n    }\n\n    let diffDays = Math.floor(diffMs / 86400000); // days\n    if (diffDays >= 1) {\n      return diffDays + TranslationHelper.getAbbreviation('day');\n    }\n\n    let diffHrs = Math.floor(diffMs / 3600000); // hours\n    if (diffHrs >= 1) {\n      return diffHrs + TranslationHelper.getAbbreviation('hour');\n    }\n\n    let diffMins = Math.round(diffMs / 60000); // minutes\n    if (diffMins >= 1) {\n      return diffMins + TranslationHelper.getAbbreviation('minute');\n    }\n  }\n\n  getMyTime(obj) {\n\n    let _this = this;\n    if (obj.getAttribute('data-is-bye') && obj.getAttribute('data-is-bye') == \"true\") {\n      return obj.getAttribute('data-bye-text');\n    }\n    if (obj.getAttribute('data-scheduleinfo') && obj.getAttribute('data-scheduleinfo') == _this.TBD_SCHEDULEINFO_VALUE) {\n      return 'TBD';\n    }\n\n    if (obj.getAttribute('data-time-published') && obj.getAttribute('data-time-published') === 'TBD') {\n      return 'TBD';\n    }\n\n\n    if (obj.getAttribute('data-mytime')) {\n      return obj.getAttribute('data-mytime');\n    }\n\n\n\n    let utcTimeAttr = obj.getAttribute('data-utc-datetime');\n    if (!utcTimeAttr) {\n      return;\n    }\n\n    let utcDateTime = new Date(Date.parse(utcTimeAttr));\n    let myDateHours = utcDateTime.getHours();\n    let myDateMinutes = (utcDateTime.getMinutes() < 10 ? '0' : '') + utcDateTime.getMinutes();\n\n\n    obj.setAttribute('data-mytime', [myDateHours, myDateMinutes].join(':'));\n    obj.setAttribute('data-my-timezone', _this.tzAbbr(utcDateTime) || '');\n\n    let timestamp_diff = utcDateTime.getTime() - new Date(utcDateTime.getDate()).getTime();\n\n    if (timestamp_diff == 86400000) {\n      $(obj).addClass(\"dayplus\");\n      obj.setAttribute('data-dayplus', '-');\n    }\n    else if (timestamp_diff == -86400000) {\n      obj.setAttribute('data-dayplus', '+');\n      $(obj).addClass(\"dayplus\");\n    }\n    else {\n      $(obj).removeClass(\"dayplus\");\n      obj.removeAttribute('data-dayplus');\n    }\n\n    return obj.getAttribute('data-mytime');\n  }\n\n  onMyTime() {\n    let _this = this;\n    let $selector = $('*[data-utc-datetime]');\n    $selector.each(function () {\n      let obj = this;\n      let $this = $(obj);\n      let attr_val = obj.getAttribute('data-utc-datetime');\n      let mytime_txt;\n\n      if (!attr_val) {\n        return;\n      }\n\n      mytime_txt = _this.getMyTime(obj);\n\n      if (mytime_txt === 'TBD') {\n        mytime_txt = obj.getAttribute('data-tbdtext') || 'TBD';\n        $this.find('.vbw-mu__time--mytime').text(mytime_txt);\n        $this.find('.vbw-mu__time--local').text(mytime_txt);\n        $this.find('.vbw-mu__time--timezone--mytime').text('');\n        return;\n      }\n\n      if (mytime_txt == \"BYE\") {\n        $this.find('.vbw-mu__time--local').text(mytime_txt);\n\n      }\n\n      if (obj.getAttribute('data-dayplus')) {\n        mytime_txt = [mytime_txt, ' ', obj.getAttribute('data-dayplus'), '1'].join('');\n        $(obj).addClass(\"dayplus\");\n      }\n\n      $this.find('.vbw-mu__time--mytime').text(mytime_txt);\n      if (obj.getAttribute('data-my-timezone')) {\n        $this.find('.vbw-mu__time--timezone--mytime').text('(' + obj.getAttribute('data-my-timezone') + ')');\n      }\n    });\n  }\n\n  normalizeDate(date) {\n\n    if (!date || typeof date.textContent !== 'undefined' && date.textContent != null) {\n      let dateStr = date.textContent.trim().substring(0, 16);\n      let dateTimestamp = Date.parse(dateStr);\n      if (!isNaN(dateTimestamp)) {\n        return new Date(`${dateStr}Z`);\n      }\n    }\n    return null;\n  }\n\n  tzAbbr(dateInput) {\n    let dateStr = dateInput.toString();\n    if (!dateStr || dateStr.indexOf('GMT') === -1) { return null; }\n    dateStr = dateStr.substring(dateStr.indexOf('GMT'));\n    let offset = dateStr.substring(0, dateStr.indexOf(' '));\n\n    if (offset && offset.length === 8) {\n      offset = [offset.substring(0, offset.length - 2), ':', offset.substring(offset.length - 2)].join('');\n    }\n\n    return offset || '';\n  }\n\n}\n\nwindow.DatetimeHelper = new DatetimeHelper();\n","import EventsHelper from '../_helpers/events';\nimport CookieHelper from '../_helpers/cookies';\n\nexport default class UserFavouriteContent {\n\n  cookies = new CookieHelper();\n  $wrapper = null;\n  $promos = null;\n  $stories = null;\n  $videos = null;\n\n  constructor() {\n    let _this = this;\n    if (window.favouriteConfig) {\n      _this.init();\n    }\n  }\n\n  init() {\n    let _this = this;\n\n    _this.$wrapper = $('.vbw-user-favourite-content');\n\n    _this.$promos = _this.$wrapper.find('.vbw-user-favourite-content--promos');\n    _this.$stories = _this.$wrapper.find('.vbw-user-favourite-content--stories');\n    _this.$videos = _this.$wrapper.find('.vbw-user-favourite-content--videos');\n\n    _this.loadContent();\n  }\n\n  loadContent() {\n    let _this = this;\n    let config = window.favouriteConfig;\n\n    let user = _this.getUser();\n\n    if (!user) {\n      _this.$promos.load(config.anonymousPromoLibraryURL, function () { _this.applyURLReplacements(); });\n    } else if (!user.hasFavourites) {\n      _this.$promos.load(config.noFavouritesPromoLibraryURL, function () { _this.applyURLReplacements(); });\n    } else {\n      _this.loadFavouritesContent(user);\n    }\n    \n  }\n\n  applyURLReplacements() {\n    let _this = this;\n\n    _this.$promos.find('.fa-button').each(function () {\n      let _url = $(this).attr('href');\n      _url = _url.replace('{currentUrl}', window.location.href);\n      $(this).attr('href', _url);\n    })\n\n  }\n\n\n  loadFavouritesContent(user) {\n    let _this = this;\n    \n    if (user.favoriteCountryTeams) {\n      let teams = user.favoriteCountryTeams.split(',');\n\n      for (let i = 0; i < teams.length; i++) {\n        let team = teams[i];\n\n        let teamStoriesUrl = window.favouriteConfig.favouriteTeamStoriesBaseURL.replace('[FAV]', team);\n        let teamVideosUrl = window.favouriteConfig.favouriteTeamVideosBaseURL.replace('[FAV]', team);\n\n        _this.appendFavouritesContentLibrary(teamStoriesUrl, _this.$stories.find('[team-stories]'));\n        _this.appendFavouritesContentLibrary(teamVideosUrl, _this.$videos.find('[team-videos]'));\n\n      }\n    }\n\n    if (user.favoritePlayers) {\n      let players = user.favoritePlayers.split(',');\n\n      for (let i = 0; i < players.length; i++) {\n        let player = players[i];\n\n        let playerStoriesUrl = window.favouriteConfig.favouritePlayerStoriesBaseURL.replace('[FAV]', player);\n        let playerVideosUrl = window.favouriteConfig.favouritePlayerVideosBaseURL.replace('[FAV]', player);\n\n        _this.appendFavouritesContentLibrary(playerStoriesUrl, _this.$stories.find('[player-stories]'));\n        _this.appendFavouritesContentLibrary(playerVideosUrl, _this.$videos.find('[player-videos]'));\n\n      }\n    }\n\n  }\n\n  appendFavouritesContentLibrary(url, el) {\n\n    $.ajax({\n      url: url,\n    }).done(function (data) {\n      if (data) {\n        el.append(data);\n        el.show();\n        EventsHelper.AjaxModuleLoaded();\n      }\n    });\n  }\n\n  getUser() {\n    let _this = this;\n\n    if (_this.cookies.get(\"azureb2c_oid\")) {\n\n      let userObj = {};\n\n      userObj.hasFavourites = false;\n\n      userObj.id = _this.cookies.get(\"azureb2c_oid\") || 0;\n\n      if (_this.cookies.get(\"azureb2c_name\")) {\n        userObj.firstName = _this.sanitize(_this.cookies.get(\"azureb2c_name\"));\n      }\n\n      if (_this.cookies.get(\"azureb2c_emails\")) {\n        userObj.email = _this.sanitize(_this.cookies.get(\"azureb2c_emails\"));\n      }\n\n      if (_this.cookies.get(\"azureb2c_country\")) {\n        userObj.country = _this.sanitize(_this.cookies.get(\"azureb2c_country\"));\n      }\n\n      if (_this.cookies.get(\"azureb2c_extension_DateOfBirth\")) {\n        userObj.birthday = _this.cookies.get(\"azureb2c_extension_DateOfBirth\");\n      }\n\n      if (_this.cookies.get(\"azureb2c_extension_FavoriteTeam\")) {\n        userObj.hasFavourites = true;\n        userObj.favoriteCountryTeams = unescape(_this.cookies.get(\"azureb2c_extension_FavoriteTeam\"));\n      }\n\n      if (_this.cookies.get(\"azureb2c_extension_FavoriteDiscipline\")) {\n        userObj.hasFavourites = true;\n        userObj.favoriteDisciplines = unescape(_this.cookies.get(\"azureb2c_extension_FavoriteDiscipline\"));\n      }\n\n      if (_this.cookies.get(\"azureb2c_extension_FavoritePlayer\")) {\n        userObj.hasFavourites = true;\n        userObj.favoritePlayers = unescape(_this.cookies.get(\"azureb2c_extension_FavoritePlayer\"));\n      }\n\n      if (_this.cookies.get(\"azureb2c_surname\")) {\n        userObj.lastName = unescape(_this.sanitize(_this.cookies.get(\"azureb2c_surname\")));\n      }\n\n      if (_this.cookies.get(\"azureb2c_country\")) {\n        userObj.billingCountryCode = _this.sanitize(_this.cookies.get(\"azureb2c_country\"));\n      }\n      return userObj;\n\n    } else {\n      return null;\n    }\n  }\n\n  sanitize(source) {\n\n    return unescape(decodeURI(source));\n\n  }\n\n}\n\n","import { x } from '../_helpers';\nimport { each } from 'lodash';\nimport EventsHelper from '../_helpers/events';\n\nexport default class Tooltip {\n  tooltips = null;\n  contentCache = {};\n\n  constructor() {\n    let _this = this;\n    _this.init();\n\n    EventsHelper.OnAjaxModuleLoaded(function () {\n      _this.init();\n    });\n  }\n\n  init() {\n    let _this = this;\n    _this.tooltips = x('[tooltip-trigger]');\n\n    each(_this.tooltips, (tooltip) => {\n      if (tooltip.dataset.tooltipUrl) {\n        tooltip.addEventListener(\"mouseover\", function (event) {\n          requestAnimationFrame(() => {\n            setTimeout(() => {\n              _this.loadTooltipContent(tooltip.dataset.tooltipUrl, event.target);\n            }, 0);\n          });\n        });\n\n        tooltip.addEventListener(\"mouseout\", function (event) {\n          requestAnimationFrame(() => {\n            setTimeout(() => {\n              let content = event.target.nextElementSibling;\n              content.innerHTML = \"\";\n              content.classList.add('hidden');\n            }, 0);\n          });\n        });\n\n      }\n    });\n\n  }\n\n  loadTooltipContent(url, target) {\n    let _this = this;\n    let content = target.nextElementSibling;\n\n    if (_this.contentCache[target.id]) {\n      content.innerHTML = _this.contentCache[target.id];\n      content.classList.remove('hidden');\n    } else {\n      $.ajax({\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n        type: \"GET\",\n        cache: true,\n        url: url\n      }).then((resp) => {\n        _this.contentCache[target.id] = resp;\n        content.innerHTML = resp;\n        content.classList.remove('hidden');\n      });\n    }\n\n  }\n\n}\n\n","import { isTouch } from \"../../_helpers\";\nimport {\n  onFilterElemClick,\n  clearFilterDesktop,\n  resetFilterMobile,\n  onFilterHeadClick,\n  updateFilterCounter,\n} from \"../../_helpers/filters-helper\";\n\nexport default class CompetitionsFilter {\n  filters = {};\n\n  constructor() {\n    let _this = this;\n    _this.competitions = $(\".-competition\");\n    if (_this.competitions.length === 0) return;\n\n    _this.init();\n  }\n\n  init() {\n    let _this = this;\n    let [\n      displns,\n      genders,\n      displnText,\n      genderText,\n      clearFilterText,\n    ] = _this.getFiltersData(_this.competitions);\n\n    let $el = $('[data-componentId=\"competitions-filter\"]');\n    let $elMob = $('[data-compId-mobile=\"competitions-filter\"]');\n\n    _this.$filters = $(\".filters-dropdown\");\n    _this.$filterButtons = $el.find(\"li\");\n    _this.$dropdownTexts = $(\".filters-dropdown-head-text\");\n    _this.$filterIconBtn = $el.find(\"#vbw-filter-icon-btn\");\n    _this.$mobileFilterWrap = $(\"#vbw-competition-mobile-filter\");\n\n    if (!isTouch) {\n      _this.renderGenderFilter($el, genders, genderText, clearFilterText);\n      _this.renderDisciplineFilter($el, displns, displnText, clearFilterText);\n      _this.handleEvents($el);\n    } else {\n      _this.renderMobileFilterIcon($el);\n      _this.renderGenderFilter($elMob, genders, genderText, clearFilterText);\n      _this.renderDisciplineFilter(\n        $elMob,\n        displns,\n        displnText,\n        clearFilterText\n      );\n      _this.handleMobileEvents($el);\n    }\n  }\n\n  handleEvents($el) {\n    let _this = this;\n\n    $el.click(function (e) {\n      e.stopPropagation();\n      const $elem = $(e.target);\n\n      // Clear item click from dropdown\n      if (e.target.classList.contains(\"clear-filter-li\")) {\n        clearFilterDesktop($elem, _this);\n      }\n\n      // On dropdown li element click\n      if (e.target.classList.contains(\"dropdown-li\")) {\n        onFilterElemClick($elem, _this);\n        _this.applyFilters();\n      }\n\n      // On dropdown head click to view list\n      if ($elem.hasClass(\"filters-dropdown-head\")) {\n        onFilterHeadClick($elem, _this);\n      }\n    });\n  }\n\n  handleMobileEvents($el) {\n    let _this = this;\n\n    $el.click(function (e) {\n      if (e.target.classList.contains(\"vbw-filter-icon-btn\")) {\n        _this.$mobileFilterWrap.show();\n      }\n    });\n\n    _this.$mobileFilterWrap.click(function (e) {\n      e.stopPropagation();\n      const $elem = $(e.target);\n\n      // On mobile overlay close click\n      if (e.target.classList.contains(\"vbw-filter-content-close\")) {\n        _this.$mobileFilterWrap.hide();\n      }\n\n      // On dropdown head click to view list\n      if ($elem.hasClass(\"filters-dropdown-head\")) {\n        onFilterHeadClick($elem, _this);\n      }\n\n      // On Apply filters click\n      if (e.target.classList.contains(\"vbw-comp-filter-select--btn\")) {\n        _this.applyFilters();\n        updateFilterCounter(Object.keys(_this.filters).length);\n        _this.$mobileFilterWrap.hide();\n      }\n\n      // On clear filters click\n      if (e.target.classList.contains(\"vbw-comp-filter-reset\")) {\n        resetFilterMobile(_this.$mobileFilterWrap, _this);\n        _this.resetFilter(_this.competitions);\n        updateFilterCounter(0);\n      }\n\n      // On Filter li element select\n      if (e.target.classList.contains(\"dropdown-li\")) {\n        onFilterElemClick($elem, _this);\n      }\n    });\n  }\n\n  getFiltersData(competitions) {\n    let displns = [];\n    let genders = [];\n    let gendersDummy = [];\n    let displnText = \"\";\n    let genderText = \"\";\n    let clearFilterText = \"\";\n\n    for (let item of competitions) {\n      const d = $(item).find(\".vbw-event-card\").attr(\"data-discipline\");\n      const g = $(item).find(\".vbw-event-card\").attr(\"data-gender\");\n      const gt = $(item).find(\".vbw-event-card\").attr(\"data-gender-trans\");\n      displnText = $(item)\n        .find(\".vbw-event-card\")\n        .attr(\"data-discipline-text-trans\");\n      genderText = $(item)\n        .find(\".vbw-event-card\")\n        .attr(\"data-gender-text-trans\");\n      clearFilterText = $(item)\n        .find(\".vbw-event-card\")\n        .attr(\"data-clear-filter-trans\");\n\n      if (!!d && displns.indexOf(d) == -1) displns.push(d);\n\n      if (!!g && gendersDummy.indexOf(g) == -1) {\n        gendersDummy.push(g);\n        genders.push({ gender: g, genderTrans: gt });\n      }\n    }\n    return [displns, genders, displnText, genderText, clearFilterText];\n  }\n\n  resetFilter(competitions) {\n    for (let item of competitions) {\n      let $item = $(item);\n      $item.parents(\".d3-l-col__col-3\").removeClass(\"hidden\");\n    }\n  }\n\n  filter(competitions, gender, discipline) {\n    for (let item of competitions) {\n      let $item = $(item).find(\".vbw-event-card\");\n      if ($item?.length < 1) continue;\n      let d = $item.attr(\"data-discipline\").toLowerCase();\n      let g = $item.attr(\"data-gender\").toLowerCase();\n\n      if (!!gender && !!discipline && g != gender && d != discipline) {\n        $item.parents(\".d3-l-col__col-3\").addClass(\"hidden\");\n      } else if (!!gender && g != gender) {\n        $item.parents(\".d3-l-col__col-3\").addClass(\"hidden\");\n      } else if (!!discipline && d != discipline) {\n        $item.parents(\".d3-l-col__col-3\").addClass(\"hidden\");\n      }\n    }\n  }\n\n  renderGenderFilter($el, genders, genderText, clearFilterText) {\n    if (genders?.length < 2) return;\n\n    let lis = \"\";\n    genders.sort((a, b) => +a.gender - +b.gender);\n    for (let item of genders) {\n      if (!!item.gender)\n        lis += `<li class=\"dropdown-li\" value=\"${item.gender}\">${item.genderTrans}</li>`;\n    }\n\n    let gender = `<div class=\"vbw-filters--container vbw-competitions-filters--gender\">\n      <div class=\"filters-dropdown-head\">\n        <div class=\"filters-dropdown-head-text\" id=\"filters-gender-text\" data-original-text=\"${genderText}\">${genderText}</div>\n        <span class=\"drop-arrow\">&#10094;</span>\n      </div>\n      <ul id=\"filters-gender\" class=\"filters-dropdown\">\n        ${lis}\n        <li class=\"clear-filter-li\">${clearFilterText}</li>\n      </ul>\n    </div>`;\n    $el.append(gender);\n  }\n\n  renderDisciplineFilter($el, displns, displnText, clearFilterText) {\n    if (displns?.length < 2) return;\n\n    let lis = \"\";\n    for (let item of displns) {\n      if (!!item) lis += `<li class=\"dropdown-li\" value=\"${item}\">${item}</li>`;\n    }\n\n    let discipline = `<div class=\"vbw-filters--container vbw-competitions-filters--discipline\">\n      <div class=\"filters-dropdown-head\">\n        <div class=\"filters-dropdown-head-text\" id=\"filters-discipline-text\" data-original-text=\"${displnText}\">${displnText}</div>\n        <span class=\"drop-arrow\">&#10094;</span>\n      </div>\n      <ul id=\"filters-discipline\" class=\"filters-dropdown\">\n        ${lis}\n        <li class=\"clear-filter-li\">${clearFilterText}</li>\n      </ul>\n    </div>`;\n    $el.append(discipline);\n  }\n\n  renderMobileFilterIcon($el) {\n    let filterIcon = `<div class=\"vbw-competitions-filters--icon\">\n      <span class=\"vbw-filter-icon-btn\">\n        <svg viewBox=\"0 0 18 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path d=\"M7 12H11V10H7V12ZM0 0V2H18V0H0ZM3 7H15V5H3V7Z\"/>\n        </svg>\n      </span>\n      <span class=\"vbw-filter-active-count\" style=\"display: none;\"></span>\n    </div>`;\n    $el.append(filterIcon);\n  }\n\n  applyFilters() {\n    let _this = this;\n\n    let gender = _this.filters[\"filters-gender\"]?.toLowerCase();\n    let discipline = _this.filters[\"filters-discipline\"]?.toLowerCase();\n\n    _this.resetFilter(_this.competitions);\n    _this.filter(_this.competitions, gender, discipline);\n  }\n}\n","import fitty from \"fitty\";\nimport EventsHelper from \"../_helpers/events\";\n\nexport default class Fitty {\n  constructor() {\n    const _this = this;\n    _this.init();\n  }\n\n  init() {\n    const _this = this;\n\n    EventsHelper.OnAjaxModuleLoaded(() => {\n      _this.textFitWidth();\n    });\n\n    EventsHelper.OnContentReload(() => {\n      _this.textFitWidth();\n    });\n  }\n\n  textFitWidth() {\n    const selector = \"[data-text-fit-width]\";\n    if ($(selector).length === 0) return;\n\n    const maxFont = $(selector).attr(\"data-max-font\");\n    const minFont = $(selector).attr(\"data-min-font\");\n\n    fitty(selector, {\n      minSize: minFont ? +minFont : 12,\n      maxSize: maxFont ? +maxFont : 32,\n    }).forEach((word) => {\n      word.fit();\n    });\n  }\n}\n","import { isDesktop, isTouch } from \"../_helpers\";\nimport { throttle, delay } from \"lodash\";\n\nexport default class SecondaryNav {\n\n  constructor() {\n    const _this = this;\n\n    _this.navBarClass = \".fo-subheader__nav\";\n    _this.menuListClass = \".fo-subheader__nav .vbw-ul-list-wrap\";\n    _this.menuLogoClass = \".vbw-link-logo-wrap\";\n    _this.subCompName = \".vbw-sub-competition-wrapper\";\n    _this.menuItemClass = \".vbw-nav__item-more\";\n    _this.sideMenuClass = \".vbw-nav__item-more > .vbw-sec-submenu-list\";\n    _this.lastItemWidth = 0;\n\n    if ($(_this.navBarClass).length === 0) return;\n\n    if ($(\".vbw-ul-list-wrap\").length > 0) {\n      _this.menuListClass = \".vbw-ul-list-wrap\";\n    }\n\n    _this.init();\n  }\n\n  init() {\n    const _this = this;\n\n    // Handle secondary nav dropdown element\n    $(document).on(\"click\", function (e) {\n      requestAnimationFrame(() => {\n        setTimeout(() => {\n          const $elem = $(e.target);\n\n          // If clicked item is dropdown head & inside of More container\n          if ($elem.hasClass(\"vbw-sub-menu-link-wrap\") && $elem.parents('.vbw-nav__item-more .vbw-sec-submenu-list').length) {\n            e.preventDefault();\n\n            if ($elem.parents(\".vbw-nav__item-more .vbw-sec-submenu-list > .d3-o-nav__item\").hasClass(\"drop-more\")) {\n              $elem.parents(\".vbw-nav__item-more .vbw-sec-submenu-list > .d3-o-nav__item\").removeClass(\"drop-more\");\n            } else {\n              $elem.parents(\".vbw-nav__item-more .vbw-sec-submenu-list > .d3-o-nav__item\").addClass(\"drop-more\");\n            }\n          }\n          else if ($elem.hasClass(\"vbw-sub-menu-link-wrap\")) { // if outside of More container\n            e.preventDefault();\n\n            if ($elem.parents(`${_this.menuListClass} > .d3-o-nav__item`).hasClass(\"drop\")) {\n              _this.hideDropdown($elem);\n            } else {\n              _this.showDropdown($elem);\n            }\n          }\n          else {\n            _this.hideAnyOpenDropdown();\n          }\n\n        }, 0);\n      });\n    });\n\n    $(\".vbw-secondary-nav-links .vbw-ul-list-wrap\").on(\"scroll\", throttle(_this.hideAnyOpenDropdown.bind(this), 300));\n\n    // Update menu link items with sequence number\n    let i = 0;\n    $(_this.menuListClass).children().each(function () {\n      i++;\n      $(this).attr(\"data-index\", i);\n    });\n\n    // Add events to update Secondary nav\n    $(window).on(\"scroll resize\", throttle(_this.updateSecondaryNav.bind(this), 300));\n\n    // Run on load\n    delay(_this.updateSecondaryNav.bind(_this), 5000);\n  }\n\n  updateSecondaryNav() {\n    const _this = this;\n\n    const logoWidth = $(_this.menuLogoClass).length ? $(_this.menuLogoClass).outerWidth(true) : 0;\n    const beachCompName = $(_this.subCompName).length ? $(_this.subCompName).outerWidth(true) : 0;\n    const wd = _this.getNavWidths(logoWidth, beachCompName);\n\n    if (wd.contentWidth > wd.navWidth && (isDesktop() || !isTouch)) {\n      $(_this.menuItemClass).show();\n\n      const nodes = $(_this.menuListClass).children();\n      let widthTillNow = wd.isSticky ? logoWidth + wd.menuWidth : logoWidth + wd.menuWidth + beachCompName;\n      let moveToMenu = false;\n\n      for (let i = 0; i < nodes.length - 1; i++) {\n        const nodeWidth = $(nodes[i]).outerWidth(true);\n        widthTillNow = widthTillNow + nodeWidth;\n\n        if (moveToMenu) {\n          $(_this.sideMenuClass).prepend(nodes[i]);\n        } else if (widthTillNow > wd.navWidth) {\n          $(_this.sideMenuClass).prepend(nodes[i]);\n          _this.lastItemWidth = nodeWidth;\n          moveToMenu = true;\n        }\n      }\n\n      $(_this.sideMenuClass).children().sort(function (a, b) {\n        const aIndex = Number($(a).attr(\"data-index\"));\n        const bIndex = Number($(b).attr(\"data-index\"));\n        return ((aIndex < bIndex) ? -1 : ((aIndex > bIndex) ? 1 : 0));\n      }).appendTo($(_this.sideMenuClass));\n\n    }\n    else if ((wd.contentWidth + _this.lastItemWidth < wd.navWidth || !isDesktop()) && $(_this.sideMenuClass).children().length > 0) {\n      $(_this.sideMenuClass).children().first().insertBefore($(_this.menuItemClass));\n\n      if ($(_this.sideMenuClass).children().length === 0) {\n        $(_this.menuItemClass).hide();\n      } else {\n        _this.updateSecondaryNav();\n      }\n    }\n\n  }\n\n  getNavWidths(logoWidth, beachCompName) {\n    const _this = this;\n\n    const isSticky = $(\".vbw-secondary-nav\").hasClass(\"vbw-secondary-nav-sticky\");\n    const menuActualWidth = $(_this.menuListClass).length ? $(_this.menuListClass).get(0).scrollWidth : 0;\n    const contentWidth = isSticky ? logoWidth + menuActualWidth : logoWidth + beachCompName + menuActualWidth;\n    const navWidth = $(_this.navBarClass).length ? $(_this.navBarClass).outerWidth(true) : 0;\n    const menuWidth = $(\".vbw-nav__item-more\").length ? $(\".vbw-nav__item-more\").outerWidth(true) : 0;\n\n    return {\n      isSticky: isSticky,\n      contentWidth: contentWidth,\n      navWidth: navWidth,\n      menuWidth: menuWidth\n    }\n  }\n\n  hideDropdown($elem) {\n    const _this = this;\n    $elem.parents(`${_this.menuListClass} > .d3-o-nav__item`).removeClass(\"drop\");\n\n    if (!isDesktop()) {\n      $(\".vbw-secondary-nav-mobile-tray ul\").html(null);\n      $(\".vbw-secondary-nav-mobile-tray ul\").css(\"display\", \"none\");\n    }\n  }\n\n  hideAnyOpenDropdown() {\n    const _this = this;\n    $(`${_this.menuListClass} > .d3-o-nav__item`).each(function () {\n      $(this).removeClass(\"drop\");\n    });\n    $(\".vbw-secondary-nav-mobile-tray ul\").html(null);\n    $(\".vbw-secondary-nav-mobile-tray ul\").css(\"display\", \"none\");\n  }\n\n  showDropdown($elem) {\n    const _this = this;\n    $elem.parents(`${_this.menuListClass} > .d3-o-nav__item`).addClass(\"drop\");\n\n    if (!isDesktop()) {\n      $(\".vbw-secondary-nav-mobile-tray ul\").html($elem.siblings().html());\n      $(\".vbw-secondary-nav-mobile-tray ul\").css(\"left\", _this.getLeftPosition($elem));\n      $(\".vbw-secondary-nav-mobile-tray ul\").css(\"display\", \"block\");\n    }\n  }\n\n  getLeftPosition($elem) {\n    if (window.innerWidth < 768) {\n      return 0;\n    } else if (window.innerWidth < 1024 && window.innerWidth >= 768) {\n      return ($elem.offset().left - ($elem.width() * 0.5)) + \"px\";\n    } else {\n      return ($elem.offset().left - ($elem.width() * 1.5)) + \"px\";\n    }\n  }\n}\n","import { isTouch } from \"./_helpers\";\n\nimport SegmentHelper from \"./_helpers/segment\";\nimport Header from \"./_components/03-organisms/header-dropdown/header\";\nimport Carousels from \"./_modules/carousels\";\nimport Search from \"./_components/03-organisms/search-dropdown/search\";\nimport Tabs from \"./_modules/tabs\";\nimport StickyNav from \"./_components/03-organisms/sticky-nav/sticky-nav\";\nimport Accordion from \"./_modules/accordion\";\nimport GridCarousel from \"./_modules/grid-carousel\";\nimport Dropdown from \"./_modules/dropdown\";\nimport AjaxContentLoader from \"./_modules/ajax-content-loader\";\nimport CookieHelper from \"./_helpers/cookies\";\nimport DatetimeHelper from \"./_helpers/datetimeHelper\";\nimport UserFavouriteContent from \"./_modules/user-favourite-content\";\nimport Tooltip from \"./_modules/tooltip\";\nimport CompetitionsFilter from \"./_modules/competition-list/filter\";\nimport Fitty from \"./_modules/fitty\";\nimport SecondaryNav from \"./_modules/secondary-nav\";\nimport \"./core\";\n\nisTouch ? document.body.classList.add(\"is-touch\") : document.body.classList.add(\"no-touch\");\n\nconst GRIDCAROUSEL = new GridCarousel();\nconst SEGMENT = new SegmentHelper();\nconst HEADER = new Header();\nconst CAROUSELS = new Carousels();\nconst SEARCH = new Search();\nwindow.TABS = new Tabs();\nconst STICKYNAV = new StickyNav();\nconst ACCORDION = new Accordion();\nwindow.DROPDOWN = new Dropdown();\nconst AJAX_LOADER = new AjaxContentLoader();\nconst COOKIE = new CookieHelper();\nconst COMPETITIONSFILTER = new CompetitionsFilter();\nwindow.DATETIME = new DatetimeHelper();\nwindow.userFavContent = new UserFavouriteContent();\nwindow.TOOLTIP = new Tooltip();\nconst FITTY = new Fitty();\nconst SECONDARYNAV = new SecondaryNav();\n"],"names":["inProgress","dataWebpackPrefix","Methods","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","Object","keys","forEach","methodName","defineProperty","$","fn","value","writable","isObject","obj","constructor","extend","target","src","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","module","exports","type","deleteProps","object","e","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","o","prototype","call","slice","args","to","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","freeGlobal","freeSelf","self","root","Function","Symbol","getRawTag","objectToString","symToStringTag","toStringTag","g","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","test","objectProto","hasOwnProperty","nativeObjectToString","isOwn","tag","unmasked","result","debounce","func","wait","options","leading","trailing","TypeError","toNumber","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","leadingEdge","cancel","flush","trimmedEndIndex","reTrimStart","string","reWhitespace","charAt","baseGetTag","isObjectLike","_typeof","_regeneratorRuntime","__esModule","t","r","n","iterator","c","asyncIterator","u","define","configurable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","effectInit","effect","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","containerModifierClass","overwriteParamsResult","assign","originalParams","_s","slideShadows","slides","slideEl","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_arrayLikeToArray","arr","arr2","Array","effectTarget","effectParams","$slideEl","transformEl","createShadow","shadowClass","$shadowContainer","$shadowEl","toPropertyKey","String","_unsupportedIterableToArray","minLen","from","effectVirtualTransitionEnd","allSlides","activeIndex","$wrapperEl","virtualTranslate","$transitionEndTarget","eventTriggered","destroyed","animating","triggerEvents","isArray","isFunction","isLength","createElementIfNotDefined","checkProps","createElements","auto","element","$el","className","Warn","_window$console","console","warn","watchAddedNodes","_ref","_asyncToGenerator","_callee","immediate","throttle","initialElements","observer","_args","_context","MutationObserver","mutationsList","_step","elements","debouncedClbk","_iterator","_createForOfIteratorHelper","mutation","nodes","addedNodes","selfNodes","matches","innerNodes","reduce","b","concat","_toConsumableArray","err","observe","childList","subtree","_x","_x2","D3Core","init","_getPlugin","_init","_callee2","_this","_context2","launchPlugin","_el$dataset","_this2","plugin","names","dataset","vbwPlugin","_el$dataset$options","JSON","parse","_ref2","_callee3","pluginName","PluginClass","pluginInstance","_context3","getPlugin","t0","_x3","_callee4","_context4","default","_x4","D3","core","getInstance","webpackAsyncContext","req","__webpack_require__","code","ids","all","toPrimitive","Number","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","x","selector","x0","isTouch","MaxTouchPoints","msMaxTouchPoints","isDesktop","innerWidth","isMobile","isTablet","localLangVal","MSStream","match","lang","horizontalScrollTo","left","behavior","stubFalse","freeExports","freeModule","Buffer","isBuffer","freeProcess","process","nodeUtil","types","require","binding","EventsHelper","eventName","data","event","detail","dispatchEvent","Event","fromDate","toDate","Ctor","baseIsNative","getValue","baseIsArguments","propertyIsEnumerable","isArguments","baseIsTypedArray","baseUnary","nodeIsTypedArray","isTypedArray","typedArrayTags","isPrototype","nativeKeys","overArg","funcToString","support","getSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","get","gestures","calcSupport","arrayEach","baseEach","castFunction","collection","iteratee","array","baseForOwn","createBaseEach","baseFor","createBaseFor","fromRight","keysFunc","iterable","arrayLikeKeys","baseKeys","isArrayLike","baseTimes","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","reIsUint","eachFunc","identity","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","uid","coreJsData","maskSrcKey","exec","IE_PROTO","baseDelay","baseRest","overRest","setToString","start","otherArgs","baseSetToString","shortOut","constant","getNative","nativeNow","count","lastCalled","stamp","remaining","transitionEmit","runCallbacks","direction","step","previousIndex","emit","classesToSelector","classes","trim","prototypes","eventsEmitter","update","slide","loop","grabCursor","events","breakpoints","checkOverflow","images","extendedDefaults","Swiper","swipers","containerEl","newParams","device","browser","eventsListeners","eventsAnyListeners","modules","__modules__","allModulesParams","mod","extendParams","bind","once","swiperParams","passedParams","onAny","enabled","slidesGrid","snapGrid","slidesSizesGrid","isHorizontal","isVertical","realIndex","isBeginning","isEnd","previousTranslate","velocity","allowSlideNext","allowSlidePrev","touchEvents","desktop","touchEventsTouch","move","end","touchEventsDesktop","simulateTouch","touchEventsData","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","focusableElements","lastClickTime","clickTimeout","velocities","allowMomentumBounce","isTouchEvent","startMoving","allowClick","allowTouchMove","touches","startX","startY","currentX","currentY","diff","imagesToLoad","imagesLoaded","enable","setGrabCursor","disable","unsetGrabCursor","setProgress","minTranslate","maxTranslate","translateTo","updateActiveIndex","updateSlidesClasses","emitContainerClasses","_emitClasses","cls","getSlideClasses","slideClass","emitSlidesClasses","updates","slidesPerViewDynamic","view","exact","size","swiperSize","spv","centeredSlides","breakLoop","slideSize","swiperSlideSize","translateValue","rtlTranslate","newTranslate","translated","setBreakpoint","updateSize","updateSlides","updateProgress","freeMode","autoHeight","updateAutoHeight","slidesPerView","slideTo","watchOverflow","changeDirection","newDirection","needUpdate","currentDirection","width","height","changeLanguageDirection","rtl","mount","mounted","getWrapperSelector","wrapperClass","shadowRoot","res","getWrapper","wrapper","toLowerCase","wrongRTL","initialized","addClasses","loopCreate","preloadImages","initialSlide","loopedSlides","runCallbacksOnInit","attachEvents","destroy","deleteInstance","cleanStyles","detachEvents","loopDestroy","removeClasses","slideVisibleClass","slideActiveClass","slideNextClass","slidePrevClass","extendDefaults","newDefaults","defaults","installModule","use","m","prototypeGroup","protoMethod","_defineProperty","initBase","autoplay","hasAttribute","navigation","nextEl","prevEl","pagination","initMatches","getAttribute","initVbtvRails","spaceBetween","slidesOffsetBefore","slidesOffsetAfter","observeParents","a11y","slideRole","parentNode","initMatchesCalendar","initGallery","initHero","threshold","initCompetitionNav","initPackagesNav","clickable","slideToClickedSlide","observeSlideChildren","Z","deviceCached","getDevice","overrides","platform","ua","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","Resize","animationFrame","resizeHandler","orientationChangeHandler","resizeObserver","ResizeObserver","entries","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","Observer","observers","attach","WebkitMutationObserver","mutations","observerUpdate","attributes","characterData","containerParents","disconnect","splice","handler","priority","onceHandler","__emitterProxy","offAny","eventHandler","context","unshift","updateSlidesOffset","updateSlidesProgress","updateClickedSlide","getDirectionLabel","property","getDirectionPropertyValue","label","isVirtual","virtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","cssMode","gridEnabled","grid","rows","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","clientWidth","offsetWidth","floor","abs","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchSlidesProgress","backFaceHiddenClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","activeSlides","getSlideByIndex","visibleSlides","ceil","offsetHeight","swiperSlideOffset","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","slideFound","clickedSlide","clickedIndex","getSwiperTranslate","translateBounds","internal","preventInteractionOnTransition","isH","onTranslateToWrapperTransitionEnd","transitionStart","slideToLoop","slideNext","slidePrev","slideReset","slideToClosest","initial","indexAsNumber","isFinite","skip","normalizeSlideIndex","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToIndex","loopFix","slideDuplicateClass","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","loopedSlidesLimit","prependSlides","appendSlides","cloneNode","dummyEventAttached","dummyEventListener","capture","nested","domMethod","swiperMethod","passiveListeners","passive","onTouchStart","onTouchMove","onTouchEnd","preventClicks","preventClicksPropagation","onClick","onScroll","updateOnWindowResize","originalEvent","$targetEl","touchEventsTarget","which","button","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","swipeHandler","targetTouches","pageX","pageY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","preventDefault","swipeDirection","shouldPreventDefault","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","stopPropagation","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","touchEndTime","timeDiff","pathTree","currentPos","stopIndex","groupSize","increment","rewindFirstIndex","rewindLastIndex","rewind","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","getBreakpoint","isGridEnabled","breakpoint","breakpointsBase","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","fill","prop","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","isEnabled","currentHeight","innerHeight","clientHeight","points","point","minRatio","substr","sort","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","onload","onerror","isLocked","wasLocked","lastSlideIndex","lastSlideRightEdge","url","slidesPerGroupAuto","uniqueNavElements","updateOnImagesReady","loopPreventsSlide","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","moduleExtendParams","moduleParamName","moduleParams","Virtual","cssModeTimeout","renderSlide","cache","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","renderExternalUpdate","prependIndexes","appendIndexes","appendSlide","prependSlide","newActiveIndex","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","Keyboard","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","scrollLeft","swiperCoord","top","returnValue","Mousewheel","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","contains","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","normalize","positions","sign","ignoreWheelEvents","position","wasBeginning","wasEnd","sticky","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","releaseScroll","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","targetEl","isHidden","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Scrollbar","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","getBoundingClientRect","onDragMove","onDragEnd","snapOnRelease","activeListener","eventMethod","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","Parallax","parallax","setTransform","currentOpacity","currentScale","_swiper","parallaxEl","$parallaxEl","parallaxDuration","Zoom","zoom","maxRatio","toggle","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","scrollX","scrollY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","Lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","background","$pictureEl","sourceEl","$source","slideOriginalIndex","slideExist","amount","maxIndex","minIndex","nextSlide","prevSlide","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Controller","LinearSpline","binarySearch","guess","val","i1","i3","interpolate","removeSpline","controller","control","spline","inverse","by","byController","_t","controlled","multiplier","controlledTranslate","setControlledTranslate","getInterpolateFunction","setControlledTransition","A11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","includes","isActive","isVisible","sourceCapabilities","firesTouchEvents","scrollTop","classList","$containerEl","repeat","round","random","getRandomNumber","live","addElLive","updateNavigation","bulletEl","updatePagination","History","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","HashNavigation","watchState","onHashChange","newHash","newIndex","setHash","Autoplay","run","running","paused","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","_clientLeft","clientLeft","prevIndex","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","EffectCube","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","$cubeShadowEl","wrapperRotate","slideAngle","tx","ty","tz","shadowAngle","sin","scale1","scale2","zFactor","EffectFlip","flipEffect","limitRotation","rotateY","rotateX","zIndex","EffectCoverflow","coverflowEffect","rotate","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","EffectCards","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","Dom7","items","super","proto","makeReactive","arrayFlat","arrayFilter","toCreate","tempParent","innerHTML","qsa","uniqueArray","arrayUnique","add","attrs","attrName","removeAttribute","transitionDuration","eventType","targetSelector","listener","handleLiveEvent","eventData","dom7EventData","k","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","handlers","dom7proxy","evt","bubbles","dataIndex","dom","fireCallBack","includeMargins","box","clientTop","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","els","newChild","tempDiv","firstChild","appendChild","insertBefore","nextElementSibling","nextEls","previousElementSibling","prevEls","foundElements","removeChild","noTrigger","shortcut","offsetLeft","offsetTop","translatesDiff","activeSlide","previousRealIndex","previousSnapIndex","newProgress","perGroup","normalizedSnapGrid","prevSnap","prevSnapIndex","currentSnap","moving","cursor","onResize","stopImmediatePropagation","suffixes","prefix","resultClasses","item","prepareClasses","currentSrc","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","row","groupIndex","slideIndexInGroup","columnsInGroup","order","Manipulation","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","indexToRemove","EffectFade","fadeEffect","crossFade","slideOpacity","onFilterElemClick","$elem","filterId","filterHeader","filters","siblings","clearFilterDesktop","$parent","applyFilters","applyCompetitionFilters","resetFilterMobile","onFilterHeadClick","updateFilterCounter","show","_extends","source","w","DrawState","IDLE","DIRTY_CONTENT","DIRTY_LAYOUT","DIRTY","fitties","redrawFrame","requestRedraw","redraw","dirty","active","redrawAll","styleComputed","computeStyle","shouldPreStyle","applyStyle","fittiesToRedraw","shouldRedraw","calculateStyles","markAsClean","dispatchFitEvent","availableWidth","currentWidth","scrollWidth","previousFontSize","currentFontSize","minSize","maxSize","whiteSpace","multiLine","preStyle","preStyleTestCompleted","originalStyle","cssText","oldValue","newValue","scaleFactor","fit","observeMutations","newbie","subscribe","unsubscribe","defaultOptions","resizeDebounce","onWindowResized","fitty","observeWindowDelay","observeWindow","fitAll","fittyCreate","fittyOptions","publicFitties","unfreeze","freeze","nl","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","getter","definition","chunkId","promises","miniCssF","script","needAttach","scripts","charset","nc","onScriptComplete","doneFns","head","nmd","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","some","chunkLoadingGlobal","CookieHelper","secondsToExp","ex","setTime","toGMTString","cookieDomain","cookie","escape","SegmentHelper","loadSegmentScript","analytics","initialize","invoked","methods","factory","_loadOptions","_writeKey","SNIPPET_VERSION","referrer","cookies","_sgmtk","page","loadUser","identify","userObj","track","eventtype","country3l","ajax","country2l","cntrs","_loop","c2l","mapUserObjectFromCookies","firstName","sanitize","email","country","birthday","agreedToPrivacyPolicy","agreedToTermsAndConditions","favoriteCountryTeams","favoriteDisciplines","unescape","favoritePlayers","lastName","appResidentMarketingAllowed","billingCountryCode","segmentProperties","decodeURI","Header","activeItem","menuSlider","menuBtn","toggleMenu","_each","menuLinks","link","onMenuLinkClick","menuSublinkTitle","onMenuBackLinkClick","resizeTimeout","Carousels","OnAjaxModuleLoaded","OnReloadCarousels","carousel","list","createGallery","paginationWrapper","photoWrapper","photoWrapperCaption","fullscreenWrapper","paginationCurrent","paginationTotal","photoCaption","photoDescription","paginationEl","setPagination","setInfo","innerText","caption","carousels","initCarousel","handleEvents","ready","elem","swp","hover","jQuery","Search","searchField","searchOpener","toggleSearch","searchCloser","Tabs","On","tabid","$tabsBtns","tabId","updatePageUrl","showContent","loadFirstContent","$hashBtn","hashid","$activeBtn","first","$selectedContent","Trigger","newurl","StickyNav","e1","e3","e4","issticky","e2","lastScrollTop","extraTopModules","primarynav","header","maincontent","innermodules","innermodule","maincontentFirstChild","sectionHeaderV1","sectionHeaderV2","secondarynavV2","primarynavLev2","navPrimaryHeight","navPrimaryLev2Height","navSecondaryV2Height","extraTopModulesBottom","navSecondaryV2HeightNew","extraTopModulesRect","bottom","st","pageYOffset","ele","paddingTop","stickyNavInit","_throttle","Accordion","initMenu","accordion","accordionPanels","showPanel","panel","GridCarousel","parentItem","Dropdown","dropdownList","toggleOpenDropdown","currentTarget","AjaxContentLoader","loaders","loader","IntersectionObserver","handleIntersection","entry","isIntersecting","AjaxModuleLoaded","abbreviation","TranslationHelper","wordTag","TRANSLATIONS","word","getWordTag","DatetimeHelper","disableDateAge","dt","onDateTimeAge","onMyTime","datesToBeFormatted","date","normalizeDate","renderedDate","getDateTimeAge","diffMs","diffYears","getAbbreviation","diffMonths","diffWeeks","diffDays","diffHrs","diffMins","TBD_SCHEDULEINFO_VALUE","utcTimeAttr","utcDateTime","myDateHours","getHours","myDateMinutes","getMinutes","tzAbbr","timestamp_diff","getDate","mytime_txt","$this","getMyTime","dateStr","substring","dateTimestamp","dateInput","UserFavouriteContent","favouriteConfig","$wrapper","$promos","$stories","$videos","loadContent","config","user","getUser","hasFavourites","loadFavouritesContent","noFavouritesPromoLibraryURL","applyURLReplacements","anonymousPromoLibraryURL","_url","teams","team","teamStoriesUrl","favouriteTeamStoriesBaseURL","teamVideosUrl","favouriteTeamVideosBaseURL","appendFavouritesContentLibrary","players","player","playerStoriesUrl","favouritePlayerStoriesBaseURL","playerVideosUrl","favouritePlayerVideosBaseURL","Tooltip","tooltips","tooltip","tooltipUrl","loadTooltipContent","content","contentCache","headers","resp","CompetitionsFilter","competitions","_this$getFiltersData","getFiltersData","_this$getFiltersData2","displns","genders","displnText","genderText","clearFilterText","$elMob","$filters","$filterButtons","$dropdownTexts","$filterIconBtn","$mobileFilterWrap","renderMobileFilterIcon","renderGenderFilter","renderDisciplineFilter","handleMobileEvents","resetFilter","gendersDummy","gt","gender","genderTrans","_step2","_iterator2","discipline","_step3","_iterator3","$item","lis","_step4","_iterator4","_step5","_iterator5","_this$filters$filters","_this$filters$filters2","Fitty","textFitWidth","OnContentReload","maxFont","minFont","SecondaryNav","navBarClass","menuListClass","menuLogoClass","subCompName","menuItemClass","sideMenuClass","lastItemWidth","hideDropdown","showDropdown","hideAnyOpenDropdown","updateSecondaryNav","_delay","logoWidth","beachCompName","wd","getNavWidths","contentWidth","navWidth","widthTillNow","isSticky","menuWidth","moveToMenu","nodeWidth","aIndex","bIndex","appendTo","menuActualWidth","getLeftPosition","TABS","DROPDOWN","DATETIME","userFavContent","TOOLTIP"],"sourceRoot":""}