{"version":3,"file":"scripts/main.js","mappings":"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","sources":["webpack://Bearbone/./node_modules/es6-promise/auto.js","webpack://Bearbone/./node_modules/es6-promise/dist/es6-promise.js","webpack://Bearbone/./wwwroot/typescript/extensions/array.ts","webpack://Bearbone/./wwwroot/typescript/extensions/number.ts","webpack://Bearbone/./wwwroot/typescript/extensions/object.ts","webpack://Bearbone/./wwwroot/typescript/extensions/string.ts","webpack://Bearbone/./wwwroot/typescript/polyfills/polyfills.ts","webpack://Bearbone/webpack/bootstrap","webpack://Bearbone/webpack/runtime/global","webpack://Bearbone/./wwwroot/typescript/modules/url.ts","webpack://Bearbone/./wwwroot/typescript/components/navigation.ts","webpack://Bearbone/./node_modules/dom7/node_modules/ssr-window/dist/ssr-window.esm.js","webpack://Bearbone/./node_modules/dom7/dist/dom7.modular.js","webpack://Bearbone/./node_modules/ssr-window/dist/ssr-window.esm.js","webpack://Bearbone/./node_modules/swiper/dist/js/swiper.esm.bundle.js","webpack://Bearbone/./wwwroot/typescript/components/carousel.ts","webpack://Bearbone/./node_modules/alpinejs/dist/module.esm.js","webpack://Bearbone/./wwwroot/typescript/modules/ajax.ts","webpack://Bearbone/./wwwroot/typescript/helpers/animations.ts","webpack://Bearbone/./wwwroot/typescript/extensions/htmlelement.ts","webpack://Bearbone/./wwwroot/typescript/modules/lightbox.ts","webpack://Bearbone/./wwwroot/typescript/components/maps/googlemaps.ts","webpack://Bearbone/./wwwroot/typescript/components/maps/bingmaps.ts","webpack://Bearbone/./wwwroot/typescript/components/maps/googlestaticmaps.ts","webpack://Bearbone/./wwwroot/typescript/components/maps.ts","webpack://Bearbone/./wwwroot/typescript/helpers/cookie.ts","webpack://Bearbone/./wwwroot/typescript/components/privacypolicy.ts","webpack://Bearbone/./wwwroot/typescript/helpers/form.ts","webpack://Bearbone/./wwwroot/typescript/extensions/form.ts","webpack://Bearbone/./wwwroot/typescript/modules/validation/validators.ts","webpack://Bearbone/./wwwroot/typescript/modules/validation/validation.ts","webpack://Bearbone/./wwwroot/typescript/components/forms.ts","webpack://Bearbone/./wwwroot/typescript/site.ts","webpack://Bearbone/./wwwroot/typescript/components/animatedcounter.ts","webpack://Bearbone/./wwwroot/typescript/index.ts"],"sourcesContent":["// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","Array.firstBy = function (fn) {\r\n let tb = function (y) {\r\n let x = this;\r\n let f = function (a, b) {\r\n return x(a, b) || y(a, b);\r\n };\r\n f.thenBy = tb;\r\n return f;\r\n };\r\n let fb = fn;\r\n fb.thenBy = tb;\r\n return fb;\r\n};\r\nArray.prototype.first = function () {\r\n return this.length > 0 ? this[0] : null;\r\n};\r\nArray.prototype.last = function () {\r\n return this.length > 0 ? this[this.length - 1] : null;\r\n};\r\nArray.prototype.sortBy = function (key, type, reverse) {\r\n return this.sort(function (a, b) {\r\n let x = a[key];\r\n let y = b[key];\r\n switch (type) {\r\n case \"int\":\r\n x = parseInt(x, 10);\r\n y = parseInt(y, 10);\r\n break;\r\n default:\r\n x = x.toLowerCase();\r\n y = y.toLowerCase();\r\n break;\r\n }\r\n return ((x > y) - (y > x)) * (!reverse ? 1 : -1);\r\n });\r\n};\r\nArray.prototype.any = function (fn) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (fn(this[i], i))\r\n return true;\r\n }\r\n return false;\r\n};\r\nArray.prototype.each = function (fn) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (fn(this[i], i) === false)\r\n break;\r\n }\r\n};\r\nArray.prototype.firstOrDefault = function (fn, defaultValue) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (fn(this[i], i)) {\r\n return this[i];\r\n }\r\n }\r\n return defaultValue;\r\n};\r\nArray.prototype.where = function (fn) {\r\n var arr = [];\r\n for (var i = 0; i < this.length; i++) {\r\n if (fn(this[i], i)) {\r\n arr.push(this[i]);\r\n }\r\n }\r\n return arr;\r\n};\r\nArray.prototype.select = function (fn) {\r\n var arr = [];\r\n for (var i = 0; i < this.length; i++) {\r\n arr.push(fn(this[i], i));\r\n }\r\n return arr;\r\n};\r\nArray.prototype.remove = function (fn) {\r\n var arr = [];\r\n for (var i = 0; i < this.length; i++) {\r\n if (!fn(this[i], i))\r\n arr.push(this[i]);\r\n }\r\n return arr;\r\n};\r\nArray.prototype.take = function (n) {\r\n if (arguments.length === 0)\r\n throw \"number is undefined\";\r\n n = n > this.length ? this.length : n;\r\n var arr = [];\r\n for (var i = 0; i < n; i++) {\r\n arr.push(this[i]);\r\n }\r\n return arr;\r\n};\r\nArray.prototype.skip = function (n) {\r\n if (arguments.length === 0)\r\n throw \"number is undefined\";\r\n n = n > this.length ? this.length : n;\r\n var arr = [];\r\n for (let i = n; i < this.length; i++) {\r\n arr.push(this[i]);\r\n }\r\n return arr;\r\n};\r\n","Number.prototype.addVat = function (percent) {\r\n return this * ((percent / 100) + 1);\r\n};\r\nNumber.prototype.toFixedNumber = function (precision) {\r\n let rounder = Math.pow(10, precision);\r\n return Math.round(this * rounder) / rounder;\r\n};\r\nNumber.prototype.toPrettyNumber = function (precision, locale) {\r\n return this.toLocaleString(locale ? locale : 'sv-SE', { useGrouping: true, maximumFractionDigits: precision }).replace(\",\", \".\");\r\n};\r\nNumber.prototype.countDecimals = function () {\r\n if (Math.floor(this.valueOf()) === this.valueOf())\r\n return 0;\r\n var str = this.toString();\r\n if (str.indexOf(\".\") !== -1 && str.indexOf(\"-\") !== -1) {\r\n return str.split(\"-\")[1] || 0;\r\n }\r\n else if (str.indexOf(\".\") !== -1) {\r\n return str.split(\".\")[1].length || 0;\r\n }\r\n else if (str.indexOf(\",\") !== -1) {\r\n return str.split(\",\")[1].length || 0;\r\n }\r\n return str.split(\"-\")[1] || 0;\r\n};\r\n","Object.isDate = function (obj) {\r\n return obj && Object.prototype.toString.call(obj) === \"[object Date]\" && !isNaN(obj);\r\n};\r\nObject.isDefined = function (obj) {\r\n return typeof obj != \"undefined\" && obj != null;\r\n};\r\nObject.isArray = function (obj) {\r\n return typeof obj === \"object\" && obj instanceof Array;\r\n};\r\nObject.isObject = function (obj) {\r\n return typeof obj === \"object\" && (Array.isArray(obj) === false);\r\n};\r\nObject.isNumber = function (obj) {\r\n return typeof obj === \"number\";\r\n};\r\nObject.isString = function (obj) {\r\n return typeof obj === \"string\";\r\n};\r\nObject.isBoolean = function (obj) {\r\n return typeof obj === \"boolean\";\r\n};\r\nObject.isEmpty = function (obj) {\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop))\r\n return false;\r\n }\r\n return JSON.stringify(obj) === JSON.stringify({});\r\n};\r\nObject.toArray = function (obj) {\r\n if (!Array.isArray(obj))\r\n return [obj];\r\n return obj;\r\n};\r\nObject.merge = function (a, b) {\r\n a = Object.clone(a);\r\n b = Object.clone(b);\r\n let c = a;\r\n //merge recursively b on c\r\n for (let p in b) {\r\n if (b.hasOwnProperty(p)) {\r\n if (Object.isObject(b[p])) {\r\n if (!a[p]) {\r\n a[p] = {};\r\n }\r\n c[p] = Object.merge(a[p], b[p]);\r\n }\r\n else if (Object.isArray(b[p])) {\r\n c[p] = a[p] ? a[p].concat(b[p]) : b[p];\r\n }\r\n else {\r\n c[p] = b[p];\r\n }\r\n }\r\n }\r\n return c;\r\n};\r\nObject.clone = function (a) {\r\n var c = {};\r\n for (var p in a) {\r\n if (a.hasOwnProperty(p)) {\r\n c[p] = _clone(a[p]);\r\n }\r\n }\r\n function _clone(x) {\r\n if (Object.isObject(x)) {\r\n var temp = {};\r\n for (var p in x) {\r\n if (x.hasOwnProperty(p)) {\r\n temp[p] = _clone(x[p]);\r\n }\r\n }\r\n return temp;\r\n }\r\n else if (Object.isArray(x)) {\r\n var arr = [];\r\n for (var p in x) {\r\n if (x.hasOwnProperty(p)) {\r\n arr.push(_clone(x[p]));\r\n }\r\n }\r\n return arr;\r\n }\r\n else {\r\n return x;\r\n }\r\n }\r\n return c;\r\n};\r\nObject.param = function (values, prefix) {\r\n let str = [];\r\n for (let key in values) {\r\n let val = values[key];\r\n let k = key;\r\n if (prefix) {\r\n if (values instanceof Array) {\r\n k = prefix + \"[]\";\r\n }\r\n else {\r\n k = prefix + \"[\" + key + \"]\";\r\n }\r\n }\r\n switch (typeof val) {\r\n case 'string':\r\n case 'number':\r\n str[str.length] = encodeURIComponent(k) + '=' + encodeURIComponent(val.toString());\r\n break;\r\n case 'object':\r\n str[str.length] = Object.param(val, k);\r\n }\r\n }\r\n return str.join(\"&\");\r\n};\r\n","String.format = function (input, ...args) {\r\n return input.replace(/{(\\d+)}/g, function (match, number) {\r\n return typeof args[number] != 'undefined' ? args[number] : match;\r\n });\r\n};\r\nString.isNullOrEmpty = function (val) {\r\n if (val && val != null && val.length > 0)\r\n return false;\r\n return true;\r\n};\r\nString.isNullOrWhitespace = function (val) {\r\n if (!String.isNullOrEmpty(val) && val != \" \")\r\n return false;\r\n return true;\r\n};\r\nString.prototype.format = function (...args) {\r\n return String.format.call(this, this, args);\r\n};\r\nString.prototype.trunc = function (length, wordBoundary) {\r\n let isLong = this.length > length;\r\n let text = isLong ? this.substr(0, length - 1) : this;\r\n text = wordBoundary && isLong ? text.substr(0, text.lastIndexOf(' ')) : text;\r\n return isLong ? text + '…' : text;\r\n};\r\nString.prototype.isNullOrEmpty = function () {\r\n return String.isNullOrEmpty(this);\r\n};\r\nString.prototype.isNullOrWhitespace = function (val) {\r\n return String.isNullOrWhitespace(this);\r\n};\r\nString.prototype.parseJSONDate = function () {\r\n return new Date(parseInt(this.substr(6, 13), 10));\r\n};\r\nString.prototype.replaceAll = function (token, newToken, ignoreCase) {\r\n let str = this + \"\";\r\n let i = -1;\r\n if (typeof token === \"string\") {\r\n if (ignoreCase) {\r\n while ((i = str.toLowerCase().indexOf(token, i >= 0 ? i + newToken.length : 0)) !== -1) {\r\n str = str.substring(0, i) +\r\n newToken +\r\n str.substring(i + token.length);\r\n }\r\n }\r\n else {\r\n return this.split(token).join(newToken);\r\n }\r\n }\r\n return str;\r\n};\r\nString.prototype.toClassName = function () {\r\n return this.replace(/[^a-z0-9]/g, function (s) {\r\n let c = s.charCodeAt(0);\r\n if (c == 32)\r\n return '-';\r\n if (c >= 65 && c <= 90)\r\n return '_' + s.toLowerCase();\r\n return '__' + ('000' + c.toString(16)).slice(-4);\r\n });\r\n};\r\nString.prototype.trimChar = function (char) {\r\n let regexp = new RegExp(\"^[\" + char + \"]+|[\" + char + \"]+$\", \"igm\");\r\n return this.replace(regexp, \"\");\r\n};\r\nString.prototype.toHTML = function () {\r\n let support = false;\r\n try {\r\n let parser = new DOMParser();\r\n parser.parseFromString('x', 'text/html');\r\n support = true;\r\n }\r\n catch (err) {\r\n support = false;\r\n }\r\n if (support) {\r\n let parser = new DOMParser();\r\n let doc = parser.parseFromString(this, 'text/html');\r\n return doc.body.firstChild;\r\n }\r\n let dom = document.createElement('div');\r\n dom.innerHTML = this;\r\n return dom;\r\n};\r\n","(function (ElementProto) {\r\n if (typeof ElementProto.matches !== 'function') {\r\n ElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\r\n var element = this;\r\n var elements = (element.document || element.ownerDocument).querySelectorAll(selector);\r\n var index = 0;\r\n while (elements[index] && elements[index] !== element) {\r\n ++index;\r\n }\r\n return Boolean(elements[index]);\r\n };\r\n }\r\n if (typeof ElementProto.closest !== 'function') {\r\n ElementProto.closest = function closest(selector) {\r\n var element = this;\r\n while (element && element.nodeType === 1) {\r\n if (element.matches(selector)) {\r\n return element;\r\n }\r\n element = element.parentNode;\r\n }\r\n return null;\r\n };\r\n }\r\n})(window.Element.prototype);\r\n","// 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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\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})();","export class UrlParser {\r\n constructor(url) {\r\n this.parser = document.createElement('a');\r\n this.parser.href = url;\r\n this.Protocol = this.parser.protocol;\r\n this.HostName = this.parser.hostname;\r\n this.Port = this.parser.port;\r\n this.PathName = this.parser.pathname;\r\n this.Search = this.parser.search;\r\n this.Hash = this.parser.hash;\r\n this.Host = this.parser.host;\r\n }\r\n get Url() {\r\n return this.parser.href;\r\n }\r\n get Protocol() {\r\n return this.parser.protocol;\r\n }\r\n set Protocol(value) {\r\n this.parser.protocol = value;\r\n }\r\n get HostName() {\r\n return this.parser.hostname;\r\n }\r\n set HostName(value) {\r\n this.parser.hostname = value;\r\n }\r\n get Port() {\r\n return this.parser.port;\r\n }\r\n set Port(value) {\r\n this.parser.port = value;\r\n }\r\n get PathName() {\r\n return this.parser.pathname;\r\n }\r\n set PathName(value) {\r\n this.parser.pathname = value;\r\n }\r\n get Search() {\r\n return this.parser.search;\r\n }\r\n set Search(value) {\r\n this.parser.search = value;\r\n }\r\n get Hash() {\r\n return this.parser.hash;\r\n }\r\n set Hash(value) {\r\n this.parser.hash = value;\r\n }\r\n get Host() {\r\n return this.parser.host;\r\n }\r\n set Host(value) {\r\n this.parser.host = value;\r\n }\r\n get Params() {\r\n return this.stringToParams(this.Search);\r\n }\r\n GetParams(key) {\r\n let items = [];\r\n this.Params.each(param => {\r\n if (param.Key == key) {\r\n items.push(param);\r\n }\r\n });\r\n return items;\r\n }\r\n GetParam(key) {\r\n let items = this.GetParams(key);\r\n return items.length > 0 ? items[0] : null;\r\n }\r\n SetParam(key, value, replace = true) {\r\n if (replace) {\r\n this.RemoveParam(key);\r\n }\r\n let prefix = this.Search.indexOf(\"?\") > -1 ? \"&\" : \"?\";\r\n this.Search = this.Search + prefix + key + \"=\" + value;\r\n }\r\n RemoveParam(key) {\r\n let temp = this.Params;\r\n for (let i = temp.length - 1; i >= 0; i--) {\r\n if (temp[i].Key == key) {\r\n temp.splice(i, 1);\r\n }\r\n }\r\n this.Search = this.paramsToString(temp);\r\n }\r\n stringToParams(value) {\r\n let regex = new RegExp(/(?:\\?|&)([\\w\\d]+)(?:=)([^&=$]+)/gm);\r\n let matches = [];\r\n let match;\r\n while ((match = regex.exec(value)) != null) {\r\n let key = match[1];\r\n let val = decodeURIComponent(match[2].replace(/\\+/g, ' '));\r\n matches.push(new UrlParam(key, val));\r\n }\r\n return matches;\r\n }\r\n paramsToString(params) {\r\n let output = \"\";\r\n for (let i = 0; i < params.length; i++) {\r\n output += i == 0 ? \"?\" : \"&\";\r\n output += params[i].Key + \"=\" + params[i].Value;\r\n }\r\n return output;\r\n }\r\n}\r\nexport class UrlParam {\r\n constructor(key, value) {\r\n this.Key = key;\r\n this.Value = value;\r\n }\r\n get Values() {\r\n return this.Value.split(\",\");\r\n }\r\n}\r\n","import { UrlParser } from \"../modules/url\";\r\nexport default class Navigation {\r\n constructor(options) {\r\n this.options = Object.assign({\r\n selector: 'nav.main',\r\n activeClass: 'active',\r\n dropdownSelector: '.dropdown'\r\n }, this.options);\r\n document.addEventListener('DOMContentLoaded', () => { this.init(); });\r\n }\r\n init() {\r\n this.setActive();\r\n }\r\n setActive() {\r\n var navList = document.querySelectorAll(this.options.selector);\r\n for (var i = 0; i < navList.length; i += 1) {\r\n var linkList = navList[i].querySelectorAll('li.nav-item');\r\n var url = new UrlParser(location.href);\r\n for (var q = 0; q < linkList.length; q += 1) {\r\n let link = linkList[q].querySelector('a.nav-link');\r\n let linkUrl = link && link.getAttribute(\"href\") != \"\" ? link.pathname : \"\";\r\n if (linkUrl.toLowerCase() == url.PathName.toLowerCase()) {\r\n this.toggleAncestor(linkList[q], true);\r\n linkList[q].classList.add(this.options.activeClass);\r\n }\r\n }\r\n }\r\n }\r\n toggleAncestor(el, recursive = false) {\r\n this.options.debug && console.log(\"toggleAncestor\", el, \"Recursive: \" + recursive);\r\n var ancestor = el.closest(this.options.dropdownSelector);\r\n this.options.debug && (ancestor != null ? console.log(\"Ancestor found: \", ancestor) : console.log(\"Ancestor not found\"));\r\n if (ancestor !== null) {\r\n ancestor.classList.add(this.options.activeClass);\r\n if (recursive) {\r\n this.toggleAncestor(ancestor.parentElement, true);\r\n }\r\n }\r\n }\r\n}\r\n","/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\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 }\n\n // Set attrs\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 // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\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 // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\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 return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\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 return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\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 if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\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 function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\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 return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\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 return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\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}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\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}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\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}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\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 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// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\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 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 return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\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}\nfunction insertAfter(selector) {\n const after = $(selector);\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}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\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 return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\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 return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\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 el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\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 let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\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 if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\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 if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\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 /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\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 if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\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\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\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 { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\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 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 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(' ');\nfunction eventShortcut(name, ...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]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","/**\n * Swiper 4.5.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://www.idangero.us/swiper/\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 22, 2019\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition$1,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd$1,\n outerWidth,\n outerHeight,\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 remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\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;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\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 if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n const testDiv = document.createElement('div');\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!(window.navigator.pointerEnabled || window.PointerEvent || ('maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints > 0)),\n prefixedPointerEvents: !!window.navigator.msPointerEnabled,\n\n transition: (function checkTransition() {\n const style = testDiv.style;\n return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style);\n }()),\n transforms3d: (window.Modernizr && window.Modernizr.csstransforms3d === true) || (function checkTransforms3d() {\n const style = testDiv.style;\n return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style);\n }()),\n\n flexbox: (function checkFlexbox() {\n const style = testDiv.style;\n const styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' ');\n for (let i = 0; i < styles.length; i += 1) {\n if (styles[i] in style) return true;\n }\n return false;\n }()),\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nconst Browser = (function Browser() {\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 return {\n isIE: !!window.navigator.userAgent.match(/Trident/g) || !!window.navigator.userAgent.match(/MSIE/g),\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\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 (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n handler.apply(self, args);\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\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] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === 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) return self;\n let events;\n let data;\n let context;\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 const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, 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\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide\n .css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n )\n .attr('data-swiper-column', column)\n .attr('data-swiper-row', row);\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\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 if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\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) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (!Support.flexbox || params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.css({ marginLeft: `${spaceBetween}px` });\n else slides.css({ marginRight: `${spaceBetween}px` });\n } else slides.css({ marginBottom: `${spaceBetween}px` });\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 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 Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\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 }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size)\n || (slideAfter > 0 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\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 }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\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 Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\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 }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n snapIndex = Math.floor(activeIndex / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n}\n\nfunction updateClickedSlide (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, 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.virtualTranslate) {\n if (Support.transforms3d) $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n else $wrapperEl.transform(`translate(${x}px, ${y}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n swiper.$wrapperEl.transition(duration);\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex } = swiper;\n swiper.animating = false;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n let snapIndex = Math.floor(slideIndex / params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n\n if (speed === 0 || !Support.transition) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\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 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map(val => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n const prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let index = swiper.activeIndex;\n const snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.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\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\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 $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n const {\n params, activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (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 if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked)) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\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 if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\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 newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\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 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 if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\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 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 && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: window.cordova || window.phonegap,\n phonegap: window.cordova || window.phonegap,\n };\n\n const windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n const 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\n\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\n }\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.iphone = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n const osVersionArr = device.osVersion.split('.');\n const metaViewport = document.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\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;\n if (params.noSwiping && $(e.target).closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$(e).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;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($(e.target).is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== e.target\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\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 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 if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\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 }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\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) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) > 300) {\n if (data.clickTimeout) clearTimeout(data.clickTimeout);\n data.clickTimeout = Utils.nextTick(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.emit('click', e);\n }, 300);\n }\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n if (data.clickTimeout) clearTimeout(data.clickTimeout);\n swiper.emit('doubleTap', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.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 data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\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 return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\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 if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\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 newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\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 } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n 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.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - 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 // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + params.slidesPerGroup);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n const newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !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 // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n {\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n target.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.addEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const target = params.touchEventsTarget === 'container' ? el : wrapperEl;\n const capture = !!params.nested;\n\n // Touch Events\n {\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n target.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n target.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n target.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n target.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n target.removeEventListener('click', swiper.onClick, true);\n }\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Set breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\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 Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\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 }\n}\n\nfunction getBreakpoint (breakpoints) {\n const swiper = this;\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n const points = [];\n Object.keys(breakpoints).forEach((point) => {\n points.push(point);\n });\n points.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n for (let i = 0; i < points.length; i += 1) {\n const point = points[i];\n if (swiper.params.breakpointsInverse) {\n if (point <= window.innerWidth) {\n breakpoint = point;\n }\n } else if (point >= window.innerWidth && !breakpoint) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (!Support.flexbox) {\n suffixes.push('no-flexbox');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n // WP8 Touch Events Fix\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n suffixes.push(`wp8-${params.direction}`);\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsInverse: false,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n centeredSlides: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\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: true,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // 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\n // Callbacks\n runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n const $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return 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 formElements: 'input, select, option, textarea, button, video',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\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 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 for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\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 let translated;\n if (swiper.params.freeMode) {\n setTranslate();\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 if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n if (currentDirection === 'vertical') {\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}vertical wp8-vertical`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}wp8-${newDirection}`);\n }\n }\n if (currentDirection === 'horizontal') {\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}horizontal wp8-horizontal`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n if ((Browser.isIE || Browser.isEdge) && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}wp8-${newDirection}`);\n }\n }\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index')\n .removeAttr('data-swiper-column')\n .removeAttr('data-swiper-row');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.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 get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\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 swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\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\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\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\n Utils.extend(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 if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\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 swiper.updateProgress();\n return;\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 for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\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 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 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 renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
${slide}
`);\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 appendSlide(slides) {\n const swiper = this;\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 swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\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 newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cache[cachedIndex];\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\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 if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\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 if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40))) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38))) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\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 = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [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 if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((kc === 39 && !rtl) || (kc === 37 && rtl)) swiper.slideNext();\n if ((kc === 37 && !rtl) || (kc === 39 && rtl)) swiper.slidePrev();\n } else {\n if (kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 40) swiper.slideNext();\n if (kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n event: (function getEvent() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n }()),\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\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 if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\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 handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (!swiper.mouseEntered && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.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;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n 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\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) return true;\n }\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\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.freeModeSticky) {\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest();\n }, 300);\n }\n // Emit event\n swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n enable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n if (!Mousewheel.event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(Mousewheel.event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n lastScrollTime: Utils.now(),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\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 if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\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 }\n // Types\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 if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\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}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${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 Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\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', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\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 if (swiper.isHorizontal()) {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n } else {\n $dragEl.transform(`translateX(${newPos}px)`);\n }\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n if (Support.transforms3d) {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n } else {\n $dragEl.transform(`translateY(${newPos}px)`);\n }\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\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 if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const { $el, dragSize, trackSize } = scrollbar;\n\n let pointerPosition;\n if (swiper.isHorizontal()) {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n } else {\n pointerPosition = ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n }\n let positionRatio;\n positionRatio = ((pointerPosition) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\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 let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\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 },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\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 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 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 setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]')\n .each((index, 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\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n 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 },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest('.swiper-slide');\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\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 zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) 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 onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = 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 = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.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 if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\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\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 && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\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 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 if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\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\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\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;\n\n // Fix duration\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\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\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\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\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 zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\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\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\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 out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.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 },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\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 create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n 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 velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\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\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\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\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 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 if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\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 if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\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 return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = 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);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n LinearSpline: 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 while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // 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 let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\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 if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // 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 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 c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\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 setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\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};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\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 if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\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 },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.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 { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\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 = History.slugify(slide.attr('data-history'));\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\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\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 setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\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 } 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 }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\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 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 if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\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 if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\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 if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\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 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 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 if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\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 if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\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 $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-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 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\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 const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\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 (swiper.params.flipEffect.slideShadows) {\n // Set shadows\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 if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\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 $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, 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;\n // Each slide offset from center\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 offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n let translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\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\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\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 if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\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 // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) 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 if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\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;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\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 if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n } else {\n newThumbsIndex = swiper.realIndex;\n }\n if (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) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\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 thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop) {\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};\nvar Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n","import Swiper from 'swiper';\r\nexport default class Carousel {\r\n constructor() {\r\n this.defaultConfig = {\r\n direction: 'horizontal',\r\n watchOverflow: true,\r\n centeredSlides: true,\r\n grabCursor: true,\r\n fadeEffect: { crossFade: true },\r\n autoplay: {\r\n delay: 5000,\r\n },\r\n loop: true,\r\n lazy: true,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true\r\n },\r\n // Navigation arrows\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n // And if we need scrollbar\r\n scrollbar: {\r\n el: '.swiper-scrollbar',\r\n },\r\n on: {\r\n beforeInit() {\r\n const swiper = this;\r\n if (swiper.params.effect !== 'mask')\r\n return;\r\n swiper.params.slidesPerView = 1;\r\n swiper.params.slidesPerColumn = 1;\r\n swiper.params.slidesPerGroup = 1;\r\n swiper.params.watchSlidesProgress = true;\r\n swiper.params.spaceBetween = 0;\r\n swiper.params.virtualTranslate = true;\r\n swiper.params.loop = false;\r\n swiper.params.autoplay.waitForTransition = false;\r\n swiper.originalParams.slidesPerView = 1;\r\n swiper.originalParams.slidesPerColumn = 1;\r\n swiper.originalParams.slidesPerGroup = 1;\r\n swiper.originalParams.watchSlidesProgress = true;\r\n swiper.originalParams.spaceBetween = 0;\r\n swiper.originalParams.virtualTranslate = true;\r\n swiper.originalParams.loop = false;\r\n swiper.originalParams.autoplay.waitForTransition = false;\r\n },\r\n setTranslate() {\r\n const swiper = this;\r\n if (swiper.params.effect !== 'mask')\r\n return;\r\n let count = swiper.slides.length;\r\n for (let i = 0; i < count; i++) {\r\n if (i == swiper.activeIndex) {\r\n swiper.slides[swiper.activeIndex].style.zIndex = count;\r\n swiper.slides[i].style.visibility = \"visible\";\r\n }\r\n else if (i == swiper.previousIndex) {\r\n swiper.slides[swiper.previousIndex].style.zIndex = count - 1;\r\n swiper.slides[i].style.visibility = \"visible\";\r\n }\r\n else {\r\n swiper.slides[i].style.zIndex = 0;\r\n swiper.slides[i].style.visibility = \"hidden\";\r\n }\r\n }\r\n },\r\n slideChange: function () {\r\n const swiper = this;\r\n if (swiper.params.effect !== 'mask')\r\n return;\r\n let count = swiper.slides.length;\r\n for (let i = 0; i < count; i++) {\r\n if (i == swiper.activeIndex) {\r\n swiper.slides[swiper.activeIndex].style.zIndex = count;\r\n swiper.slides[i].style.visibility = \"visible\";\r\n }\r\n else if (i == swiper.previousIndex) {\r\n swiper.slides[swiper.previousIndex].style.zIndex = count - 1;\r\n swiper.slides[i].style.visibility = \"visible\";\r\n }\r\n else {\r\n swiper.slides[i].style.zIndex = 0;\r\n swiper.slides[i].style.visibility = \"hidden\";\r\n }\r\n }\r\n },\r\n setTransition: function (speed) {\r\n const swiper = this;\r\n if (swiper.params.effect !== 'mask')\r\n return;\r\n }\r\n }\r\n };\r\n document.addEventListener('DOMContentLoaded', () => { this.init(); });\r\n }\r\n init() {\r\n this.initSwiper();\r\n }\r\n initSwiper() {\r\n let heroSwipers = document.querySelectorAll('.hero-swiper, .content-swiper');\r\n if (heroSwipers.length > 0) {\r\n for (var i = 0; i < heroSwipers.length; i++) {\r\n var hero = heroSwipers[i];\r\n var slides = hero.querySelectorAll('.swiper-slide');\r\n if (slides.length > 1) {\r\n let configAttributes = hero.getAttribute(\"swiper-config\");\r\n let config = configAttributes ? JSON.parse(configAttributes) : {};\r\n let swiperConfig = Object.assign(this.defaultConfig, config);\r\n let mySwiper = new Swiper(hero, swiperConfig);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","// packages/alpinejs/src/scheduler.js\nvar flushPending = false;\nvar flushing = false;\nvar queue = [];\nfunction scheduler(callback) {\n queueJob(callback);\n}\nfunction queueJob(job) {\n if (!queue.includes(job))\n queue.push(job);\n queueFlush();\n}\nfunction dequeueJob(job) {\n let index = queue.indexOf(job);\n if (index !== -1)\n queue.splice(index, 1);\n}\nfunction queueFlush() {\n if (!flushing && !flushPending) {\n flushPending = true;\n queueMicrotask(flushJobs);\n }\n}\nfunction flushJobs() {\n flushPending = false;\n flushing = true;\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n flushing = false;\n}\n\n// packages/alpinejs/src/reactivity.js\nvar reactive;\nvar effect;\nvar release;\nvar raw;\nvar shouldSchedule = true;\nfunction disableEffectScheduling(callback) {\n shouldSchedule = false;\n callback();\n shouldSchedule = true;\n}\nfunction setReactivityEngine(engine) {\n reactive = engine.reactive;\n release = engine.release;\n effect = (callback) => engine.effect(callback, {scheduler: (task) => {\n if (shouldSchedule) {\n scheduler(task);\n } else {\n task();\n }\n }});\n raw = engine.raw;\n}\nfunction overrideEffect(override) {\n effect = override;\n}\nfunction elementBoundEffect(el) {\n let cleanup2 = () => {\n };\n let wrappedEffect = (callback) => {\n let effectReference = effect(callback);\n if (!el._x_effects) {\n el._x_effects = new Set();\n el._x_runEffects = () => {\n el._x_effects.forEach((i) => i());\n };\n }\n el._x_effects.add(effectReference);\n cleanup2 = () => {\n if (effectReference === void 0)\n return;\n el._x_effects.delete(effectReference);\n release(effectReference);\n };\n return effectReference;\n };\n return [wrappedEffect, () => {\n cleanup2();\n }];\n}\n\n// packages/alpinejs/src/mutation.js\nvar onAttributeAddeds = [];\nvar onElRemoveds = [];\nvar onElAddeds = [];\nfunction onElAdded(callback) {\n onElAddeds.push(callback);\n}\nfunction onElRemoved(el, callback) {\n if (typeof callback === \"function\") {\n if (!el._x_cleanups)\n el._x_cleanups = [];\n el._x_cleanups.push(callback);\n } else {\n callback = el;\n onElRemoveds.push(callback);\n }\n}\nfunction onAttributesAdded(callback) {\n onAttributeAddeds.push(callback);\n}\nfunction onAttributeRemoved(el, name, callback) {\n if (!el._x_attributeCleanups)\n el._x_attributeCleanups = {};\n if (!el._x_attributeCleanups[name])\n el._x_attributeCleanups[name] = [];\n el._x_attributeCleanups[name].push(callback);\n}\nfunction cleanupAttributes(el, names) {\n if (!el._x_attributeCleanups)\n return;\n Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {\n if (names === void 0 || names.includes(name)) {\n value.forEach((i) => i());\n delete el._x_attributeCleanups[name];\n }\n });\n}\nvar observer = new MutationObserver(onMutate);\nvar currentlyObserving = false;\nfunction startObservingMutations() {\n observer.observe(document, {subtree: true, childList: true, attributes: true, attributeOldValue: true});\n currentlyObserving = true;\n}\nfunction stopObservingMutations() {\n flushObserver();\n observer.disconnect();\n currentlyObserving = false;\n}\nvar recordQueue = [];\nvar willProcessRecordQueue = false;\nfunction flushObserver() {\n recordQueue = recordQueue.concat(observer.takeRecords());\n if (recordQueue.length && !willProcessRecordQueue) {\n willProcessRecordQueue = true;\n queueMicrotask(() => {\n processRecordQueue();\n willProcessRecordQueue = false;\n });\n }\n}\nfunction processRecordQueue() {\n onMutate(recordQueue);\n recordQueue.length = 0;\n}\nfunction mutateDom(callback) {\n if (!currentlyObserving)\n return callback();\n stopObservingMutations();\n let result = callback();\n startObservingMutations();\n return result;\n}\nvar isCollecting = false;\nvar deferredMutations = [];\nfunction deferMutations() {\n isCollecting = true;\n}\nfunction flushAndStopDeferringMutations() {\n isCollecting = false;\n onMutate(deferredMutations);\n deferredMutations = [];\n}\nfunction onMutate(mutations) {\n if (isCollecting) {\n deferredMutations = deferredMutations.concat(mutations);\n return;\n }\n let addedNodes = [];\n let removedNodes = [];\n let addedAttributes = new Map();\n let removedAttributes = new Map();\n for (let i = 0; i < mutations.length; i++) {\n if (mutations[i].target._x_ignoreMutationObserver)\n continue;\n if (mutations[i].type === \"childList\") {\n mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.push(node));\n mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.push(node));\n }\n if (mutations[i].type === \"attributes\") {\n let el = mutations[i].target;\n let name = mutations[i].attributeName;\n let oldValue = mutations[i].oldValue;\n let add2 = () => {\n if (!addedAttributes.has(el))\n addedAttributes.set(el, []);\n addedAttributes.get(el).push({name, value: el.getAttribute(name)});\n };\n let remove = () => {\n if (!removedAttributes.has(el))\n removedAttributes.set(el, []);\n removedAttributes.get(el).push(name);\n };\n if (el.hasAttribute(name) && oldValue === null) {\n add2();\n } else if (el.hasAttribute(name)) {\n remove();\n add2();\n } else {\n remove();\n }\n }\n }\n removedAttributes.forEach((attrs, el) => {\n cleanupAttributes(el, attrs);\n });\n addedAttributes.forEach((attrs, el) => {\n onAttributeAddeds.forEach((i) => i(el, attrs));\n });\n for (let node of removedNodes) {\n if (addedNodes.includes(node))\n continue;\n onElRemoveds.forEach((i) => i(node));\n if (node._x_cleanups) {\n while (node._x_cleanups.length)\n node._x_cleanups.pop()();\n }\n }\n addedNodes.forEach((node) => {\n node._x_ignoreSelf = true;\n node._x_ignore = true;\n });\n for (let node of addedNodes) {\n if (removedNodes.includes(node))\n continue;\n if (!node.isConnected)\n continue;\n delete node._x_ignoreSelf;\n delete node._x_ignore;\n onElAddeds.forEach((i) => i(node));\n node._x_ignore = true;\n node._x_ignoreSelf = true;\n }\n addedNodes.forEach((node) => {\n delete node._x_ignoreSelf;\n delete node._x_ignore;\n });\n addedNodes = null;\n removedNodes = null;\n addedAttributes = null;\n removedAttributes = null;\n}\n\n// packages/alpinejs/src/scope.js\nfunction scope(node) {\n return mergeProxies(closestDataStack(node));\n}\nfunction addScopeToNode(node, data2, referenceNode) {\n node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];\n return () => {\n node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);\n };\n}\nfunction refreshScope(element, scope2) {\n let existingScope = element._x_dataStack[0];\n Object.entries(scope2).forEach(([key, value]) => {\n existingScope[key] = value;\n });\n}\nfunction closestDataStack(node) {\n if (node._x_dataStack)\n return node._x_dataStack;\n if (typeof ShadowRoot === \"function\" && node instanceof ShadowRoot) {\n return closestDataStack(node.host);\n }\n if (!node.parentNode) {\n return [];\n }\n return closestDataStack(node.parentNode);\n}\nfunction mergeProxies(objects) {\n let thisProxy = new Proxy({}, {\n ownKeys: () => {\n return Array.from(new Set(objects.flatMap((i) => Object.keys(i))));\n },\n has: (target, name) => {\n return objects.some((obj) => obj.hasOwnProperty(name));\n },\n get: (target, name) => {\n return (objects.find((obj) => {\n if (obj.hasOwnProperty(name)) {\n let descriptor = Object.getOwnPropertyDescriptor(obj, name);\n if (descriptor.get && descriptor.get._x_alreadyBound || descriptor.set && descriptor.set._x_alreadyBound) {\n return true;\n }\n if ((descriptor.get || descriptor.set) && descriptor.enumerable) {\n let getter = descriptor.get;\n let setter = descriptor.set;\n let property = descriptor;\n getter = getter && getter.bind(thisProxy);\n setter = setter && setter.bind(thisProxy);\n if (getter)\n getter._x_alreadyBound = true;\n if (setter)\n setter._x_alreadyBound = true;\n Object.defineProperty(obj, name, {\n ...property,\n get: getter,\n set: setter\n });\n }\n return true;\n }\n return false;\n }) || {})[name];\n },\n set: (target, name, value) => {\n let closestObjectWithKey = objects.find((obj) => obj.hasOwnProperty(name));\n if (closestObjectWithKey) {\n closestObjectWithKey[name] = value;\n } else {\n objects[objects.length - 1][name] = value;\n }\n return true;\n }\n });\n return thisProxy;\n}\n\n// packages/alpinejs/src/interceptor.js\nfunction initInterceptors(data2) {\n let isObject2 = (val) => typeof val === \"object\" && !Array.isArray(val) && val !== null;\n let recurse = (obj, basePath = \"\") => {\n Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, {value, enumerable}]) => {\n if (enumerable === false || value === void 0)\n return;\n let path = basePath === \"\" ? key : `${basePath}.${key}`;\n if (typeof value === \"object\" && value !== null && value._x_interceptor) {\n obj[key] = value.initialize(data2, path, key);\n } else {\n if (isObject2(value) && value !== obj && !(value instanceof Element)) {\n recurse(value, path);\n }\n }\n });\n };\n return recurse(data2);\n}\nfunction interceptor(callback, mutateObj = () => {\n}) {\n let obj = {\n initialValue: void 0,\n _x_interceptor: true,\n initialize(data2, path, key) {\n return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);\n }\n };\n mutateObj(obj);\n return (initialValue) => {\n if (typeof initialValue === \"object\" && initialValue !== null && initialValue._x_interceptor) {\n let initialize = obj.initialize.bind(obj);\n obj.initialize = (data2, path, key) => {\n let innerValue = initialValue.initialize(data2, path, key);\n obj.initialValue = innerValue;\n return initialize(data2, path, key);\n };\n } else {\n obj.initialValue = initialValue;\n }\n return obj;\n };\n}\nfunction get(obj, path) {\n return path.split(\".\").reduce((carry, segment) => carry[segment], obj);\n}\nfunction set(obj, path, value) {\n if (typeof path === \"string\")\n path = path.split(\".\");\n if (path.length === 1)\n obj[path[0]] = value;\n else if (path.length === 0)\n throw error;\n else {\n if (obj[path[0]])\n return set(obj[path[0]], path.slice(1), value);\n else {\n obj[path[0]] = {};\n return set(obj[path[0]], path.slice(1), value);\n }\n }\n}\n\n// packages/alpinejs/src/magics.js\nvar magics = {};\nfunction magic(name, callback) {\n magics[name] = callback;\n}\nfunction injectMagics(obj, el) {\n Object.entries(magics).forEach(([name, callback]) => {\n Object.defineProperty(obj, `$${name}`, {\n get() {\n let [utilities, cleanup2] = getElementBoundUtilities(el);\n utilities = {interceptor, ...utilities};\n onElRemoved(el, cleanup2);\n return callback(el, utilities);\n },\n enumerable: false\n });\n });\n return obj;\n}\n\n// packages/alpinejs/src/utils/error.js\nfunction tryCatch(el, expression, callback, ...args) {\n try {\n return callback(...args);\n } catch (e) {\n handleError(e, el, expression);\n }\n}\nfunction handleError(error2, el, expression = void 0) {\n Object.assign(error2, {el, expression});\n console.warn(`Alpine Expression Error: ${error2.message}\n\n${expression ? 'Expression: \"' + expression + '\"\\n\\n' : \"\"}`, el);\n setTimeout(() => {\n throw error2;\n }, 0);\n}\n\n// packages/alpinejs/src/evaluator.js\nvar shouldAutoEvaluateFunctions = true;\nfunction dontAutoEvaluateFunctions(callback) {\n let cache = shouldAutoEvaluateFunctions;\n shouldAutoEvaluateFunctions = false;\n callback();\n shouldAutoEvaluateFunctions = cache;\n}\nfunction evaluate(el, expression, extras = {}) {\n let result;\n evaluateLater(el, expression)((value) => result = value, extras);\n return result;\n}\nfunction evaluateLater(...args) {\n return theEvaluatorFunction(...args);\n}\nvar theEvaluatorFunction = normalEvaluator;\nfunction setEvaluator(newEvaluator) {\n theEvaluatorFunction = newEvaluator;\n}\nfunction normalEvaluator(el, expression) {\n let overriddenMagics = {};\n injectMagics(overriddenMagics, el);\n let dataStack = [overriddenMagics, ...closestDataStack(el)];\n if (typeof expression === \"function\") {\n return generateEvaluatorFromFunction(dataStack, expression);\n }\n let evaluator = generateEvaluatorFromString(dataStack, expression, el);\n return tryCatch.bind(null, el, expression, evaluator);\n}\nfunction generateEvaluatorFromFunction(dataStack, func) {\n return (receiver = () => {\n }, {scope: scope2 = {}, params = []} = {}) => {\n let result = func.apply(mergeProxies([scope2, ...dataStack]), params);\n runIfTypeOfFunction(receiver, result);\n };\n}\nvar evaluatorMemo = {};\nfunction generateFunctionFromString(expression, el) {\n if (evaluatorMemo[expression]) {\n return evaluatorMemo[expression];\n }\n let AsyncFunction = Object.getPrototypeOf(async function() {\n }).constructor;\n let rightSideSafeExpression = /^[\\n\\s]*if.*\\(.*\\)/.test(expression) || /^(let|const)\\s/.test(expression) ? `(() => { ${expression} })()` : expression;\n const safeAsyncFunction = () => {\n try {\n return new AsyncFunction([\"__self\", \"scope\"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`);\n } catch (error2) {\n handleError(error2, el, expression);\n return Promise.resolve();\n }\n };\n let func = safeAsyncFunction();\n evaluatorMemo[expression] = func;\n return func;\n}\nfunction generateEvaluatorFromString(dataStack, expression, el) {\n let func = generateFunctionFromString(expression, el);\n return (receiver = () => {\n }, {scope: scope2 = {}, params = []} = {}) => {\n func.result = void 0;\n func.finished = false;\n let completeScope = mergeProxies([scope2, ...dataStack]);\n if (typeof func === \"function\") {\n let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));\n if (func.finished) {\n runIfTypeOfFunction(receiver, func.result, completeScope, params, el);\n func.result = void 0;\n } else {\n promise.then((result) => {\n runIfTypeOfFunction(receiver, result, completeScope, params, el);\n }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);\n }\n }\n };\n}\nfunction runIfTypeOfFunction(receiver, value, scope2, params, el) {\n if (shouldAutoEvaluateFunctions && typeof value === \"function\") {\n let result = value.apply(scope2, params);\n if (result instanceof Promise) {\n result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));\n } else {\n receiver(result);\n }\n } else {\n receiver(value);\n }\n}\n\n// packages/alpinejs/src/directives.js\nvar prefixAsString = \"x-\";\nfunction prefix(subject = \"\") {\n return prefixAsString + subject;\n}\nfunction setPrefix(newPrefix) {\n prefixAsString = newPrefix;\n}\nvar directiveHandlers = {};\nfunction directive(name, callback) {\n directiveHandlers[name] = callback;\n}\nfunction directives(el, attributes, originalAttributeOverride) {\n attributes = Array.from(attributes);\n if (el._x_virtualDirectives) {\n let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({name, value}));\n let staticAttributes = attributesOnly(vAttributes);\n vAttributes = vAttributes.map((attribute) => {\n if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n return {\n name: `x-bind:${attribute.name}`,\n value: `\"${attribute.value}\"`\n };\n }\n return attribute;\n });\n attributes = attributes.concat(vAttributes);\n }\n let transformedAttributeMap = {};\n let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);\n return directives2.map((directive2) => {\n return getDirectiveHandler(el, directive2);\n });\n}\nfunction attributesOnly(attributes) {\n return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));\n}\nvar isDeferringHandlers = false;\nvar directiveHandlerStacks = new Map();\nvar currentHandlerStackKey = Symbol();\nfunction deferHandlingDirectives(callback) {\n isDeferringHandlers = true;\n let key = Symbol();\n currentHandlerStackKey = key;\n directiveHandlerStacks.set(key, []);\n let flushHandlers = () => {\n while (directiveHandlerStacks.get(key).length)\n directiveHandlerStacks.get(key).shift()();\n directiveHandlerStacks.delete(key);\n };\n let stopDeferring = () => {\n isDeferringHandlers = false;\n flushHandlers();\n };\n callback(flushHandlers);\n stopDeferring();\n}\nfunction getElementBoundUtilities(el) {\n let cleanups = [];\n let cleanup2 = (callback) => cleanups.push(callback);\n let [effect3, cleanupEffect] = elementBoundEffect(el);\n cleanups.push(cleanupEffect);\n let utilities = {\n Alpine: alpine_default,\n effect: effect3,\n cleanup: cleanup2,\n evaluateLater: evaluateLater.bind(evaluateLater, el),\n evaluate: evaluate.bind(evaluate, el)\n };\n let doCleanup = () => cleanups.forEach((i) => i());\n return [utilities, doCleanup];\n}\nfunction getDirectiveHandler(el, directive2) {\n let noop = () => {\n };\n let handler3 = directiveHandlers[directive2.type] || noop;\n let [utilities, cleanup2] = getElementBoundUtilities(el);\n onAttributeRemoved(el, directive2.original, cleanup2);\n let fullHandler = () => {\n if (el._x_ignore || el._x_ignoreSelf)\n return;\n handler3.inline && handler3.inline(el, directive2, utilities);\n handler3 = handler3.bind(handler3, el, directive2, utilities);\n isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler3) : handler3();\n };\n fullHandler.runCleanups = cleanup2;\n return fullHandler;\n}\nvar startingWith = (subject, replacement) => ({name, value}) => {\n if (name.startsWith(subject))\n name = name.replace(subject, replacement);\n return {name, value};\n};\nvar into = (i) => i;\nfunction toTransformedAttributes(callback = () => {\n}) {\n return ({name, value}) => {\n let {name: newName, value: newValue} = attributeTransformers.reduce((carry, transform) => {\n return transform(carry);\n }, {name, value});\n if (newName !== name)\n callback(newName, name);\n return {name: newName, value: newValue};\n };\n}\nvar attributeTransformers = [];\nfunction mapAttributes(callback) {\n attributeTransformers.push(callback);\n}\nfunction outNonAlpineAttributes({name}) {\n return alpineAttributeRegex().test(name);\n}\nvar alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\\\b`);\nfunction toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {\n return ({name, value}) => {\n let typeMatch = name.match(alpineAttributeRegex());\n let valueMatch = name.match(/:([a-zA-Z0-9\\-:]+)/);\n let modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n let original = originalAttributeOverride || transformedAttributeMap[name] || name;\n return {\n type: typeMatch ? typeMatch[1] : null,\n value: valueMatch ? valueMatch[1] : null,\n modifiers: modifiers.map((i) => i.replace(\".\", \"\")),\n expression: value,\n original\n };\n };\n}\nvar DEFAULT = \"DEFAULT\";\nvar directiveOrder = [\n \"ignore\",\n \"ref\",\n \"data\",\n \"id\",\n \"bind\",\n \"init\",\n \"for\",\n \"mask\",\n \"model\",\n \"modelable\",\n \"transition\",\n \"show\",\n \"if\",\n DEFAULT,\n \"teleport\"\n];\nfunction byPriority(a, b) {\n let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;\n let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;\n return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n}\n\n// packages/alpinejs/src/utils/dispatch.js\nfunction dispatch(el, name, detail = {}) {\n el.dispatchEvent(new CustomEvent(name, {\n detail,\n bubbles: true,\n composed: true,\n cancelable: true\n }));\n}\n\n// packages/alpinejs/src/nextTick.js\nvar tickStack = [];\nvar isHolding = false;\nfunction nextTick(callback = () => {\n}) {\n queueMicrotask(() => {\n isHolding || setTimeout(() => {\n releaseNextTicks();\n });\n });\n return new Promise((res) => {\n tickStack.push(() => {\n callback();\n res();\n });\n });\n}\nfunction releaseNextTicks() {\n isHolding = false;\n while (tickStack.length)\n tickStack.shift()();\n}\nfunction holdNextTicks() {\n isHolding = true;\n}\n\n// packages/alpinejs/src/utils/walk.js\nfunction walk(el, callback) {\n if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n Array.from(el.children).forEach((el2) => walk(el2, callback));\n return;\n }\n let skip = false;\n callback(el, () => skip = true);\n if (skip)\n return;\n let node = el.firstElementChild;\n while (node) {\n walk(node, callback, false);\n node = node.nextElementSibling;\n }\n}\n\n// packages/alpinejs/src/utils/warn.js\nfunction warn(message, ...args) {\n console.warn(`Alpine Warning: ${message}`, ...args);\n}\n\n// packages/alpinejs/src/lifecycle.js\nfunction start() {\n if (!document.body)\n warn(\"Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `