{"version":3,"file":"node_modules_ionic_core_dist_esm_swiper_bundle-28080340_js.js","mappings":"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","sources":["./node_modules/@ionic/core/dist/esm/swiper.bundle-28080340.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\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\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 */\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 = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).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 === win || selector === doc) {\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}\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}\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}\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 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 win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.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 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 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 = doc.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === win ? win.scrollY : el.scrollTop;\n const scrollLeft = el === win ? win.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 styles() {\n if (this[0]) return win.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 win.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// 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 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}\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 === doc) return el === doc;\n else if (selector === win) return el === win;\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 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 = doc.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}\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 = doc.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}\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 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 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}\n\n/**\n * Swiper 5.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: May 20, 2020\n */\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd,\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 filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.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 = win.getComputedStyle(el, null);\n\n if (win.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 win.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 (win.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 (win.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 || win.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 const noExtend = ['__proto__', 'constructor', 'prototype'];\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)).filter((key) => noExtend.indexOf(key) < 0);\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 return {\n touch: !!(('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch)),\n\n pointerEvents: !!win.PointerEvent && ('maxTouchPoints' in win.navigator) && win.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\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 win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\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 self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\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 function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\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 === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\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 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 } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = win.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 - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\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 (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.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n 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 if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\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 || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && 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) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\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 || (params.centeredSlides && params.autoHeight)) 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 const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / 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 if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\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 if (params.cssMode) {\n return 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, 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.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n 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\nfunction translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n\nfunction setTransition (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\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$1 (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\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$1 = {\n setTransition,\n transitionStart,\n transitionEnd: transitionEnd$1,\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, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\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 if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n 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 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\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 return swiper.slideTo(swiper.activeIndex + increment, 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 slidesGrid.map((val) => normalize(val));\n\n snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\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, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\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 = $(doc.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 = Math.ceil(parseFloat(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\n swiper.emit('beforeLoopFix');\n\n const {\n 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 // 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 (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 swiper.emit('loopFix');\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) || swiper.params.cssMode) 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) || swiper.params.cssMode) 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 platform = win.navigator.platform;\n const ua = win.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(win.cordova || win.phonegap),\n phonegap: !!(win.cordova || win.phonegap),\n electron: false,\n };\n\n const screenWidth = win.screen.width;\n const screenHeight = win.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\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.ipod = 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 // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || win.navigator.standalone))\n || (win.matchMedia && win.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = win.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\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\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 >= win.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 ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n doc.activeElement\n && $(doc.activeElement).is(data.formElements)\n && doc.activeElement !== $targetEl[0]\n ) {\n doc.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 !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n 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 && doc.activeElement) {\n if (e.target === doc.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 if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n 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 || params.cssMode) 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 click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', 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.cssMode) {\n return;\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 if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n 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 += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\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 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 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\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 onScroll () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.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 el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n doc.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.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 el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\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, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get 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', 'slidesPerGroupSkip', 'slidesPerColumn'].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 wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n 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 // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = win.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= win.innerWidth) {\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 (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 if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\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 const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new win.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 params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\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 cssMode: false,\n updateOnWindowResize: true,\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\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // 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: false,\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: transition$1,\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 let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $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', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return 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, label',\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 swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\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 }\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\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!win.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\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 win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: win.MutationObserver || win.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 (win.requestAnimationFrame) {\n win.requestAnimationFrame(observerUpdate);\n } else {\n win.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 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) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || 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 = win.innerWidth;\n const windowHeight = win.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 === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || 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 $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar keyboard = {\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 doc;\n\n if (!isSupported) {\n const element = doc.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && doc.implementation\n && doc.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (win.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 (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // 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.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !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 // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\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 // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) 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\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!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(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!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(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\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 const bulletIndex = $bullet.index();\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 if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\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 } else {\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 }\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 = {\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 $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n 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 getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : 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 swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\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 if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\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, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\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 doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.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 doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.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 = {\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 getPointerPosition: Scrollbar.getPointerPosition.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 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.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\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 if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\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.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n 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 if (e.cancelable) {\n e.preventDefault();\n }\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 if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\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 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\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 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\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 const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\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 const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nvar zoom = {\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 slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\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 clearTimeout(swiper.autoplay.timeout);\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 if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\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 = {\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 onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\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 document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\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 touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\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];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nSwiper.use([pagination, scrollbar, autoplay, keyboard, zoom]);\n\nexport { Swiper };\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","self","i","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","fn","prototype","Class","unique","uniqueArray","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments","getAttribute","undefined","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","event","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","splice","dom7proxy","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","prop","each","matchedItems","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","toAdd","Methods","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","query","urlToParse","params","param","paramsPart","decodeURIComponent","o","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","DocumentTouch","pointerEvents","PointerEvent","maxTouchPoints","observer","checkObserver","passiveListener","checkPassiveListener","supportsPassive","opts","defineProperty","get","gestures","checkGestures","SwiperClass","eventsListeners","eventName","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","eventsArray","useModulesParams","instanceParams","instance","modules","moduleName","module","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","components","use","installModule","name","proto","static","install","m","updateSize","swiper","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesNumberEvenToRows","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slideSize","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","x","y","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","direction","dir","transitionEnd$1","transition$1","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevSnap","prevIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","grabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","manipulation","Device","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","toLowerCase","os","osVersion","webView","standalone","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","attachEvents","touchEvents","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","containerModifierClass","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","innerHeight","sort","b","innerWidth","addClasses","classNames","suffixes","suffix","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","currentSrc","images","wasLocked","lastSlidePosition","checkOverflow$1","defaults","init","uniqueNavElements","wrapperClass","prototypes","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","support","Browser","isSafari","isEdge","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","isEventSupported","isSupported","element","implementation","hasFeature","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","raw","shift","prevEvent","animateSlider","releaseScroll","ignoreWheelEvents","sensitivity","timeout","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","getTime","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","lockClass","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","hideOnClick","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","click","isHidden","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","dragStartPos","positionRatio","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$slideEl","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","currentScale","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","zoomedSlideClass","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","activeListenerWithCapture","slideSelector","set","touchStart","touchEnd","doubleTap","slideChange","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove"],"sourceRoot":"webpack:///","x_google_ignoreList":[0]}