{"mappings":"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","sources":["","assets/js/modules.js","node_modules/.pnpm/glightbox@3.3.0/node_modules/glightbox/dist/js/glightbox.min.js","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/swiper.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/swiper-core.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/ssr-window.esm.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/utils.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/index.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/virtual.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/keyboard.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/mousewheel.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/navigation.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/create-element-if-not-defined.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/pagination.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/classes-to-selector.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/scrollbar.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/parallax.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/zoom.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/controller.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/a11y.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/history.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/hash-navigation.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/autoplay.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/thumbs.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/free-mode.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/grid.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/manipulation.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/effect-fade.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/effect-init.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/effect-target.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/effect-virtual-transition-end.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/effect-cube.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/effect-flip.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/shared/create-shadow.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/effect-coverflow.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/effect-creative.mjs","node_modules/.pnpm/swiper@11.1.1/node_modules/swiper/modules/effect-cards.mjs"],"sourcesContent":["\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nvar $48fd48063a4817a7$exports = {};\n!function(e, t) {\n $48fd48063a4817a7$exports = t();\n}($48fd48063a4817a7$exports, function() {\n \"use strict\";\n function e(e) {\n var t = function(e, t) {\n if (\"object\" != typeof e || !e) return e;\n var i = e[Symbol.toPrimitive];\n if (void 0 !== i) {\n var n = i.call(e, t || \"default\");\n if (\"object\" != typeof n) return n;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === t ? String : Number)(e);\n }(e, \"string\");\n return \"symbol\" == typeof t ? t : t + \"\";\n }\n function t(e) {\n return (t = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n })(e);\n }\n function i(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function n(t, i) {\n for(var n = 0; n < i.length; n++){\n var s = i[n];\n s.enumerable = s.enumerable || !1, s.configurable = !0, \"value\" in s && (s.writable = !0), Object.defineProperty(t, e(s.key), s);\n }\n }\n function s(e, t, i) {\n return t && n(e.prototype, t), i && n(e, i), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n }\n var l = Date.now();\n function o() {\n var e = {}, t = !0, i = 0, n = arguments.length;\n \"[object Boolean]\" === Object.prototype.toString.call(arguments[0]) && (t = arguments[0], i++);\n for(var s = function(i) {\n for(var n in i)Object.prototype.hasOwnProperty.call(i, n) && (t && \"[object Object]\" === Object.prototype.toString.call(i[n]) ? e[n] = o(!0, e[n], i[n]) : e[n] = i[n]);\n }; i < n; i++){\n var l = arguments[i];\n s(l);\n }\n return e;\n }\n function r(e, t) {\n if ((E(e) || e === window || e === document) && (e = [\n e\n ]), L(e) || I(e) || (e = [\n e\n ]), 0 != M(e)) {\n if (L(e) && !I(e)) for(var i = e.length, n = 0; n < i && !1 !== t.call(e[n], e[n], n, e); n++);\n else if (I(e)) {\n for(var s in e)if (P(e, s) && !1 === t.call(e[s], e[s], s, e)) break;\n }\n }\n }\n function a(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, n = e[l] = e[l] || [], s = {\n all: n,\n evt: null,\n found: null\n };\n return t && i && M(n) > 0 && r(n, function(e, n) {\n if (e.eventName == t && e.fn.toString() == i.toString()) return s.found = !0, s.evt = n, !1;\n }), s;\n }\n function h(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = t.onElement, n = t.withCallback, s = t.avoidDuplicate, l = void 0 === s || s, o = t.once, h = void 0 !== o && o, d = t.useCapture, c = void 0 !== d && d, u = arguments.length > 2 ? arguments[2] : void 0, g = i || [];\n function v(e) {\n C(n) && n.call(u, e, this), h && v.destroy();\n }\n return k(g) && (g = document.querySelectorAll(g)), v.destroy = function() {\n r(g, function(t) {\n var i = a(t, e, v);\n i.found && i.all.splice(i.evt, 1), t.removeEventListener && t.removeEventListener(e, v, c);\n });\n }, r(g, function(t) {\n var i = a(t, e, v);\n (t.addEventListener && l && !i.found || !l) && (t.addEventListener(e, v, c), i.all.push({\n eventName: e,\n fn: v\n }));\n }), v;\n }\n function d(e, t) {\n r(t.split(\" \"), function(t) {\n return e.classList.add(t);\n });\n }\n function c(e, t) {\n r(t.split(\" \"), function(t) {\n return e.classList.remove(t);\n });\n }\n function u(e, t) {\n return e.classList.contains(t);\n }\n function g(e, t) {\n for(; e !== document.body;){\n if (!(e = e.parentElement)) return !1;\n if (\"function\" == typeof e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e;\n }\n }\n function v(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\", i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (!e || \"\" === t) return !1;\n if (\"none\" === t) return C(i) && i(), !1;\n var n = b(), s = t.split(\" \");\n r(s, function(t) {\n d(e, \"g\" + t);\n }), h(n, {\n onElement: e,\n avoidDuplicate: !1,\n once: !0,\n withCallback: function(e, t) {\n r(s, function(e) {\n c(t, \"g\" + e);\n }), C(i) && i();\n }\n });\n }\n function f(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\";\n if (\"\" === t) return e.style.webkitTransform = \"\", e.style.MozTransform = \"\", e.style.msTransform = \"\", e.style.OTransform = \"\", e.style.transform = \"\", !1;\n e.style.webkitTransform = t, e.style.MozTransform = t, e.style.msTransform = t, e.style.OTransform = t, e.style.transform = t;\n }\n function p(e) {\n e.style.display = \"block\";\n }\n function m(e) {\n e.style.display = \"none\";\n }\n function y(e) {\n var t = document.createDocumentFragment(), i = document.createElement(\"div\");\n for(i.innerHTML = e; i.firstChild;)t.appendChild(i.firstChild);\n return t;\n }\n function x() {\n return {\n width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n };\n }\n function b() {\n var e, t = document.createElement(\"fakeelement\"), i = {\n animation: \"animationend\",\n OAnimation: \"oAnimationEnd\",\n MozAnimation: \"animationend\",\n WebkitAnimation: \"webkitAnimationEnd\"\n };\n for(e in i)if (void 0 !== t.style[e]) return i[e];\n }\n function S(e, t, i, n) {\n if (e()) t();\n else {\n var s;\n i || (i = 100);\n var l = setInterval(function() {\n e() && (clearInterval(l), s && clearTimeout(s), t());\n }, i);\n n && (s = setTimeout(function() {\n clearInterval(l);\n }, n));\n }\n }\n function w(e, t, i) {\n if (O(e)) console.error(\"Inject assets error\");\n else if (C(t) && (i = t, t = !1), k(t) && t in window) C(i) && i();\n else {\n var n;\n if (-1 !== e.indexOf(\".css\")) {\n if ((n = document.querySelectorAll('link[href=\"' + e + '\"]')) && n.length > 0) return void (C(i) && i());\n var s = document.getElementsByTagName(\"head\")[0], l = s.querySelectorAll('link[rel=\"stylesheet\"]'), o = document.createElement(\"link\");\n return o.rel = \"stylesheet\", o.type = \"text/css\", o.href = e, o.media = \"all\", l ? s.insertBefore(o, l[0]) : s.appendChild(o), void (C(i) && i());\n }\n if ((n = document.querySelectorAll('script[src=\"' + e + '\"]')) && n.length > 0) {\n if (C(i)) {\n if (k(t)) return S(function() {\n return void 0 !== window[t];\n }, function() {\n i();\n }), !1;\n i();\n }\n } else {\n var r = document.createElement(\"script\");\n r.type = \"text/javascript\", r.src = e, r.onload = function() {\n if (C(i)) {\n if (k(t)) return S(function() {\n return void 0 !== window[t];\n }, function() {\n i();\n }), !1;\n i();\n }\n }, document.body.appendChild(r);\n }\n }\n }\n function T() {\n return \"navigator\" in window && window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);\n }\n function C(e) {\n return \"function\" == typeof e;\n }\n function k(e) {\n return \"string\" == typeof e;\n }\n function E(e) {\n return !(!e || !e.nodeType || 1 != e.nodeType);\n }\n function A(e) {\n return Array.isArray(e);\n }\n function L(e) {\n return e && e.length && isFinite(e.length);\n }\n function I(e) {\n return \"object\" === t(e) && null != e && !C(e) && !A(e);\n }\n function O(e) {\n return null == e;\n }\n function P(e, t) {\n return null !== e && hasOwnProperty.call(e, t);\n }\n function M(e) {\n if (I(e)) {\n if (e.keys) return e.keys().length;\n var t = 0;\n for(var i in e)P(e, i) && t++;\n return t;\n }\n return e.length;\n }\n function z(e) {\n return !isNaN(parseFloat(e)) && isFinite(e);\n }\n function X() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : -1, t = document.querySelectorAll(\".gbtn[data-taborder]:not(.disabled)\");\n if (!t.length) return !1;\n if (1 == t.length) return t[0];\n \"string\" == typeof e && (e = parseInt(e));\n var i = [];\n r(t, function(e) {\n i.push(e.getAttribute(\"data-taborder\"));\n });\n var n = Math.max.apply(Math, i.map(function(e) {\n return parseInt(e);\n })), s = e < 0 ? 1 : e + 1;\n s > n && (s = \"1\");\n var l = i.filter(function(e) {\n return e >= parseInt(s);\n }), o = l.sort()[0];\n return document.querySelector('.gbtn[data-taborder=\"'.concat(o, '\"]'));\n }\n function Y(e) {\n if (e.events.hasOwnProperty(\"keyboard\")) return !1;\n e.events.keyboard = h(\"keydown\", {\n onElement: window,\n withCallback: function(t, i) {\n var n = (t = t || window.event).keyCode;\n if (9 == n) {\n var s = document.querySelector(\".gbtn.focused\");\n if (!s) {\n var l = !(!document.activeElement || !document.activeElement.nodeName) && document.activeElement.nodeName.toLocaleLowerCase();\n if (\"input\" == l || \"textarea\" == l || \"button\" == l) return;\n }\n t.preventDefault();\n var o = document.querySelectorAll(\".gbtn[data-taborder]\");\n if (!o || o.length <= 0) return;\n if (!s) {\n var r = X();\n return void (r && (r.focus(), d(r, \"focused\")));\n }\n var a = X(s.getAttribute(\"data-taborder\"));\n c(s, \"focused\"), a && (a.focus(), d(a, \"focused\"));\n }\n 39 == n && e.nextSlide(), 37 == n && e.prevSlide(), 27 == n && e.close();\n }\n });\n }\n var q = s(function e(t, n) {\n var s = this, l = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;\n if (i(this, e), this.img = t, this.slide = n, this.onclose = l, this.img.setZoomEvents) return !1;\n this.active = !1, this.zoomedIn = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.img.addEventListener(\"mousedown\", function(e) {\n return s.dragStart(e);\n }, !1), this.img.addEventListener(\"mouseup\", function(e) {\n return s.dragEnd(e);\n }, !1), this.img.addEventListener(\"mousemove\", function(e) {\n return s.drag(e);\n }, !1), this.img.addEventListener(\"click\", function(e) {\n return s.slide.classList.contains(\"dragging-nav\") ? (s.zoomOut(), !1) : s.zoomedIn ? void (s.zoomedIn && !s.dragging && s.zoomOut()) : s.zoomIn();\n }, !1), this.img.setZoomEvents = !0;\n }, [\n {\n key: \"zoomIn\",\n value: function() {\n var e = this.widowWidth();\n if (!(this.zoomedIn || e <= 768)) {\n var t = this.img;\n if (t.setAttribute(\"data-style\", t.getAttribute(\"style\")), t.style.maxWidth = t.naturalWidth + \"px\", t.style.maxHeight = t.naturalHeight + \"px\", t.naturalWidth > e) {\n var i = e / 2 - t.naturalWidth / 2;\n this.setTranslate(this.img.parentNode, i, 0);\n }\n this.slide.classList.add(\"zoomed\"), this.zoomedIn = !0;\n }\n }\n },\n {\n key: \"zoomOut\",\n value: function() {\n this.img.parentNode.setAttribute(\"style\", \"\"), this.img.setAttribute(\"style\", this.img.getAttribute(\"data-style\")), this.slide.classList.remove(\"zoomed\"), this.zoomedIn = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.onclose && \"function\" == typeof this.onclose && this.onclose();\n }\n },\n {\n key: \"dragStart\",\n value: function(e) {\n e.preventDefault(), this.zoomedIn ? (\"touchstart\" === e.type ? (this.initialX = e.touches[0].clientX - this.xOffset, this.initialY = e.touches[0].clientY - this.yOffset) : (this.initialX = e.clientX - this.xOffset, this.initialY = e.clientY - this.yOffset), e.target === this.img && (this.active = !0, this.img.classList.add(\"dragging\"))) : this.active = !1;\n }\n },\n {\n key: \"dragEnd\",\n value: function(e) {\n var t = this;\n e.preventDefault(), this.initialX = this.currentX, this.initialY = this.currentY, this.active = !1, setTimeout(function() {\n t.dragging = !1, t.img.isDragging = !1, t.img.classList.remove(\"dragging\");\n }, 100);\n }\n },\n {\n key: \"drag\",\n value: function(e) {\n this.active && (e.preventDefault(), \"touchmove\" === e.type ? (this.currentX = e.touches[0].clientX - this.initialX, this.currentY = e.touches[0].clientY - this.initialY) : (this.currentX = e.clientX - this.initialX, this.currentY = e.clientY - this.initialY), this.xOffset = this.currentX, this.yOffset = this.currentY, this.img.isDragging = !0, this.dragging = !0, this.setTranslate(this.img, this.currentX, this.currentY));\n }\n },\n {\n key: \"onMove\",\n value: function(e) {\n if (this.zoomedIn) {\n var t = e.clientX - this.img.naturalWidth / 2, i = e.clientY - this.img.naturalHeight / 2;\n this.setTranslate(this.img, t, i);\n }\n }\n },\n {\n key: \"setTranslate\",\n value: function(e, t, i) {\n e.style.transform = \"translate3d(\" + t + \"px, \" + i + \"px, 0)\";\n }\n },\n {\n key: \"widowWidth\",\n value: function() {\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n }\n }\n ]), N = s(function e() {\n var t = this, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n i(this, e);\n var s = n.dragEl, l = n.toleranceX, o = void 0 === l ? 40 : l, r = n.toleranceY, a = void 0 === r ? 65 : r, h = n.slide, d = void 0 === h ? null : h, c = n.instance, u = void 0 === c ? null : c;\n this.el = s, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = o, this.toleranceY = a, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = d, this.instance = u, this.el.addEventListener(\"mousedown\", function(e) {\n return t.dragStart(e);\n }, !1), this.el.addEventListener(\"mouseup\", function(e) {\n return t.dragEnd(e);\n }, !1), this.el.addEventListener(\"mousemove\", function(e) {\n return t.drag(e);\n }, !1);\n }, [\n {\n key: \"dragStart\",\n value: function(e) {\n if (this.slide.classList.contains(\"zoomed\")) this.active = !1;\n else {\n \"touchstart\" === e.type ? (this.initialX = e.touches[0].clientX - this.xOffset, this.initialY = e.touches[0].clientY - this.yOffset) : (this.initialX = e.clientX - this.xOffset, this.initialY = e.clientY - this.yOffset);\n var t = e.target.nodeName.toLowerCase();\n e.target.classList.contains(\"nodrag\") || g(e.target, \".nodrag\") || -1 !== [\n \"input\",\n \"select\",\n \"textarea\",\n \"button\",\n \"a\"\n ].indexOf(t) ? this.active = !1 : (e.preventDefault(), (e.target === this.el || \"img\" !== t && g(e.target, \".gslide-inline\")) && (this.active = !0, this.el.classList.add(\"dragging\"), this.dragContainer = g(e.target, \".ginner-container\")));\n }\n }\n },\n {\n key: \"dragEnd\",\n value: function(e) {\n var t = this;\n e && e.preventDefault(), this.initialX = 0, this.initialY = 0, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.active = !1, this.doSlideChange && (this.instance.preventOutsideClick = !0, \"right\" == this.doSlideChange && this.instance.prevSlide(), \"left\" == this.doSlideChange && this.instance.nextSlide()), this.doSlideClose && this.instance.close(), this.toleranceReached || this.setTranslate(this.dragContainer, 0, 0, !0), setTimeout(function() {\n t.instance.preventOutsideClick = !1, t.toleranceReached = !1, t.lastDirection = null, t.dragging = !1, t.el.isDragging = !1, t.el.classList.remove(\"dragging\"), t.slide.classList.remove(\"dragging-nav\"), t.dragContainer.style.transform = \"\", t.dragContainer.style.transition = \"\";\n }, 100);\n }\n },\n {\n key: \"drag\",\n value: function(e) {\n if (this.active) {\n e.preventDefault(), this.slide.classList.add(\"dragging-nav\"), \"touchmove\" === e.type ? (this.currentX = e.touches[0].clientX - this.initialX, this.currentY = e.touches[0].clientY - this.initialY) : (this.currentX = e.clientX - this.initialX, this.currentY = e.clientY - this.initialY), this.xOffset = this.currentX, this.yOffset = this.currentY, this.el.isDragging = !0, this.dragging = !0, this.doSlideChange = !1, this.doSlideClose = !1;\n var t = Math.abs(this.currentX), i = Math.abs(this.currentY);\n if (t > 0 && t >= Math.abs(this.currentY) && (!this.lastDirection || \"x\" == this.lastDirection)) {\n this.yOffset = 0, this.lastDirection = \"x\", this.setTranslate(this.dragContainer, this.currentX, 0);\n var n = this.shouldChange();\n if (!this.instance.settings.dragAutoSnap && n && (this.doSlideChange = n), this.instance.settings.dragAutoSnap && n) return this.instance.preventOutsideClick = !0, this.toleranceReached = !0, this.active = !1, this.instance.preventOutsideClick = !0, this.dragEnd(null), \"right\" == n && this.instance.prevSlide(), void (\"left\" == n && this.instance.nextSlide());\n }\n if (this.toleranceY > 0 && i > 0 && i >= t && (!this.lastDirection || \"y\" == this.lastDirection)) {\n this.xOffset = 0, this.lastDirection = \"y\", this.setTranslate(this.dragContainer, 0, this.currentY);\n var s = this.shouldClose();\n return !this.instance.settings.dragAutoSnap && s && (this.doSlideClose = !0), void (this.instance.settings.dragAutoSnap && s && this.instance.close());\n }\n }\n }\n },\n {\n key: \"shouldChange\",\n value: function() {\n var e = !1;\n if (Math.abs(this.currentX) >= this.toleranceX) {\n var t = this.currentX > 0 ? \"right\" : \"left\";\n (\"left\" == t && this.slide !== this.slide.parentNode.lastChild || \"right\" == t && this.slide !== this.slide.parentNode.firstChild) && (e = t);\n }\n return e;\n }\n },\n {\n key: \"shouldClose\",\n value: function() {\n var e = !1;\n return Math.abs(this.currentY) >= this.toleranceY && (e = !0), e;\n }\n },\n {\n key: \"setTranslate\",\n value: function(e, t, i) {\n var n = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\n e.style.transition = n ? \"all .2s ease\" : \"\", e.style.transform = \"translate3d(\".concat(t, \"px, \").concat(i, \"px, 0)\");\n }\n }\n ]);\n function D(e, t, i, n) {\n var s = e.querySelector(\".gslide-media\"), l = new Image, o = \"gSlideTitle_\" + i, r = \"gSlideDesc_\" + i;\n l.addEventListener(\"load\", function() {\n C(n) && n();\n }, !1), l.src = t.href, \"\" != t.sizes && \"\" != t.srcset && (l.sizes = t.sizes, l.srcset = t.srcset), l.alt = \"\", O(t.alt) || \"\" === t.alt || (l.alt = t.alt), \"\" !== t.title && l.setAttribute(\"aria-labelledby\", o), \"\" !== t.description && l.setAttribute(\"aria-describedby\", r), t.hasOwnProperty(\"_hasCustomWidth\") && t._hasCustomWidth && (l.style.width = t.width), t.hasOwnProperty(\"_hasCustomHeight\") && t._hasCustomHeight && (l.style.height = t.height), s.insertBefore(l, s.firstChild);\n }\n function _(e, t, i, n) {\n var s = this, l = e.querySelector(\".ginner-container\"), o = \"gvideo\" + i, r = e.querySelector(\".gslide-media\"), a = this.getAllPlayers();\n d(l, \"gvideo-container\"), r.insertBefore(y('
'), r.firstChild);\n var h = e.querySelector(\".gvideo-wrapper\");\n w(this.settings.plyr.css, \"Plyr\");\n var c = t.href, u = null == t ? void 0 : t.videoProvider, g = !1;\n r.style.maxWidth = t.width, w(this.settings.plyr.js, \"Plyr\", function() {\n if (!u && c.match(/vimeo\\.com\\/([0-9]*)/) && (u = \"vimeo\"), !u && (c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || c.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/) || c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/) || c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/shorts\\/([a-zA-Z0-9\\-_]+)/)) && (u = \"youtube\"), \"local\" === u || !u) {\n u = \"local\";\n var l = '\");\n }\n var r = g || y('
'));\n d(h, \"\".concat(u, \"-video gvideo\")), h.appendChild(r), h.setAttribute(\"data-id\", o), h.setAttribute(\"data-index\", i);\n var v = P(s.settings.plyr, \"config\") ? s.settings.plyr.config : {}, f = new Plyr(\"#\" + o, v);\n f.on(\"ready\", function(e) {\n a[o] = e.detail.plyr, C(n) && n();\n }), S(function() {\n return e.querySelector(\"iframe\") && \"true\" == e.querySelector(\"iframe\").dataset.ready;\n }, function() {\n s.resize(e);\n }), f.on(\"enterfullscreen\", W), f.on(\"exitfullscreen\", W);\n });\n }\n function W(e) {\n var t = g(e.target, \".gslide-media\");\n \"enterfullscreen\" === e.type && d(t, \"fullscreen\"), \"exitfullscreen\" === e.type && c(t, \"fullscreen\");\n }\n function B(e, t, i, n) {\n var s, l = this, o = e.querySelector(\".gslide-media\"), r = !(!P(t, \"href\") || !t.href) && t.href.split(\"#\").pop().trim(), a = !(!P(t, \"content\") || !t.content) && t.content;\n if (a && (k(a) && (s = y('
'.concat(a, \"
\"))), E(a))) {\n \"none\" == a.style.display && (a.style.display = \"block\");\n var c = document.createElement(\"div\");\n c.className = \"ginlined-content\", c.appendChild(a), s = c;\n }\n if (r) {\n var u = document.getElementById(r);\n if (!u) return !1;\n var g = u.cloneNode(!0);\n g.style.height = t.height, g.style.maxWidth = t.width, d(g, \"ginlined-content\"), s = g;\n }\n if (!s) return console.error(\"Unable to append inline slide content\", t), !1;\n o.style.height = t.height, o.style.width = t.width, o.appendChild(s), this.events[\"inlineclose\" + r] = h(\"click\", {\n onElement: o.querySelectorAll(\".gtrigger-close\"),\n withCallback: function(e) {\n e.preventDefault(), l.close();\n }\n }), C(n) && n();\n }\n function H(e, t, i, n) {\n var s = e.querySelector(\".gslide-media\"), l = function(e) {\n var t = e.url, i = e.allow, n = e.callback, s = e.appendTo, l = document.createElement(\"iframe\");\n return l.className = \"vimeo-video gvideo\", l.src = t, l.style.width = \"100%\", l.style.height = \"100%\", i && l.setAttribute(\"allow\", i), l.onload = function() {\n l.onload = null, d(l, \"node-ready\"), C(n) && n();\n }, s && s.appendChild(l), l;\n }({\n url: t.href,\n callback: n\n });\n s.parentNode.style.maxWidth = t.width, s.parentNode.style.height = t.height, s.appendChild(l);\n }\n var j = s(function e() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n i(this, e), this.defaults = {\n href: \"\",\n sizes: \"\",\n srcset: \"\",\n title: \"\",\n type: \"\",\n videoProvider: \"\",\n description: \"\",\n alt: \"\",\n descPosition: \"bottom\",\n effect: \"\",\n width: \"\",\n height: \"\",\n content: !1,\n zoomable: !0,\n draggable: !0\n }, I(t) && (this.defaults = o(this.defaults, t));\n }, [\n {\n key: \"sourceType\",\n value: function(e) {\n var t = e;\n return null !== (e = e.toLowerCase()).match(/\\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/) ? \"image\" : e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || e.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/) || e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/) || e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/shorts\\/([a-zA-Z0-9\\-_]+)/) || e.match(/vimeo\\.com\\/([0-9]*)/) || null !== e.match(/\\.(mp4|ogg|webm|mov)/) ? \"video\" : null !== e.match(/\\.(mp3|wav|wma|aac|ogg)/) ? \"audio\" : e.indexOf(\"#\") > -1 && \"\" !== t.split(\"#\").pop().trim() ? \"inline\" : e.indexOf(\"goajax=true\") > -1 ? \"ajax\" : \"external\";\n }\n },\n {\n key: \"parseConfig\",\n value: function(e, t) {\n var i = this, n = o({\n descPosition: t.descPosition\n }, this.defaults);\n if (I(e) && !E(e)) {\n P(e, \"type\") || (P(e, \"content\") && e.content ? e.type = \"inline\" : P(e, \"href\") && (e.type = this.sourceType(e.href)));\n var s = o(n, e);\n return this.setSize(s, t), s;\n }\n var l = \"\", a = e.getAttribute(\"data-glightbox\"), h = e.nodeName.toLowerCase();\n if (\"a\" === h && (l = e.href), \"img\" === h && (l = e.src, n.alt = e.alt), n.href = l, r(n, function(s, l) {\n P(t, l) && \"width\" !== l && (n[l] = t[l]);\n var o = e.dataset[l];\n O(o) || (n[l] = i.sanitizeValue(o));\n }), n.content && (n.type = \"inline\"), !n.type && l && (n.type = this.sourceType(l)), O(a)) {\n if (!n.title && \"a\" == h) {\n var d = e.title;\n O(d) || \"\" === d || (n.title = d);\n }\n if (!n.title && \"img\" == h) {\n var c = e.alt;\n O(c) || \"\" === c || (n.title = c);\n }\n } else {\n var u = [];\n r(n, function(e, t) {\n u.push(\";\\\\s?\" + t);\n }), u = u.join(\"\\\\s?:|\"), \"\" !== a.trim() && r(n, function(e, t) {\n var s = a, l = new RegExp(\"s?\" + t + \"s?:s?(.*?)(\" + u + \"s?:|$)\"), o = s.match(l);\n if (o && o.length && o[1]) {\n var r = o[1].trim().replace(/;\\s*$/, \"\");\n n[t] = i.sanitizeValue(r);\n }\n });\n }\n if (n.description && \".\" === n.description.substring(0, 1)) {\n var g;\n try {\n g = document.querySelector(n.description).innerHTML;\n } catch (e) {\n if (!(e instanceof DOMException)) throw e;\n }\n g && (n.description = g);\n }\n if (!n.description) {\n var v = e.querySelector(\".glightbox-desc\");\n v && (n.description = v.innerHTML);\n }\n return this.setSize(n, t, e), this.slideConfig = n, n;\n }\n },\n {\n key: \"setSize\",\n value: function(e, t) {\n var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, n = \"video\" == e.type ? this.checkSize(t.videosWidth) : this.checkSize(t.width), s = this.checkSize(t.height);\n return e.width = P(e, \"width\") && \"\" !== e.width ? this.checkSize(e.width) : n, e.height = P(e, \"height\") && \"\" !== e.height ? this.checkSize(e.height) : s, i && \"image\" == e.type && (e._hasCustomWidth = !!i.dataset.width, e._hasCustomHeight = !!i.dataset.height), e;\n }\n },\n {\n key: \"checkSize\",\n value: function(e) {\n return z(e) ? \"\".concat(e, \"px\") : e;\n }\n },\n {\n key: \"sanitizeValue\",\n value: function(e) {\n return \"true\" !== e && \"false\" !== e ? e : \"true\" === e;\n }\n }\n ]), V = s(function e(t, n, s) {\n i(this, e), this.element = t, this.instance = n, this.index = s;\n }, [\n {\n key: \"setContent\",\n value: function() {\n var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n if (u(t, \"loaded\")) return !1;\n var n = this.instance.settings, s = this.slideConfig, l = T();\n C(n.beforeSlideLoad) && n.beforeSlideLoad({\n index: this.index,\n slide: t,\n player: !1\n });\n var o = s.type, r = s.descPosition, a = t.querySelector(\".gslide-media\"), h = t.querySelector(\".gslide-title\"), c = t.querySelector(\".gslide-desc\"), g = t.querySelector(\".gdesc-inner\"), v = i, f = \"gSlideTitle_\" + this.index, p = \"gSlideDesc_\" + this.index;\n if (C(n.afterSlideLoad) && (v = function() {\n C(i) && i(), n.afterSlideLoad({\n index: e.index,\n slide: t,\n player: e.instance.getSlidePlayerInstance(e.index)\n });\n }), \"\" == s.title && \"\" == s.description ? g && g.parentNode.parentNode.removeChild(g.parentNode) : (h && \"\" !== s.title ? (h.id = f, h.innerHTML = s.title) : h.parentNode.removeChild(h), c && \"\" !== s.description ? (c.id = p, l && n.moreLength > 0 ? (s.smallDescription = this.slideShortDesc(s.description, n.moreLength, n.moreText), c.innerHTML = s.smallDescription, this.descriptionEvents(c, s)) : c.innerHTML = s.description) : c.parentNode.removeChild(c), d(a.parentNode, \"desc-\".concat(r)), d(g.parentNode, \"description-\".concat(r))), d(a, \"gslide-\".concat(o)), d(t, \"loaded\"), \"video\" !== o) {\n if (\"external\" !== o) return \"inline\" === o ? (B.apply(this.instance, [\n t,\n s,\n this.index,\n v\n ]), void (s.draggable && new N({\n dragEl: t.querySelector(\".gslide-inline\"),\n toleranceX: n.dragToleranceX,\n toleranceY: n.dragToleranceY,\n slide: t,\n instance: this.instance\n }))) : void (\"image\" !== o ? C(v) && v() : D(t, s, this.index, function() {\n var i = t.querySelector(\"img\");\n s.draggable && new N({\n dragEl: i,\n toleranceX: n.dragToleranceX,\n toleranceY: n.dragToleranceY,\n slide: t,\n instance: e.instance\n }), s.zoomable && i.naturalWidth > i.offsetWidth && (d(i, \"zoomable\"), new q(i, t, function() {\n e.instance.resize();\n })), C(v) && v();\n }));\n H.apply(this, [\n t,\n s,\n this.index,\n v\n ]);\n } else _.apply(this.instance, [\n t,\n s,\n this.index,\n v\n ]);\n }\n },\n {\n key: \"slideShortDesc\",\n value: function(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 50, i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = document.createElement(\"div\");\n n.innerHTML = e;\n var s = n.innerText, l = i;\n if ((e = s.trim()).length <= t) return e;\n var o = e.substr(0, t - 1);\n return l ? (n = null, o + '... ' + i + \"\") : o;\n }\n },\n {\n key: \"descriptionEvents\",\n value: function(e, t) {\n var i = this, n = e.querySelector(\".desc-more\");\n if (!n) return !1;\n h(\"click\", {\n onElement: n,\n withCallback: function(e, n) {\n e.preventDefault();\n var s = document.body, l = g(n, \".gslide-desc\");\n if (!l) return !1;\n l.innerHTML = t.description, d(s, \"gdesc-open\");\n var o = h(\"click\", {\n onElement: [\n s,\n g(l, \".gslide-description\")\n ],\n withCallback: function(e, n) {\n \"a\" !== e.target.nodeName.toLowerCase() && (c(s, \"gdesc-open\"), d(s, \"gdesc-closed\"), l.innerHTML = t.smallDescription, i.descriptionEvents(l, t), setTimeout(function() {\n c(s, \"gdesc-closed\");\n }, 400), o.destroy());\n }\n });\n }\n });\n }\n },\n {\n key: \"create\",\n value: function() {\n return y(this.instance.settings.slideHTML);\n }\n },\n {\n key: \"getConfig\",\n value: function() {\n E(this.element) || this.element.hasOwnProperty(\"draggable\") || (this.element.draggable = this.instance.settings.draggable);\n var e = new j(this.instance.settings.slideExtraAttributes);\n return this.slideConfig = e.parseConfig(this.element, this.instance.settings), this.slideConfig;\n }\n }\n ]);\n function F(e) {\n return Math.sqrt(e.x * e.x + e.y * e.y);\n }\n function R(e, t) {\n var i = function(e, t) {\n var i = F(e) * F(t);\n if (0 === i) return 0;\n var n = function(e, t) {\n return e.x * t.x + e.y * t.y;\n }(e, t) / i;\n return n > 1 && (n = 1), Math.acos(n);\n }(e, t);\n return function(e, t) {\n return e.x * t.y - t.x * e.y;\n }(e, t) > 0 && (i *= -1), 180 * i / Math.PI;\n }\n var G = s(function e(t) {\n i(this, e), this.handlers = [], this.el = t;\n }, [\n {\n key: \"add\",\n value: function(e) {\n this.handlers.push(e);\n }\n },\n {\n key: \"del\",\n value: function(e) {\n e || (this.handlers = []);\n for(var t = this.handlers.length; t >= 0; t--)this.handlers[t] === e && this.handlers.splice(t, 1);\n }\n },\n {\n key: \"dispatch\",\n value: function() {\n for(var e = 0, t = this.handlers.length; e < t; e++){\n var i = this.handlers[e];\n \"function\" == typeof i && i.apply(this.el, arguments);\n }\n }\n }\n ]);\n function Z(e, t) {\n var i = new G(e);\n return i.add(t), i;\n }\n var U = s(function e(t, n) {\n i(this, e), this.element = \"string\" == typeof t ? document.querySelector(t) : t, this.start = this.start.bind(this), this.move = this.move.bind(this), this.end = this.end.bind(this), this.cancel = this.cancel.bind(this), this.element.addEventListener(\"touchstart\", this.start, !1), this.element.addEventListener(\"touchmove\", this.move, !1), this.element.addEventListener(\"touchend\", this.end, !1), this.element.addEventListener(\"touchcancel\", this.cancel, !1), this.preV = {\n x: null,\n y: null\n }, this.pinchStartLen = null, this.zoom = 1, this.isDoubleTap = !1;\n var s = function() {};\n this.rotate = Z(this.element, n.rotate || s), this.touchStart = Z(this.element, n.touchStart || s), this.multipointStart = Z(this.element, n.multipointStart || s), this.multipointEnd = Z(this.element, n.multipointEnd || s), this.pinch = Z(this.element, n.pinch || s), this.swipe = Z(this.element, n.swipe || s), this.tap = Z(this.element, n.tap || s), this.doubleTap = Z(this.element, n.doubleTap || s), this.longTap = Z(this.element, n.longTap || s), this.singleTap = Z(this.element, n.singleTap || s), this.pressMove = Z(this.element, n.pressMove || s), this.twoFingerPressMove = Z(this.element, n.twoFingerPressMove || s), this.touchMove = Z(this.element, n.touchMove || s), this.touchEnd = Z(this.element, n.touchEnd || s), this.touchCancel = Z(this.element, n.touchCancel || s), this.translateContainer = this.element, this._cancelAllHandler = this.cancelAll.bind(this), window.addEventListener(\"scroll\", this._cancelAllHandler), this.delta = null, this.last = null, this.now = null, this.tapTimeout = null, this.singleTapTimeout = null, this.longTapTimeout = null, this.swipeTimeout = null, this.x1 = this.x2 = this.y1 = this.y2 = null, this.preTapPosition = {\n x: null,\n y: null\n };\n }, [\n {\n key: \"start\",\n value: function(e) {\n if (e.touches) {\n if (e.target && e.target.nodeName && [\n \"a\",\n \"button\",\n \"input\"\n ].indexOf(e.target.nodeName.toLowerCase()) >= 0) console.log(\"ignore drag for this touched element\", e.target.nodeName.toLowerCase());\n else {\n this.now = Date.now(), this.x1 = e.touches[0].pageX, this.y1 = e.touches[0].pageY, this.delta = this.now - (this.last || this.now), this.touchStart.dispatch(e, this.element), null !== this.preTapPosition.x && (this.isDoubleTap = this.delta > 0 && this.delta <= 250 && Math.abs(this.preTapPosition.x - this.x1) < 30 && Math.abs(this.preTapPosition.y - this.y1) < 30, this.isDoubleTap && clearTimeout(this.singleTapTimeout)), this.preTapPosition.x = this.x1, this.preTapPosition.y = this.y1, this.last = this.now;\n var t = this.preV;\n if (e.touches.length > 1) {\n this._cancelLongTap(), this._cancelSingleTap();\n var i = {\n x: e.touches[1].pageX - this.x1,\n y: e.touches[1].pageY - this.y1\n };\n t.x = i.x, t.y = i.y, this.pinchStartLen = F(t), this.multipointStart.dispatch(e, this.element);\n }\n this._preventTap = !1, this.longTapTimeout = setTimeout((function() {\n this.longTap.dispatch(e, this.element), this._preventTap = !0;\n }).bind(this), 750);\n }\n }\n }\n },\n {\n key: \"move\",\n value: function(e) {\n if (e.touches) {\n var t = this.preV, i = e.touches.length, n = e.touches[0].pageX, s = e.touches[0].pageY;\n if (this.isDoubleTap = !1, i > 1) {\n var l = e.touches[1].pageX, o = e.touches[1].pageY, r = {\n x: e.touches[1].pageX - n,\n y: e.touches[1].pageY - s\n };\n null !== t.x && (this.pinchStartLen > 0 && (e.zoom = F(r) / this.pinchStartLen, this.pinch.dispatch(e, this.element)), e.angle = R(r, t), this.rotate.dispatch(e, this.element)), t.x = r.x, t.y = r.y, null !== this.x2 && null !== this.sx2 ? (e.deltaX = (n - this.x2 + l - this.sx2) / 2, e.deltaY = (s - this.y2 + o - this.sy2) / 2) : (e.deltaX = 0, e.deltaY = 0), this.twoFingerPressMove.dispatch(e, this.element), this.sx2 = l, this.sy2 = o;\n } else {\n if (null !== this.x2) {\n e.deltaX = n - this.x2, e.deltaY = s - this.y2;\n var a = Math.abs(this.x1 - this.x2), h = Math.abs(this.y1 - this.y2);\n (a > 10 || h > 10) && (this._preventTap = !0);\n } else e.deltaX = 0, e.deltaY = 0;\n this.pressMove.dispatch(e, this.element);\n }\n this.touchMove.dispatch(e, this.element), this._cancelLongTap(), this.x2 = n, this.y2 = s, i > 1 && e.preventDefault();\n }\n }\n },\n {\n key: \"end\",\n value: function(e) {\n if (e.changedTouches) {\n this._cancelLongTap();\n var t = this;\n e.touches.length < 2 && (this.multipointEnd.dispatch(e, this.element), this.sx2 = this.sy2 = null), this.x2 && Math.abs(this.x1 - this.x2) > 30 || this.y2 && Math.abs(this.y1 - this.y2) > 30 ? (e.direction = this._swipeDirection(this.x1, this.x2, this.y1, this.y2), this.swipeTimeout = setTimeout(function() {\n t.swipe.dispatch(e, t.element);\n }, 0)) : (this.tapTimeout = setTimeout(function() {\n t._preventTap || t.tap.dispatch(e, t.element), t.isDoubleTap && (t.doubleTap.dispatch(e, t.element), t.isDoubleTap = !1);\n }, 0), t.isDoubleTap || (t.singleTapTimeout = setTimeout(function() {\n t.singleTap.dispatch(e, t.element);\n }, 250))), this.touchEnd.dispatch(e, this.element), this.preV.x = 0, this.preV.y = 0, this.zoom = 1, this.pinchStartLen = null, this.x1 = this.x2 = this.y1 = this.y2 = null;\n }\n }\n },\n {\n key: \"cancelAll\",\n value: function() {\n this._preventTap = !0, clearTimeout(this.singleTapTimeout), clearTimeout(this.tapTimeout), clearTimeout(this.longTapTimeout), clearTimeout(this.swipeTimeout);\n }\n },\n {\n key: \"cancel\",\n value: function(e) {\n this.cancelAll(), this.touchCancel.dispatch(e, this.element);\n }\n },\n {\n key: \"_cancelLongTap\",\n value: function() {\n clearTimeout(this.longTapTimeout);\n }\n },\n {\n key: \"_cancelSingleTap\",\n value: function() {\n clearTimeout(this.singleTapTimeout);\n }\n },\n {\n key: \"_swipeDirection\",\n value: function(e, t, i, n) {\n return Math.abs(e - t) >= Math.abs(i - n) ? e - t > 0 ? \"Left\" : \"Right\" : i - n > 0 ? \"Up\" : \"Down\";\n }\n },\n {\n key: \"on\",\n value: function(e, t) {\n this[e] && this[e].add(t);\n }\n },\n {\n key: \"off\",\n value: function(e, t) {\n this[e] && this[e].del(t);\n }\n },\n {\n key: \"destroy\",\n value: function() {\n return this.singleTapTimeout && clearTimeout(this.singleTapTimeout), this.tapTimeout && clearTimeout(this.tapTimeout), this.longTapTimeout && clearTimeout(this.longTapTimeout), this.swipeTimeout && clearTimeout(this.swipeTimeout), this.element.removeEventListener(\"touchstart\", this.start), this.element.removeEventListener(\"touchmove\", this.move), this.element.removeEventListener(\"touchend\", this.end), this.element.removeEventListener(\"touchcancel\", this.cancel), this.rotate.del(), this.touchStart.del(), this.multipointStart.del(), this.multipointEnd.del(), this.pinch.del(), this.swipe.del(), this.tap.del(), this.doubleTap.del(), this.longTap.del(), this.singleTap.del(), this.pressMove.del(), this.twoFingerPressMove.del(), this.touchMove.del(), this.touchEnd.del(), this.touchCancel.del(), this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null, window.removeEventListener(\"scroll\", this._cancelAllHandler), null;\n }\n }\n ]);\n function $(e) {\n var t = function() {\n var e, t = document.createElement(\"fakeelement\"), i = {\n transition: \"transitionend\",\n OTransition: \"oTransitionEnd\",\n MozTransition: \"transitionend\",\n WebkitTransition: \"webkitTransitionEnd\"\n };\n for(e in i)if (void 0 !== t.style[e]) return i[e];\n }(), i = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, n = u(e, \"gslide-media\") ? e : e.querySelector(\".gslide-media\"), s = g(n, \".ginner-container\"), l = e.querySelector(\".gslide-description\");\n i > 769 && (n = s), d(n, \"greset\"), f(n, \"translate3d(0, 0, 0)\"), h(t, {\n onElement: n,\n once: !0,\n withCallback: function(e, t) {\n c(n, \"greset\");\n }\n }), n.style.opacity = \"\", l && (l.style.opacity = \"\");\n }\n function J(e) {\n if (e.events.hasOwnProperty(\"touch\")) return !1;\n var t, i, n, s = x(), l = s.width, o = s.height, r = !1, a = null, h = null, v = null, p = !1, m = 1, y = 1, b = !1, S = !1, w = null, T = null, C = null, k = null, E = 0, A = 0, L = !1, I = !1, O = {}, P = {}, M = 0, z = 0, X = document.getElementById(\"glightbox-slider\"), Y = document.querySelector(\".goverlay\"), q = new U(X, {\n touchStart: function(t) {\n if (r = !0, (u(t.targetTouches[0].target, \"ginner-container\") || g(t.targetTouches[0].target, \".gslide-desc\") || \"a\" == t.targetTouches[0].target.nodeName.toLowerCase()) && (r = !1), g(t.targetTouches[0].target, \".gslide-inline\") && !u(t.targetTouches[0].target.parentNode, \"gslide-inline\") && (r = !1), r) {\n if (P = t.targetTouches[0], O.pageX = t.targetTouches[0].pageX, O.pageY = t.targetTouches[0].pageY, M = t.targetTouches[0].clientX, z = t.targetTouches[0].clientY, a = e.activeSlide, h = a.querySelector(\".gslide-media\"), n = a.querySelector(\".gslide-inline\"), v = null, u(h, \"gslide-image\") && (v = h.querySelector(\"img\")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (h = a.querySelector(\".ginner-container\")), c(Y, \"greset\"), t.pageX > 20 && t.pageX < window.innerWidth - 20) return;\n t.preventDefault();\n }\n },\n touchMove: function(s) {\n if (r && (P = s.targetTouches[0], !b && !S)) {\n if (n && n.offsetHeight > o) {\n var a = O.pageX - P.pageX;\n if (Math.abs(a) <= 13) return !1;\n }\n p = !0;\n var d, c = s.targetTouches[0].clientX, u = s.targetTouches[0].clientY, g = M - c, m = z - u;\n if (Math.abs(g) > Math.abs(m) ? (L = !1, I = !0) : (I = !1, L = !0), t = P.pageX - O.pageX, E = 100 * t / l, i = P.pageY - O.pageY, A = 100 * i / o, L && v && (d = 1 - Math.abs(i) / o, Y.style.opacity = d, e.settings.touchFollowAxis && (E = 0)), I && (d = 1 - Math.abs(t) / l, h.style.opacity = d, e.settings.touchFollowAxis && (A = 0)), !v) return f(h, \"translate3d(\".concat(E, \"%, 0, 0)\"));\n f(h, \"translate3d(\".concat(E, \"%, \").concat(A, \"%, 0)\"));\n }\n },\n touchEnd: function() {\n if (r) {\n if (p = !1, S || b) return C = w, void (k = T);\n var t = Math.abs(parseInt(A)), i = Math.abs(parseInt(E));\n if (!(t > 29 && v)) return t < 29 && i < 25 ? (d(Y, \"greset\"), Y.style.opacity = 1, $(h)) : void 0;\n e.close();\n }\n },\n multipointEnd: function() {\n setTimeout(function() {\n b = !1;\n }, 50);\n },\n multipointStart: function() {\n b = !0, m = y || 1;\n },\n pinch: function(e) {\n if (!v || p) return !1;\n b = !0, v.scaleX = v.scaleY = m * e.zoom;\n var t = m * e.zoom;\n if (S = !0, t <= 1) return S = !1, t = 1, k = null, C = null, w = null, T = null, void v.setAttribute(\"style\", \"\");\n t > 4.5 && (t = 4.5), v.style.transform = \"scale3d(\".concat(t, \", \").concat(t, \", 1)\"), y = t;\n },\n pressMove: function(e) {\n if (S && !b) {\n var t = P.pageX - O.pageX, i = P.pageY - O.pageY;\n C && (t += C), k && (i += k), w = t, T = i;\n var n = \"translate3d(\".concat(t, \"px, \").concat(i, \"px, 0)\");\n y && (n += \" scale3d(\".concat(y, \", \").concat(y, \", 1)\")), f(v, n);\n }\n },\n swipe: function(t) {\n if (!S) {\n if (b) b = !1;\n else {\n if (\"Left\" == t.direction) {\n if (e.index == e.elements.length - 1) return $(h);\n e.nextSlide();\n }\n if (\"Right\" == t.direction) {\n if (0 == e.index) return $(h);\n e.prevSlide();\n }\n }\n }\n }\n });\n e.events.touch = q;\n }\n var K = T(), Q = null !== T() || void 0 !== document.createTouch || \"ontouchstart\" in window || \"onmsgesturechange\" in window || navigator.msMaxTouchPoints, ee = document.getElementsByTagName(\"html\")[0], te = {\n selector: \".glightbox\",\n elements: null,\n skin: \"clean\",\n theme: \"clean\",\n closeButton: !0,\n startAt: null,\n autoplayVideos: !0,\n autofocusVideos: !0,\n descPosition: \"bottom\",\n width: \"900px\",\n height: \"506px\",\n videosWidth: \"960px\",\n beforeSlideChange: null,\n afterSlideChange: null,\n beforeSlideLoad: null,\n afterSlideLoad: null,\n slideInserted: null,\n slideRemoved: null,\n slideExtraAttributes: null,\n onOpen: null,\n onClose: null,\n loop: !1,\n zoomable: !0,\n draggable: !0,\n dragAutoSnap: !1,\n dragToleranceX: 40,\n dragToleranceY: 65,\n preload: !0,\n oneSlidePerOpen: !1,\n touchNavigation: !0,\n touchFollowAxis: !0,\n keyboardNavigation: !0,\n closeOnOutsideClick: !0,\n plugins: !1,\n plyr: {\n css: \"https://cdn.plyr.io/3.6.12/plyr.css\",\n js: \"https://cdn.plyr.io/3.6.12/plyr.js\",\n config: {\n ratio: \"16:9\",\n fullscreen: {\n enabled: !0,\n iosNative: !0\n },\n youtube: {\n noCookie: !0,\n rel: 0,\n showinfo: 0,\n iv_load_policy: 3\n },\n vimeo: {\n byline: !1,\n portrait: !1,\n title: !1,\n transparent: !1\n }\n }\n },\n openEffect: \"zoom\",\n closeEffect: \"zoom\",\n slideEffect: \"slide\",\n moreText: \"See more\",\n moreLength: 60,\n cssEfects: {\n fade: {\n in: \"fadeIn\",\n out: \"fadeOut\"\n },\n zoom: {\n in: \"zoomIn\",\n out: \"zoomOut\"\n },\n slide: {\n in: \"slideInRight\",\n out: \"slideOutLeft\"\n },\n slideBack: {\n in: \"slideInLeft\",\n out: \"slideOutRight\"\n },\n none: {\n in: \"none\",\n out: \"none\"\n }\n },\n svg: {\n close: '',\n next: ' ',\n prev: ''\n },\n slideHTML: '
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
',\n lightboxHTML: '
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
'\n }, ie = s(function e() {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n i(this, e), this.customOptions = t, this.settings = o(te, t), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;\n }, [\n {\n key: \"init\",\n value: function() {\n var e = this, t = this.getSelector();\n t && (this.baseEvents = h(\"click\", {\n onElement: t,\n withCallback: function(t, i) {\n t.preventDefault(), e.open(i);\n }\n })), this.elements = this.getElements();\n }\n },\n {\n key: \"open\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (0 === this.elements.length) return !1;\n this.activeSlide = null, this.prevActiveSlideIndex = null, this.prevActiveSlide = null;\n var i = z(t) ? t : this.settings.startAt;\n if (E(e)) {\n var n = e.getAttribute(\"data-gallery\");\n n && (this.fullElementsList = this.elements, this.elements = this.getGalleryElements(this.elements, n)), O(i) && (i = this.getElementIndex(e)) < 0 && (i = 0);\n }\n z(i) || (i = 0), this.build(), v(this.overlay, \"none\" === this.settings.openEffect ? \"none\" : this.settings.cssEfects.fade.in);\n var s = document.body, l = window.innerWidth - document.documentElement.clientWidth;\n if (l > 0) {\n var o = document.createElement(\"style\");\n o.type = \"text/css\", o.className = \"gcss-styles\", o.innerText = \".gscrollbar-fixer {margin-right: \".concat(l, \"px}\"), document.head.appendChild(o), d(s, \"gscrollbar-fixer\");\n }\n d(s, \"glightbox-open\"), d(ee, \"glightbox-open\"), K && (d(document.body, \"glightbox-mobile\"), this.settings.slideEffect = \"slide\"), this.showSlide(i, !0), 1 === this.elements.length ? (d(this.prevButton, \"glightbox-button-hidden\"), d(this.nextButton, \"glightbox-button-hidden\")) : (c(this.prevButton, \"glightbox-button-hidden\"), c(this.nextButton, \"glightbox-button-hidden\")), this.lightboxOpen = !0, this.trigger(\"open\"), C(this.settings.onOpen) && this.settings.onOpen(), Q && this.settings.touchNavigation && J(this), this.settings.keyboardNavigation && Y(this);\n }\n },\n {\n key: \"openAt\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\n this.open(null, e);\n }\n },\n {\n key: \"showSlide\",\n value: function() {\n var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n p(this.loader), this.index = parseInt(t);\n var n = this.slidesContainer.querySelector(\".current\");\n n && c(n, \"current\"), this.slideAnimateOut();\n var s = this.slidesContainer.querySelectorAll(\".gslide\")[t];\n if (u(s, \"loaded\")) this.slideAnimateIn(s, i), m(this.loader);\n else {\n p(this.loader);\n var l = this.elements[t], o = {\n index: this.index,\n slide: s,\n slideNode: s,\n slideConfig: l.slideConfig,\n slideIndex: this.index,\n trigger: l.node,\n player: null\n };\n this.trigger(\"slide_before_load\", o), l.instance.setContent(s, function() {\n m(e.loader), e.resize(), e.slideAnimateIn(s, i), e.trigger(\"slide_after_load\", o);\n });\n }\n this.slideDescription = s.querySelector(\".gslide-description\"), this.slideDescriptionContained = this.slideDescription && u(this.slideDescription.parentNode, \"gslide-media\"), this.settings.preload && (this.preloadSlide(t + 1), this.preloadSlide(t - 1)), this.updateNavigationClasses(), this.activeSlide = s;\n }\n },\n {\n key: \"preloadSlide\",\n value: function(e) {\n var t = this;\n if (e < 0 || e > this.elements.length - 1) return !1;\n if (O(this.elements[e])) return !1;\n var i = this.slidesContainer.querySelectorAll(\".gslide\")[e];\n if (u(i, \"loaded\")) return !1;\n var n = this.elements[e], s = n.type, l = {\n index: e,\n slide: i,\n slideNode: i,\n slideConfig: n.slideConfig,\n slideIndex: e,\n trigger: n.node,\n player: null\n };\n this.trigger(\"slide_before_load\", l), \"video\" === s || \"external\" === s ? setTimeout(function() {\n n.instance.setContent(i, function() {\n t.trigger(\"slide_after_load\", l);\n });\n }, 200) : n.instance.setContent(i, function() {\n t.trigger(\"slide_after_load\", l);\n });\n }\n },\n {\n key: \"prevSlide\",\n value: function() {\n this.goToSlide(this.index - 1);\n }\n },\n {\n key: \"nextSlide\",\n value: function() {\n this.goToSlide(this.index + 1);\n }\n },\n {\n key: \"goToSlide\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (this.prevActiveSlide = this.activeSlide, this.prevActiveSlideIndex = this.index, !this.loop() && (e < 0 || e > this.elements.length - 1)) return !1;\n e < 0 ? e = this.elements.length - 1 : e >= this.elements.length && (e = 0), this.showSlide(e);\n }\n },\n {\n key: \"insertSlide\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : -1;\n t < 0 && (t = this.elements.length);\n var i = new V(e, this, t), n = i.getConfig(), s = o({}, n), l = i.create(), r = this.elements.length - 1;\n s.index = t, s.node = !1, s.instance = i, s.slideConfig = n, this.elements.splice(t, 0, s);\n var a = null, h = null;\n if (this.slidesContainer) {\n if (t > r) this.slidesContainer.appendChild(l);\n else {\n var d = this.slidesContainer.querySelectorAll(\".gslide\")[t];\n this.slidesContainer.insertBefore(l, d);\n }\n (this.settings.preload && 0 == this.index && 0 == t || this.index - 1 == t || this.index + 1 == t) && this.preloadSlide(t), 0 === this.index && 0 === t && (this.index = 1), this.updateNavigationClasses(), a = this.slidesContainer.querySelectorAll(\".gslide\")[t], h = this.getSlidePlayerInstance(t), s.slideNode = a;\n }\n this.trigger(\"slide_inserted\", {\n index: t,\n slide: a,\n slideNode: a,\n slideConfig: n,\n slideIndex: t,\n trigger: null,\n player: h\n }), C(this.settings.slideInserted) && this.settings.slideInserted({\n index: t,\n slide: a,\n player: h\n });\n }\n },\n {\n key: \"removeSlide\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : -1;\n if (e < 0 || e > this.elements.length - 1) return !1;\n var t = this.slidesContainer && this.slidesContainer.querySelectorAll(\".gslide\")[e];\n t && (this.getActiveSlideIndex() == e && (e == this.elements.length - 1 ? this.prevSlide() : this.nextSlide()), t.parentNode.removeChild(t)), this.elements.splice(e, 1), this.trigger(\"slide_removed\", e), C(this.settings.slideRemoved) && this.settings.slideRemoved(e);\n }\n },\n {\n key: \"slideAnimateIn\",\n value: function(e, t) {\n var i = this, n = e.querySelector(\".gslide-media\"), s = e.querySelector(\".gslide-description\"), l = {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide,\n slideNode: this.prevActiveSlide,\n slideIndex: this.prevActiveSlide,\n slideConfig: O(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig,\n trigger: O(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node,\n player: this.getSlidePlayerInstance(this.prevActiveSlideIndex)\n }, o = {\n index: this.index,\n slide: this.activeSlide,\n slideNode: this.activeSlide,\n slideConfig: this.elements[this.index].slideConfig,\n slideIndex: this.index,\n trigger: this.elements[this.index].node,\n player: this.getSlidePlayerInstance(this.index)\n };\n if (n.offsetWidth > 0 && s && (m(s), s.style.display = \"\"), c(e, this.effectsClasses), t) v(e, this.settings.cssEfects[this.settings.openEffect].in, function() {\n i.settings.autoplayVideos && i.slidePlayerPlay(e), i.trigger(\"slide_changed\", {\n prev: l,\n current: o\n }), C(i.settings.afterSlideChange) && i.settings.afterSlideChange.apply(i, [\n l,\n o\n ]);\n });\n else {\n var r = this.settings.slideEffect, a = \"none\" !== r ? this.settings.cssEfects[r].in : r;\n this.prevActiveSlideIndex > this.index && \"slide\" == this.settings.slideEffect && (a = this.settings.cssEfects.slideBack.in), v(e, a, function() {\n i.settings.autoplayVideos && i.slidePlayerPlay(e), i.trigger(\"slide_changed\", {\n prev: l,\n current: o\n }), C(i.settings.afterSlideChange) && i.settings.afterSlideChange.apply(i, [\n l,\n o\n ]);\n });\n }\n setTimeout(function() {\n i.resize(e);\n }, 100), d(e, \"current\");\n }\n },\n {\n key: \"slideAnimateOut\",\n value: function() {\n if (!this.prevActiveSlide) return !1;\n var e = this.prevActiveSlide;\n c(e, this.effectsClasses), d(e, \"prev\");\n var t = this.settings.slideEffect, i = \"none\" !== t ? this.settings.cssEfects[t].out : t;\n this.slidePlayerPause(e), this.trigger(\"slide_before_change\", {\n prev: {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide,\n slideNode: this.prevActiveSlide,\n slideIndex: this.prevActiveSlideIndex,\n slideConfig: O(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig,\n trigger: O(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node,\n player: this.getSlidePlayerInstance(this.prevActiveSlideIndex)\n },\n current: {\n index: this.index,\n slide: this.activeSlide,\n slideNode: this.activeSlide,\n slideIndex: this.index,\n slideConfig: this.elements[this.index].slideConfig,\n trigger: this.elements[this.index].node,\n player: this.getSlidePlayerInstance(this.index)\n }\n }), C(this.settings.beforeSlideChange) && this.settings.beforeSlideChange.apply(this, [\n {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide,\n player: this.getSlidePlayerInstance(this.prevActiveSlideIndex)\n },\n {\n index: this.index,\n slide: this.activeSlide,\n player: this.getSlidePlayerInstance(this.index)\n }\n ]), this.prevActiveSlideIndex > this.index && \"slide\" == this.settings.slideEffect && (i = this.settings.cssEfects.slideBack.out), v(e, i, function() {\n var t = e.querySelector(\".ginner-container\"), i = e.querySelector(\".gslide-media\"), n = e.querySelector(\".gslide-description\");\n t.style.transform = \"\", i.style.transform = \"\", c(i, \"greset\"), i.style.opacity = \"\", n && (n.style.opacity = \"\"), c(e, \"prev\");\n });\n }\n },\n {\n key: \"getAllPlayers\",\n value: function() {\n return this.videoPlayers;\n }\n },\n {\n key: \"getSlidePlayerInstance\",\n value: function(e) {\n var t = \"gvideo\" + e, i = this.getAllPlayers();\n return !(!P(i, t) || !i[t]) && i[t];\n }\n },\n {\n key: \"stopSlideVideo\",\n value: function(e) {\n if (E(e)) {\n var t = e.querySelector(\".gvideo-wrapper\");\n t && (e = t.getAttribute(\"data-index\"));\n }\n console.log(\"stopSlideVideo is deprecated, use slidePlayerPause\");\n var i = this.getSlidePlayerInstance(e);\n i && i.playing && i.pause();\n }\n },\n {\n key: \"slidePlayerPause\",\n value: function(e) {\n if (E(e)) {\n var t = e.querySelector(\".gvideo-wrapper\");\n t && (e = t.getAttribute(\"data-index\"));\n }\n var i = this.getSlidePlayerInstance(e);\n i && i.playing && i.pause();\n }\n },\n {\n key: \"playSlideVideo\",\n value: function(e) {\n if (E(e)) {\n var t = e.querySelector(\".gvideo-wrapper\");\n t && (e = t.getAttribute(\"data-index\"));\n }\n console.log(\"playSlideVideo is deprecated, use slidePlayerPlay\");\n var i = this.getSlidePlayerInstance(e);\n i && !i.playing && i.play();\n }\n },\n {\n key: \"slidePlayerPlay\",\n value: function(e) {\n var t;\n if (!K || null !== (t = this.settings.plyr.config) && void 0 !== t && t.muted) {\n if (E(e)) {\n var i = e.querySelector(\".gvideo-wrapper\");\n i && (e = i.getAttribute(\"data-index\"));\n }\n var n = this.getSlidePlayerInstance(e);\n n && !n.playing && (n.play(), this.settings.autofocusVideos && n.elements.container.focus());\n }\n }\n },\n {\n key: \"setElements\",\n value: function(e) {\n var t = this;\n this.settings.elements = !1;\n var i = [];\n e && e.length && r(e, function(e, n) {\n var s = new V(e, t, n), l = s.getConfig(), r = o({}, l);\n r.slideConfig = l, r.instance = s, r.index = n, i.push(r);\n }), this.elements = i, this.lightboxOpen && (this.slidesContainer.innerHTML = \"\", this.elements.length && (r(this.elements, function() {\n var e = y(t.settings.slideHTML);\n t.slidesContainer.appendChild(e);\n }), this.showSlide(0, !0)));\n }\n },\n {\n key: \"getElementIndex\",\n value: function(e) {\n var t = !1;\n return r(this.elements, function(i, n) {\n if (P(i, \"node\") && i.node == e) return t = n, !0;\n }), t;\n }\n },\n {\n key: \"getElements\",\n value: function() {\n var e = this, t = [];\n this.elements = this.elements ? this.elements : [], !O(this.settings.elements) && A(this.settings.elements) && this.settings.elements.length && r(this.settings.elements, function(i, n) {\n var s = new V(i, e, n), l = s.getConfig(), r = o({}, l);\n r.node = !1, r.index = n, r.instance = s, r.slideConfig = l, t.push(r);\n });\n var i = !1;\n return this.getSelector() && (i = document.querySelectorAll(this.getSelector())), i ? (r(i, function(i, n) {\n var s = new V(i, e, n), l = s.getConfig(), r = o({}, l);\n r.node = i, r.index = n, r.instance = s, r.slideConfig = l, r.gallery = i.getAttribute(\"data-gallery\"), t.push(r);\n }), t) : t;\n }\n },\n {\n key: \"getGalleryElements\",\n value: function(e, t) {\n return e.filter(function(e) {\n return e.gallery == t;\n });\n }\n },\n {\n key: \"getSelector\",\n value: function() {\n return !this.settings.elements && (this.settings.selector && \"data-\" == this.settings.selector.substring(0, 5) ? \"*[\".concat(this.settings.selector, \"]\") : this.settings.selector);\n }\n },\n {\n key: \"getActiveSlide\",\n value: function() {\n return this.slidesContainer.querySelectorAll(\".gslide\")[this.index];\n }\n },\n {\n key: \"getActiveSlideIndex\",\n value: function() {\n return this.index;\n }\n },\n {\n key: \"getAnimationClasses\",\n value: function() {\n var e = [];\n for(var t in this.settings.cssEfects)if (this.settings.cssEfects.hasOwnProperty(t)) {\n var i = this.settings.cssEfects[t];\n e.push(\"g\".concat(i.in)), e.push(\"g\".concat(i.out));\n }\n return e.join(\" \");\n }\n },\n {\n key: \"build\",\n value: function() {\n var e = this;\n if (this.built) return !1;\n var t = document.body.childNodes, i = [];\n r(t, function(e) {\n e.parentNode == document.body && \"#\" !== e.nodeName.charAt(0) && e.hasAttribute && !e.hasAttribute(\"aria-hidden\") && (i.push(e), e.setAttribute(\"aria-hidden\", \"true\"));\n });\n var n = P(this.settings.svg, \"next\") ? this.settings.svg.next : \"\", s = P(this.settings.svg, \"prev\") ? this.settings.svg.prev : \"\", l = P(this.settings.svg, \"close\") ? this.settings.svg.close : \"\", o = this.settings.lightboxHTML;\n o = y(o = (o = (o = o.replace(/{nextSVG}/g, n)).replace(/{prevSVG}/g, s)).replace(/{closeSVG}/g, l)), document.body.appendChild(o);\n var a = document.getElementById(\"glightbox-body\");\n this.modal = a;\n var c = a.querySelector(\".gclose\");\n this.prevButton = a.querySelector(\".gprev\"), this.nextButton = a.querySelector(\".gnext\"), this.overlay = a.querySelector(\".goverlay\"), this.loader = a.querySelector(\".gloader\"), this.slidesContainer = document.getElementById(\"glightbox-slider\"), this.bodyHiddenChildElms = i, this.events = {}, d(this.modal, \"glightbox-\" + this.settings.skin), this.settings.closeButton && c && (this.events.close = h(\"click\", {\n onElement: c,\n withCallback: function(t, i) {\n t.preventDefault(), e.close();\n }\n })), c && !this.settings.closeButton && c.parentNode.removeChild(c), this.nextButton && (this.events.next = h(\"click\", {\n onElement: this.nextButton,\n withCallback: function(t, i) {\n t.preventDefault(), e.nextSlide();\n }\n })), this.prevButton && (this.events.prev = h(\"click\", {\n onElement: this.prevButton,\n withCallback: function(t, i) {\n t.preventDefault(), e.prevSlide();\n }\n })), this.settings.closeOnOutsideClick && (this.events.outClose = h(\"click\", {\n onElement: a,\n withCallback: function(t, i) {\n e.preventOutsideClick || u(document.body, \"glightbox-mobile\") || g(t.target, \".ginner-container\") || g(t.target, \".gbtn\") || u(t.target, \"gnext\") || u(t.target, \"gprev\") || e.close();\n }\n })), r(this.elements, function(t, i) {\n e.slidesContainer.appendChild(t.instance.create()), t.slideNode = e.slidesContainer.querySelectorAll(\".gslide\")[i];\n }), Q && d(document.body, \"glightbox-touch\"), this.events.resize = h(\"resize\", {\n onElement: window,\n withCallback: function() {\n e.resize();\n }\n }), this.built = !0;\n }\n },\n {\n key: \"resize\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;\n if ((e = e || this.activeSlide) && !u(e, \"zoomed\")) {\n var t = x(), i = e.querySelector(\".gvideo-wrapper\"), n = e.querySelector(\".gslide-image\"), s = this.slideDescription, l = t.width, o = t.height;\n if (l <= 768 ? d(document.body, \"glightbox-mobile\") : c(document.body, \"glightbox-mobile\"), i || n) {\n var r = !1;\n if (s && (u(s, \"description-bottom\") || u(s, \"description-top\")) && !u(s, \"gabsolute\") && (r = !0), n) {\n if (l <= 768) n.querySelector(\"img\");\n else if (r) {\n var a, h = s.offsetHeight, g = n.querySelector(\"img\"), v = this.elements[this.index].node, f = null !== (a = v.getAttribute(\"data-height\")) && void 0 !== a ? a : \"100vh\";\n g.setAttribute(\"style\", \"max-height: calc(\".concat(f, \" - \").concat(h, \"px)\")), s.setAttribute(\"style\", \"max-width: \".concat(g.offsetWidth, \"px;\"));\n }\n }\n if (i) {\n var p = P(this.settings.plyr.config, \"ratio\") ? this.settings.plyr.config.ratio : \"\";\n if (!p) {\n var m = i.clientWidth, y = i.clientHeight, b = m / y;\n p = \"\".concat(m / b, \":\").concat(y / b);\n }\n var S = p.split(\":\"), w = this.settings.videosWidth, T = this.settings.videosWidth, C = (T = z(w) || -1 !== w.indexOf(\"px\") ? parseInt(w) : -1 !== w.indexOf(\"vw\") ? l * parseInt(w) / 100 : -1 !== w.indexOf(\"vh\") ? o * parseInt(w) / 100 : -1 !== w.indexOf(\"%\") ? l * parseInt(w) / 100 : parseInt(i.clientWidth)) / (parseInt(S[0]) / parseInt(S[1]));\n if (C = Math.floor(C), r && (o -= s.offsetHeight), T > l || C > o || o < C && l > T) {\n var k = i.offsetWidth, E = i.offsetHeight, A = o / E, L = {\n width: k * A,\n height: E * A\n };\n i.parentNode.setAttribute(\"style\", \"max-width: \".concat(L.width, \"px\")), r && s.setAttribute(\"style\", \"max-width: \".concat(L.width, \"px;\"));\n } else i.parentNode.style.maxWidth = \"\".concat(w), r && s.setAttribute(\"style\", \"max-width: \".concat(w, \";\"));\n }\n }\n }\n }\n },\n {\n key: \"reload\",\n value: function() {\n this.init();\n }\n },\n {\n key: \"updateNavigationClasses\",\n value: function() {\n var e = this.loop();\n c(this.nextButton, \"disabled\"), c(this.prevButton, \"disabled\"), 0 == this.index && this.elements.length - 1 == 0 ? (d(this.prevButton, \"disabled\"), d(this.nextButton, \"disabled\")) : 0 !== this.index || e ? this.index !== this.elements.length - 1 || e || d(this.nextButton, \"disabled\") : d(this.prevButton, \"disabled\");\n }\n },\n {\n key: \"loop\",\n value: function() {\n var e = P(this.settings, \"loopAtEnd\") ? this.settings.loopAtEnd : null;\n return e = P(this.settings, \"loop\") ? this.settings.loop : e, e;\n }\n },\n {\n key: \"close\",\n value: function() {\n var e = this;\n if (!this.lightboxOpen) {\n if (this.events) {\n for(var t in this.events)this.events.hasOwnProperty(t) && this.events[t].destroy();\n this.events = null;\n }\n return !1;\n }\n if (this.closing) return !1;\n this.closing = !0, this.slidePlayerPause(this.activeSlide), this.fullElementsList && (this.elements = this.fullElementsList), this.bodyHiddenChildElms.length && r(this.bodyHiddenChildElms, function(e) {\n e.removeAttribute(\"aria-hidden\");\n }), d(this.modal, \"glightbox-closing\"), v(this.overlay, \"none\" == this.settings.openEffect ? \"none\" : this.settings.cssEfects.fade.out), v(this.activeSlide, this.settings.cssEfects[this.settings.closeEffect].out, function() {\n if (e.activeSlide = null, e.prevActiveSlideIndex = null, e.prevActiveSlide = null, e.built = !1, e.events) {\n for(var t in e.events)e.events.hasOwnProperty(t) && e.events[t].destroy();\n e.events = null;\n }\n var i = document.body;\n c(ee, \"glightbox-open\"), c(i, \"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer\"), e.modal.parentNode.removeChild(e.modal), e.trigger(\"close\"), C(e.settings.onClose) && e.settings.onClose();\n var n = document.querySelector(\".gcss-styles\");\n n && n.parentNode.removeChild(n), e.lightboxOpen = !1, e.closing = null;\n });\n }\n },\n {\n key: \"destroy\",\n value: function() {\n this.close(), this.clearAllEvents(), this.baseEvents && this.baseEvents.destroy();\n }\n },\n {\n key: \"on\",\n value: function(e, t) {\n var i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (!e || !C(t)) throw new TypeError(\"Event name and callback must be defined\");\n this.apiEvents.push({\n evt: e,\n once: i,\n callback: t\n });\n }\n },\n {\n key: \"once\",\n value: function(e, t) {\n this.on(e, t, !0);\n }\n },\n {\n key: \"trigger\",\n value: function(e) {\n var t = this, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = [];\n r(this.apiEvents, function(t, s) {\n var l = t.evt, o = t.once, r = t.callback;\n l == e && (r(i), o && n.push(s));\n }), n.length && r(n, function(e) {\n return t.apiEvents.splice(e, 1);\n });\n }\n },\n {\n key: \"clearAllEvents\",\n value: function() {\n this.apiEvents.splice(0, this.apiEvents.length);\n }\n },\n {\n key: \"version\",\n value: function() {\n return \"3.3.0\";\n }\n }\n ]);\n return function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = new ie(e);\n return t.init(), t;\n };\n});\n\n\n/**\n * Swiper 11.1.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 9, 2024\n */ /**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */ /* eslint-disable no-param-reassign */ function $8e504ae62a4f5a96$var$isObject(obj) {\n return obj !== null && typeof obj === \"object\" && \"constructor\" in obj && obj.constructor === Object;\n}\nfunction $8e504ae62a4f5a96$var$extend(target, src) {\n if (target === void 0) target = {};\n if (src === void 0) src = {};\n Object.keys(src).forEach((key)=>{\n if (typeof target[key] === \"undefined\") target[key] = src[key];\n else if ($8e504ae62a4f5a96$var$isObject(src[key]) && $8e504ae62a4f5a96$var$isObject(target[key]) && Object.keys(src[key]).length > 0) $8e504ae62a4f5a96$var$extend(target[key], src[key]);\n });\n}\nconst $8e504ae62a4f5a96$var$ssrDocument = {\n body: {},\n addEventListener () {},\n removeEventListener () {},\n activeElement: {\n blur () {},\n nodeName: \"\"\n },\n querySelector () {\n return null;\n },\n querySelectorAll () {\n return [];\n },\n getElementById () {\n return null;\n },\n createEvent () {\n return {\n initEvent () {}\n };\n },\n createElement () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute () {},\n getElementsByTagName () {\n return [];\n }\n };\n },\n createElementNS () {\n return {};\n },\n importNode () {\n return null;\n },\n location: {\n hash: \"\",\n host: \"\",\n hostname: \"\",\n href: \"\",\n origin: \"\",\n pathname: \"\",\n protocol: \"\",\n search: \"\"\n }\n};\nfunction $8e504ae62a4f5a96$export$39b482c5e57630a8() {\n const doc = typeof document !== \"undefined\" ? document : {};\n $8e504ae62a4f5a96$var$extend(doc, $8e504ae62a4f5a96$var$ssrDocument);\n return doc;\n}\nconst $8e504ae62a4f5a96$var$ssrWindow = {\n document: $8e504ae62a4f5a96$var$ssrDocument,\n navigator: {\n userAgent: \"\"\n },\n location: {\n hash: \"\",\n host: \"\",\n hostname: \"\",\n href: \"\",\n origin: \"\",\n pathname: \"\",\n protocol: \"\",\n search: \"\"\n },\n history: {\n replaceState () {},\n pushState () {},\n go () {},\n back () {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener () {},\n removeEventListener () {},\n getComputedStyle () {\n return {\n getPropertyValue () {\n return \"\";\n }\n };\n },\n Image () {},\n Date () {},\n screen: {},\n setTimeout () {},\n clearTimeout () {},\n matchMedia () {\n return {};\n },\n requestAnimationFrame (callback) {\n if (typeof setTimeout === \"undefined\") {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame (id) {\n if (typeof setTimeout === \"undefined\") return;\n clearTimeout(id);\n }\n};\nfunction $8e504ae62a4f5a96$export$407448d2b89b1813() {\n const win = typeof window !== \"undefined\" ? window : {};\n $8e504ae62a4f5a96$var$extend(win, $8e504ae62a4f5a96$var$ssrWindow);\n return win;\n}\n\n\n\nfunction $c4729edb2a042a40$export$23f2a1d2818174ef(classes) {\n if (classes === void 0) classes = \"\";\n return classes.trim().split(\" \").filter((c)=>!!c.trim());\n}\nfunction $c4729edb2a042a40$export$90a7f3efeed30595(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}\nfunction $c4729edb2a042a40$export$7ccc53e8f1e7dfc5(callback, delay) {\n if (delay === void 0) delay = 0;\n return setTimeout(callback, delay);\n}\nfunction $c4729edb2a042a40$export$4368d992c4eafac0() {\n return Date.now();\n}\nfunction $c4729edb2a042a40$var$getComputedStyle(el) {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n let style;\n if (window1.getComputedStyle) style = window1.getComputedStyle(el, null);\n if (!style && el.currentStyle) style = el.currentStyle;\n if (!style) style = el.style;\n return style;\n}\nfunction $c4729edb2a042a40$export$35e795649ee09318(el, axis) {\n if (axis === void 0) axis = \"x\";\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = $c4729edb2a042a40$var$getComputedStyle(el);\n if (window1.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(\",\").length > 6) curTransform = curTransform.split(\", \").map((a)=>a.replace(\",\", \".\")).join(\", \");\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window1.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 if (axis === \"x\") {\n // Latest Chrome and webkits Fix\n if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === \"y\") {\n // Latest Chrome and webkits Fix\n if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction $c4729edb2a042a40$export$882b5998b3b9117c(o) {\n return typeof o === \"object\" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === \"Object\";\n}\nfunction $c4729edb2a042a40$var$isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== \"undefined\" && typeof window.HTMLElement !== \"undefined\") return node instanceof HTMLElement;\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction $c4729edb2a042a40$export$3b14a55fb2447963() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = [\n \"__proto__\",\n \"constructor\",\n \"prototype\"\n ];\n for(let i = 1; i < arguments.length; i += 1){\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !$c4729edb2a042a40$var$isNode(nextSource)) {\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 ($c4729edb2a042a40$export$882b5998b3b9117c(to[nextKey]) && $c4729edb2a042a40$export$882b5998b3b9117c(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey];\n else $c4729edb2a042a40$export$3b14a55fb2447963(to[nextKey], nextSource[nextKey]);\n } else if (!$c4729edb2a042a40$export$882b5998b3b9117c(to[nextKey]) && $c4729edb2a042a40$export$882b5998b3b9117c(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey];\n else $c4729edb2a042a40$export$3b14a55fb2447963(to[nextKey], nextSource[nextKey]);\n } else to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nfunction $c4729edb2a042a40$export$2408f22a0fab9ae5(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction $c4729edb2a042a40$export$43caf9889c228507(_ref) {\n let { swiper: swiper, targetPosition: targetPosition, side: side } = _ref;\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = \"none\";\n window1.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? \"next\" : \"prev\";\n const isOutOfBound = (current, target)=>{\n return dir === \"next\" && current >= target || dir === \"prev\" && current <= target;\n };\n const animate = ()=>{\n time = new Date().getTime();\n if (startTime === null) startTime = time;\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) currentPosition = targetPosition;\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = \"hidden\";\n swiper.wrapperEl.style.scrollSnapType = \"\";\n setTimeout(()=>{\n swiper.wrapperEl.style.overflow = \"\";\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window1.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window1.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction $c4729edb2a042a40$export$39b482c5e57630a8(slideEl) {\n return slideEl.querySelector(\".swiper-slide-transform\") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(\".swiper-slide-transform\") || slideEl;\n}\nfunction $c4729edb2a042a40$export$f1e1789686576879(element, selector) {\n if (selector === void 0) selector = \"\";\n return [\n ...element.children\n ].filter((el)=>el.matches(selector));\n}\nfunction $c4729edb2a042a40$export$625550452a3fa3ec(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction $c4729edb2a042a40$export$db3b6bfb95261072(tag, classes) {\n if (classes === void 0) classes = [];\n const el = document.createElement(tag);\n el.classList.add(...Array.isArray(classes) ? classes : $c4729edb2a042a40$export$23f2a1d2818174ef(classes));\n return el;\n}\nfunction $c4729edb2a042a40$export$8b22cf2602fb60ce(el) {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const document1 = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n const box = el.getBoundingClientRect();\n const body = document1.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window1 ? window1.scrollY : el.scrollTop;\n const scrollLeft = el === window1 ? window1.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction $c4729edb2a042a40$export$9e5f44173e64f162(el, selector) {\n const prevEls = [];\n while(el.previousElementSibling){\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction $c4729edb2a042a40$export$ffb5f4729a158638(el, selector) {\n const nextEls = [];\n while(el.nextElementSibling){\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction $c4729edb2a042a40$export$ae1af26003f05816(el, prop) {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n return window1.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction $c4729edb2a042a40$export$dda1d9f60106f0e9(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while((child = child.previousSibling) !== null)if (child.nodeType === 1) i += 1;\n return i;\n }\n return undefined;\n}\nfunction $c4729edb2a042a40$export$407448d2b89b1813(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while(parent){\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else parents.push(parent);\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction $c4729edb2a042a40$export$342063e11d6c3cad(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener(\"transitionend\", fireCallBack);\n }\n if (callback) el.addEventListener(\"transitionend\", fireCallBack);\n}\nfunction $c4729edb2a042a40$export$2d1720544b23b823(el, size, includeMargins) {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n if (includeMargins) return el[size === \"width\" ? \"offsetWidth\" : \"offsetHeight\"] + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === \"width\" ? \"margin-right\" : \"margin-top\")) + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === \"width\" ? \"margin-left\" : \"margin-bottom\"));\n return el.offsetWidth;\n}\nfunction $c4729edb2a042a40$export$953cecd6e717a553(el) {\n return (Array.isArray(el) ? el : [\n el\n ]).filter((e)=>!!e);\n}\n\n\nlet $928de60d0cea4b62$var$support;\nfunction $928de60d0cea4b62$var$calcSupport() {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const document1 = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n return {\n smoothScroll: document1.documentElement && document1.documentElement.style && \"scrollBehavior\" in document1.documentElement.style,\n touch: !!(\"ontouchstart\" in window1 || window1.DocumentTouch && document1 instanceof window1.DocumentTouch)\n };\n}\nfunction $928de60d0cea4b62$var$getSupport() {\n if (!$928de60d0cea4b62$var$support) $928de60d0cea4b62$var$support = $928de60d0cea4b62$var$calcSupport();\n return $928de60d0cea4b62$var$support;\n}\nlet $928de60d0cea4b62$var$deviceCached;\nfunction $928de60d0cea4b62$var$calcDevice(_temp) {\n let { userAgent: userAgent } = _temp === void 0 ? {} : _temp;\n const support = $928de60d0cea4b62$var$getSupport();\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const platform = window1.navigator.platform;\n const ua = userAgent || window1.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window1.screen.width;\n const screenHeight = window1.screen.height;\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 windows = platform === \"Win32\";\n let macos = platform === \"MacIntel\";\n // iPadOs 13 fix\n const iPadScreens = [\n \"1024x1366\",\n \"1366x1024\",\n \"834x1194\",\n \"1194x834\",\n \"834x1112\",\n \"1112x834\",\n \"768x1024\",\n \"1024x768\",\n \"820x1180\",\n \"1180x820\",\n \"810x1080\",\n \"1080x810\"\n ];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [\n 0,\n 1,\n \"13_0_0\"\n ];\n macos = false;\n }\n // Android\n if (android && !windows) {\n device.os = \"android\";\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = \"ios\";\n device.ios = true;\n }\n // Export object\n return device;\n}\nfunction $928de60d0cea4b62$var$getDevice(overrides) {\n if (overrides === void 0) overrides = {};\n if (!$928de60d0cea4b62$var$deviceCached) $928de60d0cea4b62$var$deviceCached = $928de60d0cea4b62$var$calcDevice(overrides);\n return $928de60d0cea4b62$var$deviceCached;\n}\nlet $928de60d0cea4b62$var$browser;\nfunction $928de60d0cea4b62$var$calcBrowser() {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const device = $928de60d0cea4b62$var$getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window1.navigator.userAgent.toLowerCase();\n return ua.indexOf(\"safari\") >= 0 && ua.indexOf(\"chrome\") < 0 && ua.indexOf(\"android\") < 0;\n }\n if (isSafari()) {\n const ua = String(window1.navigator.userAgent);\n if (ua.includes(\"Version/\")) {\n const [major, minor] = ua.split(\"Version/\")[1].split(\" \")[0].split(\".\").map((num)=>Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window1.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix: needPerspectiveFix,\n need3dFix: need3dFix,\n isWebView: isWebView\n };\n}\nfunction $928de60d0cea4b62$var$getBrowser() {\n if (!$928de60d0cea4b62$var$browser) $928de60d0cea4b62$var$browser = $928de60d0cea4b62$var$calcBrowser();\n return $928de60d0cea4b62$var$browser;\n}\nfunction $928de60d0cea4b62$var$Resize(_ref) {\n let { swiper: swiper, on: on, emit: emit } = _ref;\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = ()=>{\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit(\"beforeResize\");\n emit(\"resize\");\n };\n const createObserver = ()=>{\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver((entries)=>{\n animationFrame = window1.requestAnimationFrame(()=>{\n const { width: width, height: height } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach((_ref2)=>{\n let { contentBoxSize: contentBoxSize, contentRect: contentRect, target: target } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) resizeHandler();\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = ()=>{\n if (animationFrame) window1.cancelAnimationFrame(animationFrame);\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = ()=>{\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit(\"orientationchange\");\n };\n on(\"init\", ()=>{\n if (swiper.params.resizeObserver && typeof window1.ResizeObserver !== \"undefined\") {\n createObserver();\n return;\n }\n window1.addEventListener(\"resize\", resizeHandler);\n window1.addEventListener(\"orientationchange\", orientationChangeHandler);\n });\n on(\"destroy\", ()=>{\n removeObserver();\n window1.removeEventListener(\"resize\", resizeHandler);\n window1.removeEventListener(\"orientationchange\", orientationChangeHandler);\n });\n}\nfunction $928de60d0cea4b62$var$Observer(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n const observers = [];\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const attach = function(target, options) {\n if (options === void 0) options = {};\n const ObserverFunc = window1.MutationObserver || window1.WebkitMutationObserver;\n const observer = new ObserverFunc((mutations)=>{\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit(\"observerUpdate\", mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit(\"observerUpdate\", mutations[0]);\n };\n if (window1.requestAnimationFrame) window1.requestAnimationFrame(observerUpdate);\n else window1.setTimeout(observerUpdate, 0);\n });\n observer.observe(target, {\n attributes: typeof options.attributes === \"undefined\" ? true : options.attributes,\n childList: typeof options.childList === \"undefined\" ? true : options.childList,\n characterData: typeof options.characterData === \"undefined\" ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = ()=>{\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = (0, $c4729edb2a042a40$export$407448d2b89b1813)(swiper.hostEl);\n for(let i = 0; i < containerParents.length; i += 1)attach(containerParents[i]);\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = ()=>{\n observers.forEach((observer)=>{\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on(\"init\", init);\n on(\"destroy\", destroy);\n}\n/* eslint-disable no-underscore-dangle */ var $928de60d0cea4b62$var$eventsEmitter = {\n on (events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== \"function\") return self;\n const method = priority ? \"unshift\" : \"push\";\n events.split(\" \").forEach((event)=>{\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once (events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== \"function\") return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) delete onceHandler.__emitterProxy;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny (handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== \"function\") return self;\n const method = priority ? \"unshift\" : \"push\";\n if (self.eventsAnyListeners.indexOf(handler) < 0) self.eventsAnyListeners[method](handler);\n return self;\n },\n offAny (handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) self.eventsAnyListeners.splice(index, 1);\n return self;\n },\n off (events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(\" \").forEach((event)=>{\n if (typeof handler === \"undefined\") self.eventsListeners[event] = [];\n else if (self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler, index)=>{\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) self.eventsListeners[event].splice(index, 1);\n });\n });\n return self;\n },\n emit () {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\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 data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(\" \");\n eventsArray.forEach((event)=>{\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) self.eventsAnyListeners.forEach((eventHandler)=>{\n eventHandler.apply(context, [\n event,\n ...data\n ]);\n });\n if (self.eventsListeners && self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler)=>{\n eventHandler.apply(context, data);\n });\n });\n return self;\n }\n};\nfunction $928de60d0cea4b62$var$updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== \"undefined\" && swiper.params.width !== null) width = swiper.params.width;\n else width = el.clientWidth;\n if (typeof swiper.params.height !== \"undefined\" && swiper.params.height !== null) height = swiper.params.height;\n else height = el.clientHeight;\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) return;\n // Subtract paddings\n width = width - parseInt((0, $c4729edb2a042a40$export$ae1af26003f05816)(el, \"padding-left\") || 0, 10) - parseInt((0, $c4729edb2a042a40$export$ae1af26003f05816)(el, \"padding-right\") || 0, 10);\n height = height - parseInt((0, $c4729edb2a042a40$export$ae1af26003f05816)(el, \"padding-top\") || 0, 10) - parseInt((0, $c4729edb2a042a40$export$ae1af26003f05816)(el, \"padding-bottom\") || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width: width,\n height: height,\n size: swiper.isHorizontal() ? width : height\n });\n}\nfunction $928de60d0cea4b62$var$updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const { wrapperEl: wrapperEl, slidesEl: slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL: wrongRTL } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = (0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === \"function\") offsetBefore = params.slidesOffsetBefore.call(swiper);\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === \"function\") offsetAfter = params.slidesOffsetAfter.call(swiper);\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === \"undefined\") return;\n if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiperSize;\n else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n swiper.virtualSize = -spaceBetween;\n // reset margins\n slides.forEach((slideEl)=>{\n if (rtl) slideEl.style.marginLeft = \"\";\n else slideEl.style.marginRight = \"\";\n slideEl.style.marginBottom = \"\";\n slideEl.style.marginTop = \"\";\n });\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n (0, $c4729edb2a042a40$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-before\", \"\");\n (0, $c4729edb2a042a40$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-after\", \"\");\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) swiper.grid.initSlides(slides);\n else if (swiper.grid) swiper.grid.unsetSlides();\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === \"auto\" && params.breakpoints && Object.keys(params.breakpoints).filter((key)=>{\n return typeof params.breakpoints[key].slidesPerView !== \"undefined\";\n }).length > 0;\n for(let i = 0; i < slidesLength; i += 1){\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) swiper.grid.updateSlide(i, slide, slides);\n if (slides[i] && (0, $c4729edb2a042a40$export$ae1af26003f05816)(slide, \"display\") === \"none\") continue; // eslint-disable-line\n if (params.slidesPerView === \"auto\") {\n if (shouldResetSlideSize) slides[i].style[swiper.getDirectionLabel(\"width\")] = ``;\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) slide.style.transform = \"none\";\n if (currentWebKitTransform) slide.style.webkitTransform = \"none\";\n if (params.roundLengths) slideSize = swiper.isHorizontal() ? (0, $c4729edb2a042a40$export$2d1720544b23b823)(slide, \"width\", true) : (0, $c4729edb2a042a40$export$2d1720544b23b823)(slide, \"height\", true);\n else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, \"width\");\n const paddingLeft = getDirectionPropertyValue(slideStyles, \"padding-left\");\n const paddingRight = getDirectionPropertyValue(slideStyles, \"padding-right\");\n const marginLeft = getDirectionPropertyValue(slideStyles, \"margin-left\");\n const marginRight = getDirectionPropertyValue(slideStyles, \"margin-right\");\n const boxSizing = slideStyles.getPropertyValue(\"box-sizing\");\n if (boxSizing && boxSizing === \"border-box\") slideSize = width + marginLeft + marginRight;\n else {\n const { clientWidth: clientWidth, offsetWidth: offsetWidth } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) slide.style.transform = currentTransform;\n if (currentWebKitTransform) slide.style.webkitTransform = currentWebKitTransform;\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 if (slides[i]) slides[i].style[swiper.getDirectionLabel(\"width\")] = `${slideSize}px`;\n }\n if (slides[i]) slides[i].swiperSlideSize = slideSize;\n slidesSizesGrid.push(slideSize);\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) < 0.001) 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 swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === \"slide\" || params.effect === \"coverflow\")) wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n if (params.setWrapperSize) wrapperEl.style[swiper.getDirectionLabel(\"width\")] = `${swiper.virtualSize + spaceBetween}px`;\n if (gridEnabled) swiper.grid.updateWrapperSize(slideSize, snapGrid);\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const 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) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) snapGrid.push(swiper.virtualSize - swiperSize);\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for(let i = 0; i < groups; i += 1)snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n for(let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1){\n if (params.slidesPerGroup === 1) snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [\n 0\n ];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? \"marginLeft\" : swiper.getDirectionLabel(\"marginRight\");\n slides.filter((_, slideIndex)=>{\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) return false;\n return true;\n }).forEach((slideEl)=>{\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue)=>{\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= 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 if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue)=>{\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= 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 Object.assign(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n (0, $c4729edb2a042a40$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-before\", `${-snapGrid[0]}px`);\n (0, $c4729edb2a042a40$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-after\", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map((v)=>v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map((v)=>v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) swiper.emit(\"slidesLengthChange\");\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit(\"snapGridLengthChange\");\n }\n if (slidesGrid.length !== previousSlidesGridLength) swiper.emit(\"slidesGridLengthChange\");\n if (params.watchSlidesProgress) swiper.updateSlidesOffset();\n swiper.emit(\"slidesUpdated\");\n if (!isVirtual && !params.cssMode && (params.effect === \"slide\" || params.effect === \"fade\")) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) swiper.el.classList.remove(backFaceHiddenClass);\n }\n}\nfunction $928de60d0cea4b62$var$updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === \"number\") swiper.setTransition(speed);\n else if (speed === true) swiper.setTransition(swiper.params.speed);\n const getSlideByIndex = (index)=>{\n if (isVirtual) return swiper.slides[swiper.getSlideIndexByData(index)];\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== \"auto\" && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) (swiper.visibleSlides || []).forEach((slide)=>{\n activeSlides.push(slide);\n });\n else for(i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1){\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n } else activeSlides.push(getSlideByIndex(swiper.activeIndex));\n // Find new height from highest slide in view\n for(i = 0; i < activeSlides.length; i += 1)if (typeof activeSlides[i] !== \"undefined\") {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\nfunction $928de60d0cea4b62$var$updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for(let i = 0; i < slides.length; i += 1)slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n}\nfunction $928de60d0cea4b62$var$updateSlidesProgress(translate) {\n if (translate === void 0) translate = this && this.translate || 0;\n const swiper = this;\n const params = swiper.params;\n const { slides: slides, rtlTranslate: rtl, snapGrid: snapGrid } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === \"undefined\") swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n // Visible Slides\n slides.forEach((slideEl)=>{\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiper.size;\n else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n for(let i = 0; i < slides.length; i += 1){\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) slideOffset -= slides[0].swiperSlideOffset;\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) slides[i].classList.add(params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\nfunction $928de60d0cea4b62$var$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: progress, isBeginning: isBeginning, isEnd: isEnd, progressLoop: progressLoop } = 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 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n else progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress: progress,\n progressLoop: progressLoop,\n isBeginning: isBeginning,\n isEnd: isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) swiper.emit(\"reachBeginning toEdge\");\n if (isEnd && !wasEnd) swiper.emit(\"reachEnd toEdge\");\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) swiper.emit(\"fromEdge\");\n swiper.emit(\"progress\", progress);\n}\nconst $928de60d0cea4b62$var$toggleSlideClasses = (slideEl, condition, className)=>{\n if (condition && !slideEl.classList.contains(className)) slideEl.classList.add(className);\n else if (!condition && slideEl.classList.contains(className)) slideEl.classList.remove(className);\n};\nfunction $928de60d0cea4b62$var$updateSlidesClasses() {\n const swiper = this;\n const { slides: slides, params: params, slidesEl: slidesEl, activeIndex: activeIndex } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = (selector)=>{\n return (0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else if (gridEnabled) {\n activeSlide = slides.filter((slideEl)=>slideEl.column === activeIndex)[0];\n nextSlide = slides.filter((slideEl)=>slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter((slideEl)=>slideEl.column === activeIndex - 1)[0];\n } else activeSlide = slides[activeIndex];\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = (0, $c4729edb2a042a40$export$ffb5f4729a158638)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) nextSlide = slides[0];\n // Prev Slide\n prevSlide = (0, $c4729edb2a042a40$export$9e5f44173e64f162)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n params.loop;\n }\n }\n slides.forEach((slideEl)=>{\n $928de60d0cea4b62$var$toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n $928de60d0cea4b62$var$toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n $928de60d0cea4b62$var$toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\nconst $928de60d0cea4b62$var$processLazyPreloader = (swiper, imageEl)=>{\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = ()=>swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n else // init later\n requestAnimationFrame(()=>{\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst $928de60d0cea4b62$var$unlazy = (swiper, index)=>{\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute(\"loading\");\n};\nconst $928de60d0cea4b62$var$preload = (swiper)=>{\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [\n activeColumn - amount\n ];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i)=>{\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i)=>{\n if (preloadColumns.includes(slideEl.column)) $928de60d0cea4b62$var$unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) for(let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1){\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) $928de60d0cea4b62$var$unlazy(swiper, realIndex);\n }\n else {\n for(let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1)if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) $928de60d0cea4b62$var$unlazy(swiper, i);\n }\n};\nfunction $928de60d0cea4b62$var$getActiveIndexByTranslate(swiper) {\n const { slidesGrid: slidesGrid, params: params } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\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) activeIndex = i;\n else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) activeIndex = i + 1;\n } else if (translate >= slidesGrid[i]) activeIndex = i;\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === \"undefined\") activeIndex = 0;\n }\n return activeIndex;\n}\nfunction $928de60d0cea4b62$var$updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const { snapGrid: snapGrid, params: params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = (aIndex)=>{\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) realIndex = swiper.virtual.slides.length + realIndex;\n if (realIndex >= swiper.virtual.slides.length) realIndex -= swiper.virtual.slides.length;\n return realIndex;\n };\n if (typeof activeIndex === \"undefined\") activeIndex = $928de60d0cea4b62$var$getActiveIndexByTranslate(swiper);\n if (snapGrid.indexOf(translate) >= 0) 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 && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit(\"snapIndexChange\");\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) realIndex = getVirtualRealIndex(activeIndex);\n else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter((slideEl)=>slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute(\"data-swiper-slide-index\"), 10);\n if (Number.isNaN(activeSlideIndex)) activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute(\"data-swiper-slide-index\");\n if (slideIndex) realIndex = parseInt(slideIndex, 10);\n else realIndex = activeIndex;\n } else realIndex = activeIndex;\n Object.assign(swiper, {\n previousSnapIndex: previousSnapIndex,\n snapIndex: snapIndex,\n previousRealIndex: previousRealIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex\n });\n if (swiper.initialized) $928de60d0cea4b62$var$preload(swiper);\n swiper.emit(\"activeIndexChange\");\n swiper.emit(\"snapIndexChange\");\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) swiper.emit(\"realIndexChange\");\n swiper.emit(\"slideChange\");\n }\n}\nfunction $928de60d0cea4b62$var$updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) [\n ...path.slice(path.indexOf(el) + 1, path.length)\n ].forEach((pathEl)=>{\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) slide = pathEl;\n });\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for(let i = 0; i < swiper.slides.length; i += 1)if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) swiper.clickedIndex = parseInt(slide.getAttribute(\"data-swiper-slide-index\"), 10);\n else swiper.clickedIndex = slideIndex;\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) swiper.slideToClickedSlide();\n}\nvar $928de60d0cea4b62$var$update = {\n updateSize: $928de60d0cea4b62$var$updateSize,\n updateSlides: $928de60d0cea4b62$var$updateSlides,\n updateAutoHeight: $928de60d0cea4b62$var$updateAutoHeight,\n updateSlidesOffset: $928de60d0cea4b62$var$updateSlidesOffset,\n updateSlidesProgress: $928de60d0cea4b62$var$updateSlidesProgress,\n updateProgress: $928de60d0cea4b62$var$updateProgress,\n updateSlidesClasses: $928de60d0cea4b62$var$updateSlidesClasses,\n updateActiveIndex: $928de60d0cea4b62$var$updateActiveIndex,\n updateClickedSlide: $928de60d0cea4b62$var$updateClickedSlide\n};\nfunction $928de60d0cea4b62$var$getSwiperTranslate(axis) {\n if (axis === void 0) axis = this.isHorizontal() ? \"x\" : \"y\";\n const swiper = this;\n const { params: params, rtlTranslate: rtl, translate: translate, wrapperEl: wrapperEl } = swiper;\n if (params.virtualTranslate) return rtl ? -translate : translate;\n if (params.cssMode) return translate;\n let currentTranslate = (0, $c4729edb2a042a40$export$35e795649ee09318)(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\nfunction $928de60d0cea4b62$var$setTranslate(translate, byController) {\n const swiper = this;\n const { rtlTranslate: rtl, params: params, wrapperEl: wrapperEl, progress: progress } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) x = rtl ? -translate : translate;\n else y = translate;\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) wrapperEl[swiper.isHorizontal() ? \"scrollLeft\" : \"scrollTop\"] = swiper.isHorizontal() ? -x : -y;\n else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) x -= swiper.cssOverflowAdjustment();\n else y -= swiper.cssOverflowAdjustment();\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) newProgress = 0;\n else newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n if (newProgress !== progress) swiper.updateProgress(translate);\n swiper.emit(\"setTranslate\", swiper.translate, byController);\n}\nfunction $928de60d0cea4b62$var$minTranslate() {\n return -this.snapGrid[0];\n}\nfunction $928de60d0cea4b62$var$maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\nfunction $928de60d0cea4b62$var$translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) translate = 0;\n if (speed === void 0) speed = this.params.speed;\n if (runCallbacks === void 0) runCallbacks = true;\n if (translateBounds === void 0) translateBounds = true;\n const swiper = this;\n const { params: params, wrapperEl: wrapperEl } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) return false;\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 // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = -newTranslate;\n else {\n if (!swiper.support.smoothScroll) {\n (0, $c4729edb2a042a40$export$43caf9889c228507)({\n swiper: swiper,\n targetPosition: -newTranslate,\n side: isH ? \"left\" : \"top\"\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? \"left\" : \"top\"]: -newTranslate,\n behavior: \"smooth\"\n });\n }\n return true;\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) swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener(\"transitionend\", swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) swiper.emit(\"transitionEnd\");\n };\n swiper.wrapperEl.addEventListener(\"transitionend\", swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\nvar $928de60d0cea4b62$var$translate = {\n getTranslate: $928de60d0cea4b62$var$getSwiperTranslate,\n setTranslate: $928de60d0cea4b62$var$setTranslate,\n minTranslate: $928de60d0cea4b62$var$minTranslate,\n maxTranslate: $928de60d0cea4b62$var$maxTranslate,\n translateTo: $928de60d0cea4b62$var$translateTo\n};\nfunction $928de60d0cea4b62$var$setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : \"\";\n }\n swiper.emit(\"setTransition\", duration, byController);\n}\nfunction $928de60d0cea4b62$var$transitionEmit(_ref) {\n let { swiper: swiper, runCallbacks: runCallbacks, direction: direction, step: step } = _ref;\n const { activeIndex: activeIndex, previousIndex: previousIndex } = swiper;\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 swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === \"reset\") {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === \"next\") swiper.emit(`slideNextTransition${step}`);\n else swiper.emit(`slidePrevTransition${step}`);\n }\n}\nfunction $928de60d0cea4b62$var$transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) runCallbacks = true;\n const swiper = this;\n const { params: params } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) swiper.updateAutoHeight();\n $928de60d0cea4b62$var$transitionEmit({\n swiper: swiper,\n runCallbacks: runCallbacks,\n direction: direction,\n step: \"Start\"\n });\n}\nfunction $928de60d0cea4b62$var$transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) runCallbacks = true;\n const swiper = this;\n const { params: params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n $928de60d0cea4b62$var$transitionEmit({\n swiper: swiper,\n runCallbacks: runCallbacks,\n direction: direction,\n step: \"End\"\n });\n}\nvar $928de60d0cea4b62$var$transition = {\n setTransition: $928de60d0cea4b62$var$setTransition,\n transitionStart: $928de60d0cea4b62$var$transitionStart,\n transitionEnd: $928de60d0cea4b62$var$transitionEnd\n};\nfunction $928de60d0cea4b62$var$slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) index = 0;\n if (runCallbacks === void 0) runCallbacks = true;\n if (typeof index === \"string\") index = parseInt(index, 10);\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, previousIndex: previousIndex, activeIndex: activeIndex, rtlTranslate: rtl, wrapperEl: wrapperEl, enabled: enabled } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) return false;\n if (typeof speed === \"undefined\") speed = swiper.params.speed;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) for(let i = 0; i < slidesGrid.length; i += 1){\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== \"undefined\") {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) slideIndex = i;\n else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) slideIndex = i + 1;\n } else if (normalizedTranslate >= normalizedGrid) slideIndex = i;\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) return false;\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) swiper.emit(\"beforeSlideChangeStart\");\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = \"next\";\n else if (slideIndex < activeIndex) direction = \"prev\";\n else direction = \"reset\";\n // Update Index\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) swiper.updateAutoHeight();\n swiper.updateSlidesClasses();\n if (params.effect !== \"slide\") swiper.setTranslate(translate);\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 const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = \"none\";\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(()=>{\n wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = t;\n });\n } else wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = t;\n if (isVirtual) requestAnimationFrame(()=>{\n swiper.wrapperEl.style.scrollSnapType = \"\";\n swiper._immediateVirtual = false;\n });\n } else {\n if (!swiper.support.smoothScroll) {\n (0, $c4729edb2a042a40$export$43caf9889c228507)({\n swiper: swiper,\n targetPosition: t,\n side: isH ? \"left\" : \"top\"\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? \"left\" : \"top\"]: t,\n behavior: \"smooth\"\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit(\"beforeTransitionStart\", speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) swiper.transitionEnd(runCallbacks, direction);\n else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener(\"transitionend\", swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n swiper.wrapperEl.addEventListener(\"transitionend\", swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\nfunction $928de60d0cea4b62$var$slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) index = 0;\n if (runCallbacks === void 0) runCallbacks = true;\n if (typeof index === \"string\") {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === \"undefined\") speed = swiper.params.speed;\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === slideIndex)[0].column;\n } else targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const { centeredSlides: centeredSlides } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === \"auto\") slidesPerView = swiper.slidesPerViewDynamic();\n else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) slidesPerView = slidesPerView + 1;\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n if (internal && centeredSlides && swiper.params.slidesPerView !== \"auto\" && !gridEnabled) needLoopFix = false;\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? \"prev\" : \"next\" : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? \"next\" : \"prev\";\n swiper.loopFix({\n direction: direction,\n slideTo: true,\n activeSlideIndex: direction === \"next\" ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === \"next\" ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === slideIndex)[0].column;\n } else newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n requestAnimationFrame(()=>{\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n/* eslint no-unused-vars: \"off\" */ function $928de60d0cea4b62$var$slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) runCallbacks = true;\n const swiper = this;\n const { enabled: enabled, params: params, animating: animating } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === \"undefined\") speed = swiper.params.speed;\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === \"auto\" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) perGroup = Math.max(swiper.slidesPerViewDynamic(\"current\", true), 1);\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: \"next\"\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(()=>{\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) return swiper.slideTo(0, speed, runCallbacks, internal);\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $928de60d0cea4b62$var$slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) runCallbacks = true;\n const swiper = this;\n const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, rtlTranslate: rtlTranslate, enabled: enabled, animating: animating } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === \"undefined\") speed = swiper.params.speed;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: \"prev\"\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.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 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === \"undefined\" && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex)=>{\n if (normalizedTranslate >= snap) // prevSnap = snap;\n prevSnapIndex = snapIndex;\n });\n if (typeof prevSnapIndex !== \"undefined\") prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n let prevIndex = 0;\n if (typeof prevSnap !== \"undefined\") {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === \"auto\" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic(\"previous\", true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(()=>{\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $928de60d0cea4b62$var$slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) runCallbacks = true;\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === \"undefined\") speed = swiper.params.speed;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $928de60d0cea4b62$var$slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) runCallbacks = true;\n if (threshold === void 0) threshold = 0.5;\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === \"undefined\") speed = swiper.params.speed;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n 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) index += swiper.params.slidesPerGroup;\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) index -= swiper.params.slidesPerGroup;\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction $928de60d0cea4b62$var$slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const { params: params, slidesEl: slidesEl } = swiper;\n const slidesPerView = params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute(\"data-swiper-slide-index\"), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex((0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n swiper.slideTo(slideToIndex);\n });\n } else swiper.slideTo(slideToIndex);\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex((0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n swiper.slideTo(slideToIndex);\n });\n } else swiper.slideTo(slideToIndex);\n } else swiper.slideTo(slideToIndex);\n}\nvar $928de60d0cea4b62$var$slide = {\n slideTo: $928de60d0cea4b62$var$slideTo,\n slideToLoop: $928de60d0cea4b62$var$slideToLoop,\n slideNext: $928de60d0cea4b62$var$slideNext,\n slidePrev: $928de60d0cea4b62$var$slidePrev,\n slideReset: $928de60d0cea4b62$var$slideReset,\n slideToClosest: $928de60d0cea4b62$var$slideToClosest,\n slideToClickedSlide: $928de60d0cea4b62$var$slideToClickedSlide\n};\nfunction $928de60d0cea4b62$var$loopCreate(slideRealIndex) {\n const swiper = this;\n const { params: params, slidesEl: slidesEl } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = ()=>{\n const slides = (0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index)=>{\n el.setAttribute(\"data-swiper-slide-index\", index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = (amountOfSlides)=>{\n for(let i = 0; i < amountOfSlides; i += 1){\n const slideEl = swiper.isElement ? (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"swiper-slide\", [\n params.slideBlankClass\n ]) : (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", [\n params.slideClass,\n params.slideBlankClass\n ]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else (0, $c4729edb2a042a40$export$625550452a3fa3ec)(\"Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)\");\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else (0, $c4729edb2a042a40$export$625550452a3fa3ec)(\"Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)\");\n initSlides();\n } else initSlides();\n swiper.loopFix({\n slideRealIndex: slideRealIndex,\n direction: params.centeredSlides ? undefined : \"next\"\n });\n}\nfunction $928de60d0cea4b62$var$loopFix(_temp) {\n let { slideRealIndex: slideRealIndex, slideTo: slideTo = true, direction: direction, setTranslate: setTranslate, activeSlideIndex: activeSlideIndex, byController: byController, byMousewheel: byMousewheel } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit(\"beforeLoopFix\");\n const { slides: slides, allowSlidePrev: allowSlidePrev, allowSlideNext: allowSlideNext, slidesEl: slidesEl, params: params } = swiper;\n const { centeredSlides: centeredSlides } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n else if (swiper.snapIndex === swiper.snapGrid.length - 1) swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit(\"loopFix\");\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === \"auto\") slidesPerView = swiper.slidesPerViewDynamic();\n else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) slidesPerView = slidesPerView + 1;\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) (0, $c4729edb2a042a40$export$625550452a3fa3ec)(\"Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters\");\n else if (gridEnabled && params.grid.fill === \"row\") (0, $c4729edb2a042a40$export$625550452a3fa3ec)(\"Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`\");\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === \"undefined\") activeSlideIndex = swiper.getSlideIndex(slides.filter((el)=>el.classList.contains(params.slideActiveClass))[0]);\n else activeIndex = activeSlideIndex;\n const isNext = direction === \"next\" || !direction;\n const isPrev = direction === \"prev\" || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === \"undefined\" ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for(let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1){\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for(let i = slides.length - 1; i >= 0; i -= 1)if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else prependSlidesIndexes.push(cols - index - 1);\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for(let i = 0; i < slidesAppended; i += 1){\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) slides.forEach((slide, slideIndex)=>{\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n else appendSlidesIndexes.push(index);\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(()=>{\n swiper.__preventObserver__ = false;\n });\n if (isPrev) prependSlidesIndexes.forEach((index)=>{\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n if (isNext) appendSlidesIndexes.forEach((index)=>{\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n swiper.recalcSlides();\n if (params.slidesPerView === \"auto\") swiper.updateSlides();\n else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) swiper.slides.forEach((slide, slideIndex)=>{\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n if (params.watchSlidesProgress) swiper.updateSlidesOffset();\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === \"undefined\") {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) swiper.setTranslate(swiper.translate - diff);\n else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === \"undefined\") {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) swiper.setTranslate(swiper.translate - diff);\n else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex: slideRealIndex,\n direction: direction,\n setTranslate: setTranslate,\n activeSlideIndex: activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) swiper.controller.control.forEach((c)=>{\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n swiper.emit(\"loopFix\");\n}\nfunction $928de60d0cea4b62$var$loopDestroy() {\n const swiper = this;\n const { params: params, slidesEl: slidesEl } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach((slideEl)=>{\n const index = typeof slideEl.swiperSlideIndex === \"undefined\" ? slideEl.getAttribute(\"data-swiper-slide-index\") * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach((slideEl)=>{\n slideEl.removeAttribute(\"data-swiper-slide-index\");\n });\n newSlidesOrder.forEach((slideEl)=>{\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\nvar $928de60d0cea4b62$var$loop = {\n loopCreate: $928de60d0cea4b62$var$loopCreate,\n loopFix: $928de60d0cea4b62$var$loopFix,\n loopDestroy: $928de60d0cea4b62$var$loopDestroy\n};\nfunction $928de60d0cea4b62$var$setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === \"container\" ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) swiper.__preventObserver__ = true;\n el.style.cursor = \"move\";\n el.style.cursor = moving ? \"grabbing\" : \"grab\";\n if (swiper.isElement) requestAnimationFrame(()=>{\n swiper.__preventObserver__ = false;\n });\n}\nfunction $928de60d0cea4b62$var$unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n if (swiper.isElement) swiper.__preventObserver__ = true;\n swiper[swiper.params.touchEventsTarget === \"container\" ? \"el\" : \"wrapperEl\"].style.cursor = \"\";\n if (swiper.isElement) requestAnimationFrame(()=>{\n swiper.__preventObserver__ = false;\n });\n}\nvar $928de60d0cea4b62$var$grabCursor = {\n setGrabCursor: $928de60d0cea4b62$var$setGrabCursor,\n unsetGrabCursor: $928de60d0cea4b62$var$unsetGrabCursor\n};\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction $928de60d0cea4b62$var$closestElement(selector, base) {\n if (base === void 0) base = this;\n function __closestFrom(el) {\n if (!el || el === (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)() || el === (0, $8e504ae62a4f5a96$export$407448d2b89b1813)()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) return null;\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction $928de60d0cea4b62$var$preventEdgeSwipe(swiper, event, startX) {\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const { params: params } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window1.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === \"prevent\") {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction $928de60d0cea4b62$var$onTouchStart(event) {\n const swiper = this;\n const document1 = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === \"pointerdown\") {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) return;\n data.pointerId = e.pointerId;\n } else if (e.type === \"touchstart\" && e.targetTouches.length === 1) data.touchId = e.targetTouches[0].identifier;\n if (e.type === \"touchstart\") {\n // don't proceed touch event\n $928de60d0cea4b62$var$preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const { params: params, touches: touches, enabled: enabled } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === \"mouse\") return;\n if (swiper.animating && params.preventInteractionOnTransition) return;\n if (!swiper.animating && params.cssMode && params.loop) swiper.loopFix();\n let targetEl = e.target;\n if (params.touchEventsTarget === \"wrapper\") {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if (\"which\" in e && e.which === 3) return;\n if (\"button\" in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== \"\";\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) targetEl = eventPath[0];\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? $928de60d0cea4b62$var$closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n if (!$928de60d0cea4b62$var$preventEdgeSwipe(swiper, e, startX)) return;\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = (0, $c4729edb2a042a40$export$4368d992c4eafac0)();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === \"SELECT\") data.isTouched = false;\n }\n if (document1.activeElement && document1.activeElement.matches(data.focusableElements) && document1.activeElement !== targetEl) document1.activeElement.blur();\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) e.preventDefault();\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) swiper.freeMode.onTouchStart();\n swiper.emit(\"touchStart\", e);\n}\nfunction $928de60d0cea4b62$var$onTouchMove(event) {\n const document1 = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params: params, touches: touches, rtlTranslate: rtl, enabled: enabled } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === \"mouse\") return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === \"pointermove\") {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === \"touchmove\") {\n targetTouch = [\n ...e.changedTouches\n ].filter((t)=>t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else targetTouch = e;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) swiper.emit(\"touchMoveOpposite\", e);\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) swiper.allowClick = false;\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = (0, $c4729edb2a042a40$export$4368d992c4eafac0)();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) // Vertical\n {\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) return;\n }\n if (document1.activeElement) {\n if (e.target === document1.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) swiper.emit(\"touchMove\", e);\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === \"undefined\") {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) data.isScrolling = false;\n else // 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 if (data.isScrolling) swiper.emit(\"touchMoveOpposite\", e);\n if (typeof data.startMoving === \"undefined\") {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) data.startMoving = true;\n }\n if (data.isScrolling || e.type === \"touchmove\" && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) return;\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) e.preventDefault();\n if (params.touchMoveStopPropagation && !params.nested) e.stopPropagation();\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? \"prev\" : \"next\";\n swiper.touchesDirection = touchesDiff > 0 ? \"prev\" : \"next\";\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === \"next\" && swiper.allowSlideNext || swiper.touchesDirection === \"prev\" && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) swiper.loopFix({\n direction: swiper.swipeDirection\n });\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent(\"transitionend\", {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(true);\n swiper.emit(\"sliderFirstMove\", e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit(\"sliderMove\", e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) resistanceRatio = 0;\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) swiper.loopFix({\n direction: \"prev\",\n setTranslate: true,\n activeSlideIndex: 0\n });\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) swiper.loopFix({\n direction: \"next\",\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n if (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) e.preventedByNestedSwiper = true;\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === \"next\" && data.currentTranslate < data.startTranslate) data.currentTranslate = data.startTranslate;\n if (!swiper.allowSlidePrev && swiper.swipeDirection === \"prev\" && data.currentTranslate > data.startTranslate) data.currentTranslate = data.startTranslate;\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) data.currentTranslate = data.startTranslate;\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 if (!params.followFinger || params.cssMode) return;\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) swiper.freeMode.onTouchMove();\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\nfunction $928de60d0cea4b62$var$onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === \"touchend\" || e.type === \"touchcancel\";\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [\n ...e.changedTouches\n ].filter((t)=>t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if ([\n \"pointercancel\",\n \"pointerout\",\n \"pointerleave\",\n \"contextmenu\"\n ].includes(e.type)) {\n const proceed = [\n \"pointercancel\",\n \"contextmenu\"\n ].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) return;\n }\n data.pointerId = null;\n data.touchId = null;\n const { params: params, touches: touches, rtlTranslate: rtl, slidesGrid: slidesGrid, enabled: enabled } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === \"mouse\") return;\n if (data.allowTouchCallbacks) swiper.emit(\"touchEnd\", e);\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) swiper.setGrabCursor(false);\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)) swiper.setGrabCursor(false);\n // Time diff\n const touchEndTime = (0, $c4729edb2a042a40$export$4368d992c4eafac0)();\n const timeDiff = touchEndTime - data.touchStartTime;\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit(\"tap click\", e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) swiper.emit(\"doubleTap doubleClick\", e);\n }\n data.lastClickTime = (0, $c4729edb2a042a40$export$4368d992c4eafac0)();\n (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\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 let currentPos;\n if (params.followFinger) currentPos = rtl ? swiper.translate : -swiper.translate;\n else currentPos = -data.currentTranslate;\n if (params.cssMode) return;\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos: currentPos\n });\n return;\n }\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\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 (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n else if (swiper.isEnd) rewindFirstIndex = 0;\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\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(params.rewind && swiper.isEnd ? rewindFirstIndex : 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 if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) swiper.slideTo(rewindLastIndex);\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\") swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n if (swiper.swipeDirection === \"prev\") swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n } else if (e.target === swiper.navigation.nextEl) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n}\nfunction $928de60d0cea4b62$var$onResize() {\n const swiper = this;\n const { params: params, el: el } = swiper;\n if (el && el.offsetWidth === 0) return;\n // Breakpoints\n if (params.breakpoints) swiper.setBreakpoint();\n // Save locks\n const { allowSlideNext: allowSlideNext, allowSlidePrev: allowSlidePrev, snapGrid: snapGrid } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === \"auto\" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n else if (swiper.params.loop && !isVirtual) swiper.slideToLoop(swiper.realIndex, 0, false, true);\n else swiper.slideTo(swiper.activeIndex, 0, false, true);\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(()=>{\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) swiper.autoplay.resume();\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow();\n}\nfunction $928de60d0cea4b62$var$onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\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}\nfunction $928de60d0cea4b62$var$onScroll() {\n const swiper = this;\n const { wrapperEl: wrapperEl, rtlTranslate: rtlTranslate, enabled: enabled } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) swiper.translate = -wrapperEl.scrollLeft;\n else swiper.translate = -wrapperEl.scrollTop;\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) newProgress = 0;\n else newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n if (newProgress !== swiper.progress) swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n swiper.emit(\"setTranslate\", swiper.translate, false);\n}\nfunction $928de60d0cea4b62$var$onLoad(e) {\n const swiper = this;\n $928de60d0cea4b62$var$processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== \"auto\" && !swiper.params.autoHeight) return;\n swiper.update();\n}\nfunction $928de60d0cea4b62$var$onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) swiper.el.style.touchAction = \"auto\";\n}\nconst $928de60d0cea4b62$var$events = (swiper, method)=>{\n const document1 = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n const { params: params, el: el, wrapperEl: wrapperEl, device: device } = swiper;\n const capture = !!params.nested;\n const domMethod = method === \"on\" ? \"addEventListener\" : \"removeEventListener\";\n const swiperMethod = method;\n // Touch Events\n document1[domMethod](\"touchstart\", swiper.onDocumentTouchStart, {\n passive: false,\n capture: capture\n });\n el[domMethod](\"touchstart\", swiper.onTouchStart, {\n passive: false\n });\n el[domMethod](\"pointerdown\", swiper.onTouchStart, {\n passive: false\n });\n document1[domMethod](\"touchmove\", swiper.onTouchMove, {\n passive: false,\n capture: capture\n });\n document1[domMethod](\"pointermove\", swiper.onTouchMove, {\n passive: false,\n capture: capture\n });\n document1[domMethod](\"touchend\", swiper.onTouchEnd, {\n passive: true\n });\n document1[domMethod](\"pointerup\", swiper.onTouchEnd, {\n passive: true\n });\n document1[domMethod](\"pointercancel\", swiper.onTouchEnd, {\n passive: true\n });\n document1[domMethod](\"touchcancel\", swiper.onTouchEnd, {\n passive: true\n });\n document1[domMethod](\"pointerout\", swiper.onTouchEnd, {\n passive: true\n });\n document1[domMethod](\"pointerleave\", swiper.onTouchEnd, {\n passive: true\n });\n document1[domMethod](\"contextmenu\", swiper.onTouchEnd, {\n passive: true\n });\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) el[domMethod](\"click\", swiper.onClick, true);\n if (params.cssMode) wrapperEl[domMethod](\"scroll\", swiper.onScroll);\n // Resize handler\n if (params.updateOnWindowResize) swiper[swiperMethod](device.ios || device.android ? \"resize orientationchange observerUpdate\" : \"resize observerUpdate\", $928de60d0cea4b62$var$onResize, true);\n else swiper[swiperMethod](\"observerUpdate\", $928de60d0cea4b62$var$onResize, true);\n // Images loader\n el[domMethod](\"load\", swiper.onLoad, {\n capture: true\n });\n};\nfunction $928de60d0cea4b62$var$attachEvents() {\n const swiper = this;\n const { params: params } = swiper;\n swiper.onTouchStart = $928de60d0cea4b62$var$onTouchStart.bind(swiper);\n swiper.onTouchMove = $928de60d0cea4b62$var$onTouchMove.bind(swiper);\n swiper.onTouchEnd = $928de60d0cea4b62$var$onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = $928de60d0cea4b62$var$onDocumentTouchStart.bind(swiper);\n if (params.cssMode) swiper.onScroll = $928de60d0cea4b62$var$onScroll.bind(swiper);\n swiper.onClick = $928de60d0cea4b62$var$onClick.bind(swiper);\n swiper.onLoad = $928de60d0cea4b62$var$onLoad.bind(swiper);\n $928de60d0cea4b62$var$events(swiper, \"on\");\n}\nfunction $928de60d0cea4b62$var$detachEvents() {\n const swiper = this;\n $928de60d0cea4b62$var$events(swiper, \"off\");\n}\nvar $928de60d0cea4b62$var$events$1 = {\n attachEvents: $928de60d0cea4b62$var$attachEvents,\n detachEvents: $928de60d0cea4b62$var$detachEvents\n};\nconst $928de60d0cea4b62$var$isGridEnabled = (swiper, params)=>{\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction $928de60d0cea4b62$var$setBreakpoint() {\n const swiper = this;\n const { realIndex: realIndex, initialized: initialized, params: params, el: el } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = $928de60d0cea4b62$var$isGridEnabled(swiper, params);\n const isMultiRow = $928de60d0cea4b62$var$isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === \"column\" || !breakpointParams.grid.fill && params.grid.fill === \"column\") el.classList.add(`${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) swiper.unsetGrabCursor();\n else if (!wasGrabCursor && isGrabCursor) swiper.setGrabCursor();\n // Toggle navigation, pagination, scrollbar\n [\n \"navigation\",\n \"pagination\",\n \"scrollbar\"\n ].forEach((prop)=>{\n if (typeof breakpointParams[prop] === \"undefined\") return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) swiper[prop].disable();\n if (!wasModuleEnabled && isModuleEnabled) swiper[prop].enable();\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) swiper.changeDirection();\n (0, $c4729edb2a042a40$export$3b14a55fb2447963)(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) swiper.disable();\n else if (!wasEnabled && isEnabled) swiper.enable();\n swiper.currentBreakpoint = breakpoint;\n swiper.emit(\"_beforeBreakpoint\", breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) swiper.loopDestroy();\n }\n swiper.emit(\"breakpoint\", breakpointParams);\n}\nfunction $928de60d0cea4b62$var$getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) base = \"window\";\n if (!breakpoints || base === \"container\" && !containerEl) return undefined;\n let breakpoint = false;\n const window1 = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n const currentHeight = base === \"window\" ? window1.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map((point)=>{\n if (typeof point === \"string\" && point.indexOf(\"@\") === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value: value,\n point: point\n };\n }\n return {\n value: point,\n 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: point, value: value } = points[i];\n if (base === \"window\") {\n if (window1.matchMedia(`(min-width: ${value}px)`).matches) breakpoint = point;\n } else if (value <= containerEl.clientWidth) breakpoint = point;\n }\n return breakpoint || \"max\";\n}\nvar $928de60d0cea4b62$var$breakpoints = {\n setBreakpoint: $928de60d0cea4b62$var$setBreakpoint,\n getBreakpoint: $928de60d0cea4b62$var$getBreakpoint\n};\nfunction $928de60d0cea4b62$var$prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach((item)=>{\n if (typeof item === \"object\") Object.keys(item).forEach((classNames)=>{\n if (item[classNames]) resultClasses.push(prefix + classNames);\n });\n else if (typeof item === \"string\") resultClasses.push(prefix + item);\n });\n return resultClasses;\n}\nfunction $928de60d0cea4b62$var$addClasses() {\n const swiper = this;\n const { classNames: classNames, params: params, rtl: rtl, el: el, device: device } = swiper;\n // prettier-ignore\n const suffixes = $928de60d0cea4b62$var$prepareClasses([\n \"initialized\",\n params.direction,\n {\n \"free-mode\": swiper.params.freeMode && params.freeMode.enabled\n },\n {\n \"autoheight\": params.autoHeight\n },\n {\n \"rtl\": rtl\n },\n {\n \"grid\": params.grid && params.grid.rows > 1\n },\n {\n \"grid-column\": params.grid && params.grid.rows > 1 && params.grid.fill === \"column\"\n },\n {\n \"android\": device.android\n },\n {\n \"ios\": device.ios\n },\n {\n \"css-mode\": params.cssMode\n },\n {\n \"centered\": params.cssMode && params.centeredSlides\n },\n {\n \"watch-progress\": params.watchSlidesProgress\n }\n ], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\nfunction $928de60d0cea4b62$var$removeClasses() {\n const swiper = this;\n const { el: el, classNames: classNames } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\nvar $928de60d0cea4b62$var$classes = {\n addClasses: $928de60d0cea4b62$var$addClasses,\n removeClasses: $928de60d0cea4b62$var$removeClasses\n};\nfunction $928de60d0cea4b62$var$checkOverflow() {\n const swiper = this;\n const { isLocked: wasLocked, params: params } = swiper;\n const { slidesOffsetBefore: slidesOffsetBefore } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else swiper.isLocked = swiper.snapGrid.length === 1;\n if (params.allowSlideNext === true) swiper.allowSlideNext = !swiper.isLocked;\n if (params.allowSlidePrev === true) swiper.allowSlidePrev = !swiper.isLocked;\n if (wasLocked && wasLocked !== swiper.isLocked) swiper.isEnd = false;\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? \"lock\" : \"unlock\");\n}\nvar $928de60d0cea4b62$var$checkOverflow$1 = {\n checkOverflow: $928de60d0cea4b62$var$checkOverflow\n};\nvar $928de60d0cea4b62$export$4368d992c4eafac0 = {\n init: true,\n direction: \"horizontal\",\n oneWayMovement: false,\n swiperElementNodeName: \"SWIPER-CONTAINER\",\n touchEventsTarget: \"wrapper\",\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: \"swiper\",\n enabled: true,\n focusableElements: \"input, select, option, textarea, button, video, label\",\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: \"slide\",\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: \"window\",\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: \"swiper-no-swiping\",\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: \"swiper-\",\n // NEW\n slideClass: \"swiper-slide\",\n slideBlankClass: \"swiper-slide-blank\",\n slideActiveClass: \"swiper-slide-active\",\n slideVisibleClass: \"swiper-slide-visible\",\n slideFullyVisibleClass: \"swiper-slide-fully-visible\",\n slideNextClass: \"swiper-slide-next\",\n slidePrevClass: \"swiper-slide-prev\",\n wrapperClass: \"swiper-wrapper\",\n lazyPreloaderClass: \"swiper-lazy-preloader\",\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\nfunction $928de60d0cea4b62$var$moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) obj = {};\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== \"object\" || moduleParams === null) {\n (0, $c4729edb2a042a40$export$3b14a55fb2447963)(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) params[moduleParamName] = {\n enabled: true\n };\n if (moduleParamName === \"navigation\" && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) params[moduleParamName].auto = true;\n if ([\n \"pagination\",\n \"scrollbar\"\n ].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) params[moduleParamName].auto = true;\n if (!(moduleParamName in params && \"enabled\" in moduleParams)) {\n (0, $c4729edb2a042a40$export$3b14a55fb2447963)(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === \"object\" && !(\"enabled\" in params[moduleParamName])) params[moduleParamName].enabled = true;\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n (0, $c4729edb2a042a40$export$3b14a55fb2447963)(allModulesParams, obj);\n };\n}\n/* eslint no-param-reassign: \"off\" */ const $928de60d0cea4b62$var$prototypes = {\n eventsEmitter: $928de60d0cea4b62$var$eventsEmitter,\n update: $928de60d0cea4b62$var$update,\n translate: $928de60d0cea4b62$var$translate,\n transition: $928de60d0cea4b62$var$transition,\n slide: $928de60d0cea4b62$var$slide,\n loop: $928de60d0cea4b62$var$loop,\n grabCursor: $928de60d0cea4b62$var$grabCursor,\n events: $928de60d0cea4b62$var$events$1,\n breakpoints: $928de60d0cea4b62$var$breakpoints,\n checkOverflow: $928de60d0cea4b62$var$checkOverflow$1,\n classes: $928de60d0cea4b62$var$classes\n};\nconst $928de60d0cea4b62$var$extendedDefaults = {};\nclass $928de60d0cea4b62$export$25ce5a424b770e84 {\n constructor(){\n let el;\n let params;\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === \"Object\") params = args[0];\n else [el, params] = args;\n if (!params) params = {};\n params = (0, $c4729edb2a042a40$export$3b14a55fb2447963)({}, params);\n if (el && !params.el) params.el = el;\n const document1 = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n if (params.el && typeof params.el === \"string\" && document1.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document1.querySelectorAll(params.el).forEach((containerEl)=>{\n const newParams = (0, $c4729edb2a042a40$export$3b14a55fb2447963)({}, params, {\n el: containerEl\n });\n swipers.push(new $928de60d0cea4b62$export$25ce5a424b770e84(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = $928de60d0cea4b62$var$getSupport();\n swiper.device = $928de60d0cea4b62$var$getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = $928de60d0cea4b62$var$getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [\n ...swiper.__modules__\n ];\n if (params.modules && Array.isArray(params.modules)) swiper.modules.push(...params.modules);\n const allModulesParams = {};\n swiper.modules.forEach((mod)=>{\n mod({\n params: params,\n swiper: swiper,\n extendParams: $928de60d0cea4b62$var$moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n // Extend defaults with modules params\n const swiperParams = (0, $c4729edb2a042a40$export$3b14a55fb2447963)({}, $928de60d0cea4b62$export$4368d992c4eafac0, allModulesParams);\n // Extend defaults with passed params\n swiper.params = (0, $c4729edb2a042a40$export$3b14a55fb2447963)({}, swiperParams, $928de60d0cea4b62$var$extendedDefaults, params);\n swiper.originalParams = (0, $c4729edb2a042a40$export$3b14a55fb2447963)({}, swiper.params);\n swiper.passedParams = (0, $c4729edb2a042a40$export$3b14a55fb2447963)({}, params);\n // add event listeners\n if (swiper.params && swiper.params.on) Object.keys(swiper.params.on).forEach((eventName)=>{\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n if (swiper.params && swiper.params.onAny) swiper.onAny(swiper.params.onAny);\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el: el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal () {\n return swiper.params.direction === \"horizontal\";\n },\n isVertical () {\n return swiper.params.direction === \"vertical\";\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment () {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit(\"_swiper\");\n // Init\n if (swiper.params.init) swiper.init();\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) return property;\n // prettier-ignore\n return ({\n \"width\": \"height\",\n \"margin-top\": \"margin-left\",\n \"margin-bottom \": \"margin-right\",\n \"margin-left\": \"margin-top\",\n \"margin-right\": \"margin-bottom\",\n \"padding-left\": \"padding-top\",\n \"padding-right\": \"padding-bottom\",\n \"marginRight\": \"marginBottom\"\n })[property];\n }\n getSlideIndex(slideEl) {\n const { slidesEl: slidesEl, params: params } = this;\n const slides = (0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = (0, $c4729edb2a042a40$export$dda1d9f60106f0e9)(slides[0]);\n return (0, $c4729edb2a042a40$export$dda1d9f60106f0e9)(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const { slidesEl: slidesEl, params: params } = swiper;\n swiper.slides = (0, $c4729edb2a042a40$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) swiper.setGrabCursor();\n swiper.emit(\"enable\");\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) swiper.unsetGrabCursor();\n swiper.emit(\"disable\");\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === \"undefined\" ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(\" \").filter((className)=>{\n return className.indexOf(\"swiper\") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit(\"_containerClasses\", cls.join(\" \"));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return \"\";\n return slideEl.className.split(\" \").filter((className)=>{\n return className.indexOf(\"swiper-slide\") === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(\" \");\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach((slideEl)=>{\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl: slideEl,\n classNames: classNames\n });\n swiper.emit(\"_slideClass\", slideEl, classNames);\n });\n swiper.emit(\"_slideClasses\", updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) view = \"current\";\n if (exact === void 0) exact = false;\n const swiper = this;\n const { params: params, slides: slides, slidesGrid: slidesGrid, slidesSizesGrid: slidesSizesGrid, size: swiperSize, activeIndex: activeIndex } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === \"number\") return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for(let i = activeIndex + 1; i < slides.length; i += 1)if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n for(let i = activeIndex - 1; i >= 0; i -= 1)if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n } else {\n // eslint-disable-next-line\n if (view === \"current\") for(let i = activeIndex + 1; i < slides.length; i += 1){\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) spv += 1;\n }\n else // previous\n for(let i = activeIndex - 1; i >= 0; i -= 1){\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) spv += 1;\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid: snapGrid, params: params } = swiper;\n // Breakpoints\n if (params.breakpoints) swiper.setBreakpoint();\n [\n ...swiper.el.querySelectorAll('[loading=\"lazy\"]')\n ].forEach((imageEl)=>{\n if (imageEl.complete) $928de60d0cea4b62$var$processLazyPreloader(swiper, imageEl);\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\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 (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) swiper.updateAutoHeight();\n } else {\n if ((params.slidesPerView === \"auto\" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n if (!translated) setTranslate();\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow();\n swiper.emit(\"update\");\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) needUpdate = true;\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) // eslint-disable-next-line\n newDirection = currentDirection === \"horizontal\" ? \"vertical\" : \"horizontal\";\n if (newDirection === currentDirection || newDirection !== \"horizontal\" && newDirection !== \"vertical\") return swiper;\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach((slideEl)=>{\n if (newDirection === \"vertical\") slideEl.style.width = \"\";\n else slideEl.style.height = \"\";\n });\n swiper.emit(\"changeDirection\");\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === \"rtl\" || !swiper.rtl && direction === \"ltr\") return;\n swiper.rtl = direction === \"rtl\";\n swiper.rtlTranslate = swiper.params.direction === \"horizontal\" && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = \"rtl\";\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = \"ltr\";\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === \"string\") el = document.querySelector(el);\n if (!el) return false;\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) swiper.isElement = true;\n const getWrapperSelector = ()=>{\n return `.${(swiper.params.wrapperClass || \"\").trim().split(\" \").join(\".\")}`;\n };\n const getWrapper = ()=>{\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return (0, $c4729edb2a042a40$export$f1e1789686576879)(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", swiper.params.wrapperClass);\n el.append(wrapperEl);\n (0, $c4729edb2a042a40$export$f1e1789686576879)(el, `.${swiper.params.slideClass}`).forEach((slideEl)=>{\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el: el,\n wrapperEl: wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === \"rtl\" || (0, $c4729edb2a042a40$export$ae1af26003f05816)(el, \"direction\") === \"rtl\",\n rtlTranslate: swiper.params.direction === \"horizontal\" && (el.dir.toLowerCase() === \"rtl\" || (0, $c4729edb2a042a40$export$ae1af26003f05816)(el, \"direction\") === \"rtl\"),\n wrongRTL: (0, $c4729edb2a042a40$export$ae1af26003f05816)(wrapperEl, \"display\") === \"-webkit-box\"\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit(\"beforeInit\");\n // Set breakpoint\n if (swiper.params.breakpoints) swiper.setBreakpoint();\n // Add Classes\n swiper.addClasses();\n // Update size\n swiper.updateSize();\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) swiper.setGrabCursor();\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n else swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n // Create loop\n if (swiper.params.loop) swiper.loopCreate();\n // Attach events\n swiper.attachEvents();\n const lazyElements = [\n ...swiper.el.querySelectorAll('[loading=\"lazy\"]')\n ];\n if (swiper.isElement) lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n lazyElements.forEach((imageEl)=>{\n if (imageEl.complete) $928de60d0cea4b62$var$processLazyPreloader(swiper, imageEl);\n else imageEl.addEventListener(\"load\", (e)=>{\n $928de60d0cea4b62$var$processLazyPreloader(swiper, e.target);\n });\n });\n $928de60d0cea4b62$var$preload(swiper);\n // Init Flag\n swiper.initialized = true;\n $928de60d0cea4b62$var$preload(swiper);\n // Emit\n swiper.emit(\"init\");\n swiper.emit(\"afterInit\");\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) deleteInstance = true;\n if (cleanStyles === void 0) cleanStyles = true;\n const swiper = this;\n const { params: params, el: el, wrapperEl: wrapperEl, slides: slides } = swiper;\n if (typeof swiper.params === \"undefined\" || swiper.destroyed) return null;\n swiper.emit(\"beforeDestroy\");\n // Init Flag\n swiper.initialized = false;\n // Detach events\n swiper.detachEvents();\n // Destroy loop\n if (params.loop) swiper.loopDestroy();\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n el.removeAttribute(\"style\");\n wrapperEl.removeAttribute(\"style\");\n if (slides && slides.length) slides.forEach((slideEl)=>{\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute(\"style\");\n slideEl.removeAttribute(\"data-swiper-slide-index\");\n });\n }\n swiper.emit(\"destroy\");\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName)=>{\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n swiper.el.swiper = null;\n (0, $c4729edb2a042a40$export$90a7f3efeed30595)(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n (0, $c4729edb2a042a40$export$3b14a55fb2447963)($928de60d0cea4b62$var$extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return $928de60d0cea4b62$var$extendedDefaults;\n }\n static get defaults() {\n return $928de60d0cea4b62$export$4368d992c4eafac0;\n }\n static installModule(mod) {\n if (!$928de60d0cea4b62$export$25ce5a424b770e84.prototype.__modules__) $928de60d0cea4b62$export$25ce5a424b770e84.prototype.__modules__ = [];\n const modules = $928de60d0cea4b62$export$25ce5a424b770e84.prototype.__modules__;\n if (typeof mod === \"function\" && modules.indexOf(mod) < 0) modules.push(mod);\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach((m)=>$928de60d0cea4b62$export$25ce5a424b770e84.installModule(m));\n return $928de60d0cea4b62$export$25ce5a424b770e84;\n }\n $928de60d0cea4b62$export$25ce5a424b770e84.installModule(module);\n return $928de60d0cea4b62$export$25ce5a424b770e84;\n }\n}\nObject.keys($928de60d0cea4b62$var$prototypes).forEach((prototypeGroup)=>{\n Object.keys($928de60d0cea4b62$var$prototypes[prototypeGroup]).forEach((protoMethod)=>{\n $928de60d0cea4b62$export$25ce5a424b770e84.prototype[protoMethod] = $928de60d0cea4b62$var$prototypes[prototypeGroup][protoMethod];\n });\n});\n$928de60d0cea4b62$export$25ce5a424b770e84.use([\n $928de60d0cea4b62$var$Resize,\n $928de60d0cea4b62$var$Observer\n]);\n\n\n\n\n\n\nfunction $b39c32c9b17832ac$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement(\"div\");\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) return swiper.virtual.cache[index];\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === \"string\") {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) slideEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"swiper-slide\");\n else slideEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", swiper.params.slideClass);\n slideEl.setAttribute(\"data-swiper-slide-index\", index);\n if (!params.renderSlide) slideEl.innerHTML = slide;\n if (params.cache) swiper.virtual.cache[index] = slideEl;\n return slideEl;\n }\n function update(force, beforeInit) {\n const { slidesPerView: slidesPerView, slidesPerGroup: slidesPerGroup, centeredSlides: centeredSlides, loop: isLoop, initialSlide: initialSlide } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) return;\n const { addSlidesBefore: addSlidesBefore, addSlidesAfter: addSlidesAfter } = swiper.params.virtual;\n const { from: previousFrom, to: previousTo, slides: slides, slidesGrid: previousSlidesGrid, offset: previousOffset } = swiper.virtual;\n if (!swiper.params.cssMode) swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = \"right\";\n else offsetProp = swiper.isHorizontal() ? \"left\" : \"top\";\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from: from,\n to: to,\n offset: offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore: slidesBefore,\n slidesAfter: slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit(\"virtualUpdate\");\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) swiper.slides.forEach((slideEl)=>{\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n swiper.updateProgress();\n emit(\"virtualUpdate\");\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset: offset,\n from: from,\n to: to,\n slides: function getSlides() {\n const slidesToRender = [];\n for(let i = from; i <= to; i += 1)slidesToRender.push(slides[i]);\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) onRendered();\n else emit(\"virtualUpdate\");\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = (index)=>{\n let slideIndex = index;\n if (index < 0) slideIndex = slides.length + index;\n else if (slideIndex >= slides.length) // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n return slideIndex;\n };\n if (force) swiper.slides.filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach((slideEl)=>{\n slideEl.remove();\n });\n else {\n for(let i = previousFrom; i <= previousTo; i += 1)if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter((el)=>el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach((slideEl)=>{\n slideEl.remove();\n });\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for(let i = loopFrom; i < loopTo; i += 1)if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === \"undefined\" || force) appendIndexes.push(slideIndex);\n else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n appendIndexes.forEach((index)=>{\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) for(let i = prependIndexes.length - 1; i >= 0; i -= 1){\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n else {\n prependIndexes.sort((a, b)=>b - a);\n prependIndexes.forEach((index)=>{\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n (0, $c4729edb2a042a40$export$f1e1789686576879)(swiper.slidesEl, \".swiper-slide, swiper-slide\").forEach((slideEl)=>{\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === \"object\" && \"length\" in slides) {\n for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.push(slides[i]);\n } else swiper.virtual.slides.push(slides);\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else swiper.virtual.slides.unshift(slides);\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex)=>{\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute(\"data-swiper-slide-index\");\n if (cachedElIndex) cachedEl.setAttribute(\"data-swiper-slide-index\", parseInt(cachedElIndex, 10) + numberOfNewSlides);\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === \"undefined\" || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) for(let i = slidesIndexes.length - 1; i >= 0; i -= 1){\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach((key)=>{\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute(\"data-swiper-slide-index\", key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach((key)=>{\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute(\"data-swiper-slide-index\", key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) swiper.virtual.cache = {};\n update(true);\n swiper.slideTo(0, 0);\n }\n on(\"beforeInit\", ()=>{\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === \"undefined\") {\n const slides = [\n ...swiper.slidesEl.children\n ].filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [\n ...slides\n ];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex)=>{\n slideEl.setAttribute(\"data-swiper-slide-index\", slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on(\"setTranslate\", ()=>{\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(()=>{\n update();\n }, 100);\n } else update();\n });\n on(\"init update resize\", ()=>{\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) (0, $c4729edb2a042a40$export$2408f22a0fab9ae5)(swiper.wrapperEl, \"--swiper-virtual-size\", `${swiper.virtualSize}px`);\n });\n Object.assign(swiper.virtual, {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n update: update\n });\n}\n\n\n\n\n/* eslint-disable consistent-return */ function $c2a6aa2bd4f0d75b$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\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 const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) return false;\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) return false;\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) return undefined;\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === \"input\" || document.activeElement.nodeName.toLowerCase() === \"textarea\")) return undefined;\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if ((0, $c4729edb2a042a40$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0, $c4729edb2a042a40$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) return undefined;\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = (0, $c4729edb2a042a40$export$8b22cf2602fb60ce)(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [\n [\n swiperOffset.left,\n swiperOffset.top\n ],\n [\n swiperOffset.left + swiperWidth,\n swiperOffset.top\n ],\n [\n swiperOffset.left,\n swiperOffset.top + swiperHeight\n ],\n [\n swiperOffset.left + swiperWidth,\n swiperOffset.top + swiperHeight\n ]\n ];\n for(let i = 0; i < swiperCoord.length; i += 1){\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit(\"keyPress\", kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener(\"keydown\", handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener(\"keydown\", handle);\n swiper.keyboard.enabled = false;\n }\n on(\"init\", ()=>{\n if (swiper.params.keyboard.enabled) enable();\n });\n on(\"destroy\", ()=>{\n if (swiper.keyboard.enabled) disable();\n });\n Object.assign(swiper.keyboard, {\n enable: enable,\n disable: disable\n });\n}\n\n\n\n\n/* eslint-disable consistent-return */ function $7f38c281ff0354b9$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: \"container\",\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: \"swiper-no-mousewheel\"\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = (0, $c4729edb2a042a40$export$4368d992c4eafac0)();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n if (\"detail\" in e) sY = e.detail;\n if (\"wheelDelta\" in e) sY = -e.wheelDelta / 120;\n if (\"wheelDeltaY\" in e) sY = -e.wheelDeltaY / 120;\n if (\"wheelDeltaX\" in e) sX = -e.wheelDeltaX / 120;\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 pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if (\"deltaY\" in e) pY = e.deltaY;\n if (\"deltaX\" in e) pX = e.deltaX;\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n // Fall-back if spin cannot be determined\n if (pX && !sX) sX = pX < 1 ? -1 : 1;\n if (pY && !sY) sY = pY < 1 ? -1 : 1;\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n if (swiper.params.mousewheel.thresholdTime && (0, $c4729edb2a042a40$export$4368d992c4eafac0)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) // Prevent if time between scrolls is below configured threshold\n return false;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && (0, $c4729edb2a042a40$export$4368d992c4eafac0)() - lastScrollTime < 60) // Return false as a default\n return true;\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit(\"scroll\", newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit(\"scroll\", newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges\n return true;\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges\n return true;\n return false;\n }\n function handle(event1) {\n let e = event1;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event1.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) e.preventDefault();\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== \"container\") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\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 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: (0, $c4729edb2a042a40$export$4368d992c4eafac0)(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event1\n };\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) recentWheelEvents.shift(); // only store the last N events\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\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) animateSlider(newEvent);\n } else animateSlider(newEvent);\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) return true;\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: (0, $c4729edb2a042a40$export$4368d992c4eafac0)(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) swiper.updateSlidesClasses();\n if (swiper.params.loop) swiper.loopFix({\n direction: newEvent.direction < 0 ? \"next\" : \"prev\",\n byMousewheel: true\n });\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) recentWheelEvents.shift(); // only store the last N events\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)) // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!timeout) // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n // Emit event\n if (!ignoreWheelEvents) emit(\"scroll\", e);\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) return true;\n }\n }\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== \"container\") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n targetEl[method](\"mouseenter\", handleMouseEnter);\n targetEl[method](\"mouseleave\", handleMouseLeave);\n targetEl[method](\"wheel\", handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(\"wheel\", handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events(\"addEventListener\");\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events(\"removeEventListener\");\n swiper.mousewheel.enabled = false;\n return true;\n }\n on(\"init\", ()=>{\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) disable();\n if (swiper.params.mousewheel.enabled) enable();\n });\n on(\"destroy\", ()=>{\n if (swiper.params.cssMode) enable();\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable: enable,\n disable: disable\n });\n}\n\n\n\nfunction $1fa9c9580bcac513$export$db3b6bfb95261072(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) Object.keys(checkProps).forEach((key)=>{\n if (!params[key] && params.auto === true) {\n let element = (0, $c4729edb2a042a40$export$f1e1789686576879)(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n return params;\n}\n\n\n\nfunction $2b86f6bf56c98ece$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: \"swiper-button-disabled\",\n hiddenClass: \"swiper-button-hidden\",\n lockClass: \"swiper-button-lock\",\n navigationDisabledClass: \"swiper-navigation-disabled\"\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === \"string\" && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === \"string\") res = [\n ...document.querySelectorAll(el)\n ];\n if (swiper.params.uniqueNavElements && typeof el === \"string\" && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) res = swiper.el.querySelector(el);\n else if (res && res.length === 1) res = res[0];\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n if (subEl) {\n subEl.classList[disabled ? \"add\" : \"remove\"](...params.disabledClass.split(\" \"));\n if (subEl.tagName === \"BUTTON\") subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? \"add\" : \"remove\"](params.lockClass);\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit(\"navigationPrev\");\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit(\"navigationNext\");\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = (0, $1fa9c9580bcac513$export$db3b6bfb95261072)(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: \"swiper-button-next\",\n prevEl: \"swiper-button-prev\"\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl: nextEl,\n prevEl: prevEl\n });\n nextEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(nextEl);\n prevEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(prevEl);\n const initButton = (el, dir)=>{\n if (el) el.addEventListener(\"click\", dir === \"next\" ? onNextClick : onPrevClick);\n if (!swiper.enabled && el) el.classList.add(...params.lockClass.split(\" \"));\n };\n nextEl.forEach((el)=>initButton(el, \"next\"));\n prevEl.forEach((el)=>initButton(el, \"prev\"));\n }\n function destroy() {\n let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n nextEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(nextEl);\n prevEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(prevEl);\n const destroyButton = (el, dir)=>{\n el.removeEventListener(\"click\", dir === \"next\" ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(\" \"));\n };\n nextEl.forEach((el)=>destroyButton(el, \"next\"));\n prevEl.forEach((el)=>destroyButton(el, \"prev\"));\n }\n on(\"init\", ()=>{\n if (swiper.params.navigation.enabled === false) // eslint-disable-next-line\n disable();\n else {\n init();\n update();\n }\n });\n on(\"toEdge fromEdge lock unlock\", ()=>{\n update();\n });\n on(\"destroy\", ()=>{\n destroy();\n });\n on(\"enable disable\", ()=>{\n let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n nextEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(nextEl);\n prevEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [\n ...nextEl,\n ...prevEl\n ].filter((el)=>!!el).forEach((el)=>el.classList.add(swiper.params.navigation.lockClass));\n });\n on(\"click\", (_s, e)=>{\n let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n nextEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(nextEl);\n prevEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n else if (prevEl.length) isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n if (isHidden === true) emit(\"navigationShow\");\n else emit(\"navigationHide\");\n [\n ...nextEl,\n ...prevEl\n ].filter((el)=>!!el).forEach((el)=>el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = ()=>{\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(\" \"));\n init();\n update();\n };\n const disable = ()=>{\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(\" \"));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable: enable,\n disable: disable,\n update: update,\n init: init,\n destroy: destroy\n });\n}\n\n\nfunction $7594efee8601d2e1$export$db3b6bfb95261072(classes) {\n if (classes === void 0) classes = \"\";\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, \"\\\\$1\") // eslint-disable-line\n .replace(/ /g, \".\")}`;\n}\n\n\n\n\nfunction $a52c8024d16f85e6$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n const pfx = \"swiper-pagination\";\n extendParams({\n pagination: {\n el: null,\n bulletElement: \"span\",\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: \"bullets\",\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number)=>number,\n formatFractionTotal: (number)=>number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const { bulletActiveClass: bulletActiveClass } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === \"prev\" ? \"previous\" : \"next\"}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === \"prev\" ? \"previous\" : \"next\"}ElementSibling`];\n if (bulletEl) bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest((0, $7594efee8601d2e1$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass));\n if (!bulletEl) return;\n e.preventDefault();\n const index = (0, $c4729edb2a042a40$export$dda1d9f60106f0e9)(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else swiper.slideTo(index);\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== \"undefined\") {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\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 bulletSize = (0, $c4729edb2a042a40$export$2d1720544b23b823)(bullets[0], swiper.isHorizontal() ? \"width\" : \"height\", true);\n el.forEach((subEl)=>{\n subEl.style[swiper.isHorizontal() ? \"width\" : \"height\"] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) dynamicBulletIndex = params.dynamicMainBullets - 1;\n else if (dynamicBulletIndex < 0) dynamicBulletIndex = 0;\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach((bulletEl)=>{\n const classesToRemove = [\n ...[\n \"\",\n \"-next\",\n \"-next-next\",\n \"-prev\",\n \"-prev-prev\",\n \"-main\"\n ].map((suffix)=>`${params.bulletActiveClass}${suffix}`)\n ].map((s)=>typeof s === \"string\" && s.includes(\" \") ? s.split(\" \") : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) bullets.forEach((bullet)=>{\n const bulletIndex = (0, $c4729edb2a042a40$export$dda1d9f60106f0e9)(bullet);\n if (bulletIndex === current) bullet.classList.add(...params.bulletActiveClass.split(\" \"));\n else if (swiper.isElement) bullet.setAttribute(\"part\", \"bullet\");\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) bullet.classList.add(...`${params.bulletActiveClass}-main`.split(\" \"));\n if (bulletIndex === firstIndex) setSideBullets(bullet, \"prev\");\n if (bulletIndex === lastIndex) setSideBullets(bullet, \"next\");\n }\n });\n else {\n const bullet = bullets[current];\n if (bullet) bullet.classList.add(...params.bulletActiveClass.split(\" \"));\n if (swiper.isElement) bullets.forEach((bulletEl, bulletIndex)=>{\n bulletEl.setAttribute(\"part\", bulletIndex === current ? \"bullet-active\" : \"bullet\");\n });\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for(let i = firstIndex; i <= lastIndex; i += 1)if (bullets[i]) bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(\" \"));\n setSideBullets(firstDisplayedBullet, \"prev\");\n setSideBullets(lastDisplayedBullet, \"next\");\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? \"right\" : \"left\";\n bullets.forEach((bullet)=>{\n bullet.style[swiper.isHorizontal() ? offsetProp : \"top\"] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex)=>{\n if (params.type === \"fraction\") {\n subEl.querySelectorAll((0, $7594efee8601d2e1$export$db3b6bfb95261072)(params.currentClass)).forEach((fractionEl)=>{\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll((0, $7594efee8601d2e1$export$db3b6bfb95261072)(params.totalClass)).forEach((totalEl)=>{\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === \"progressbar\") {\n let progressbarDirection;\n if (params.progressbarOpposite) progressbarDirection = swiper.isHorizontal() ? \"vertical\" : \"horizontal\";\n else progressbarDirection = swiper.isHorizontal() ? \"horizontal\" : \"vertical\";\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === \"horizontal\") scaleX = scale;\n else scaleY = scale;\n subEl.querySelectorAll((0, $7594efee8601d2e1$export$db3b6bfb95261072)(params.progressbarFillClass)).forEach((progressEl)=>{\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === \"custom\" && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit(\"paginationRender\", subEl);\n } else {\n if (subElIndex === 0) emit(\"paginationRender\", subEl);\n emit(\"paginationUpdate\", subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? \"add\" : \"remove\"](params.lockClass);\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n let paginationHTML = \"\";\n if (params.type === \"bullets\") {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) numberOfBullets = slidesLength;\n for(let i = 0; i < numberOfBullets; i += 1)if (params.renderBullet) paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n else // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : \"\"} class=\"${params.bulletClass}\">`;\n }\n if (params.type === \"fraction\") {\n if (params.renderFraction) paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n else paginationHTML = `` + \" / \" + ``;\n }\n if (params.type === \"progressbar\") {\n if (params.renderProgressbar) paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n else paginationHTML = ``;\n }\n swiper.pagination.bullets = [];\n el.forEach((subEl)=>{\n if (params.type !== \"custom\") subEl.innerHTML = paginationHTML || \"\";\n if (params.type === \"bullets\") swiper.pagination.bullets.push(...subEl.querySelectorAll((0, $7594efee8601d2e1$export$db3b6bfb95261072)(params.bulletClass)));\n });\n if (params.type !== \"custom\") emit(\"paginationRender\", el[0]);\n }\n function init() {\n swiper.params.pagination = (0, $1fa9c9580bcac513$export$db3b6bfb95261072)(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: \"swiper-pagination\"\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === \"string\" && swiper.isElement) el = swiper.el.querySelector(params.el);\n if (!el && typeof params.el === \"string\") el = [\n ...document.querySelectorAll(params.el)\n ];\n if (!el) el = params.el;\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === \"string\" && Array.isArray(el) && el.length > 1) {\n el = [\n ...swiper.el.querySelectorAll(params.el)\n ];\n // check if it belongs to another nested Swiper\n if (el.length > 1) el = el.filter((subEl)=>{\n if ((0, $c4729edb2a042a40$export$407448d2b89b1813)(subEl, \".swiper\")[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el: el\n });\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n if (params.type === \"bullets\" && params.clickable) subEl.classList.add(...(params.clickableClass || \"\").split(\" \"));\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === \"bullets\" && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) params.dynamicMainBullets = 1;\n }\n if (params.type === \"progressbar\" && params.progressbarOpposite) subEl.classList.add(params.progressbarOppositeClass);\n if (params.clickable) subEl.addEventListener(\"click\", onBulletClick);\n if (!swiper.enabled) subEl.classList.add(params.lockClass);\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || \"\").split(\" \"));\n subEl.removeEventListener(\"click\", onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach((subEl)=>subEl.classList.remove(...params.bulletActiveClass.split(\" \")));\n }\n on(\"changeDirection\", ()=>{\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let { el: el } = swiper.pagination;\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on(\"init\", ()=>{\n if (swiper.params.pagination.enabled === false) // eslint-disable-next-line\n disable();\n else {\n init();\n render();\n update();\n }\n });\n on(\"activeIndexChange\", ()=>{\n if (typeof swiper.snapIndex === \"undefined\") update();\n });\n on(\"snapIndexChange\", ()=>{\n update();\n });\n on(\"snapGridLengthChange\", ()=>{\n render();\n update();\n });\n on(\"destroy\", ()=>{\n destroy();\n });\n on(\"enable disable\", ()=>{\n let { el: el } = swiper.pagination;\n if (el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>subEl.classList[swiper.enabled ? \"remove\" : \"add\"](swiper.params.pagination.lockClass));\n }\n });\n on(\"lock unlock\", ()=>{\n update();\n });\n on(\"click\", (_s, e)=>{\n const targetEl = e.target;\n const el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) emit(\"paginationShow\");\n else emit(\"paginationHide\");\n el.forEach((subEl)=>subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = ()=>{\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let { el: el } = swiper.pagination;\n if (el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = ()=>{\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let { el: el } = swiper.pagination;\n if (el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable: enable,\n disable: disable,\n render: render,\n update: update,\n init: init,\n destroy: destroy\n });\n}\n\n\n\n\n\n\nfunction $b2d6a102b527bbcf$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: \"auto\",\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: \"swiper-scrollbar-lock\",\n dragClass: \"swiper-scrollbar-drag\",\n scrollbarDisabledClass: \"swiper-scrollbar-disabled\",\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper;\n const { dragEl: dragEl, el: el } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\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) newSize = trackSize + newPos;\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) newSize = trackSize - newPos;\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(()=>{\n el.style.opacity = 0;\n el.style.transitionDuration = \"400ms\";\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar: scrollbar } = swiper;\n const { dragEl: dragEl, el: el } = scrollbar;\n dragEl.style.width = \"\";\n dragEl.style.height = \"\";\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === \"auto\") dragSize = trackSize * divider;\n else dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n if (swiper.isHorizontal()) dragEl.style.width = `${dragSize}px`;\n else dragEl.style.height = `${dragSize}px`;\n if (divider >= 1) el.style.display = \"none\";\n else el.style.display = \"\";\n if (swiper.params.scrollbar.hide) el.style.opacity = 0;\n if (swiper.params.watchOverflow && swiper.enabled) scrollbar.el.classList[swiper.isLocked ? \"add\" : \"remove\"](swiper.params.scrollbar.lockClass);\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper;\n const { el: el } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - (0, $c4729edb2a042a40$export$8b22cf2602fb60ce)(el)[swiper.isHorizontal() ? \"left\" : \"top\"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) positionRatio = 1 - positionRatio;\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n const { el: el, dragEl: dragEl } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? \"left\" : \"top\"] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = \"100ms\";\n dragEl.style.transitionDuration = \"100ms\";\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = \"0ms\";\n if (params.hide) el.style.opacity = 1;\n if (swiper.params.cssMode) swiper.wrapperEl.style[\"scroll-snap-type\"] = \"none\";\n emit(\"scrollbarDragStart\", e);\n }\n function onDragMove(e) {\n const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n const { el: el, dragEl: dragEl } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();\n else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = \"0ms\";\n el.style.transitionDuration = \"0ms\";\n dragEl.style.transitionDuration = \"0ms\";\n emit(\"scrollbarDragMove\", e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n const { el: el } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style[\"scroll-snap-type\"] = \"\";\n wrapperEl.style.transitionDuration = \"\";\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n el.style.opacity = 0;\n el.style.transitionDuration = \"400ms\";\n }, 1000);\n }\n emit(\"scrollbarDragEnd\", e);\n if (params.snapOnRelease) swiper.slideToClosest();\n }\n function events(method) {\n const { scrollbar: scrollbar, params: params } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === \"on\" ? \"addEventListener\" : \"removeEventListener\";\n target[eventMethod](\"pointerdown\", onDragStart, activeListener);\n document[eventMethod](\"pointermove\", onDragMove, activeListener);\n document[eventMethod](\"pointerup\", onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events(\"on\");\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events(\"off\");\n }\n function init() {\n const { scrollbar: scrollbar, el: swiperEl } = swiper;\n swiper.params.scrollbar = (0, $1fa9c9580bcac513$export$db3b6bfb95261072)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: \"swiper-scrollbar\"\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === \"string\" && swiper.isElement) el = swiper.el.querySelector(params.el);\n if (!el && typeof params.el === \"string\") {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) el = params.el;\n if (swiper.params.uniqueNavElements && typeof params.el === \"string\" && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) el = swiperEl.querySelector(params.el);\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector((0, $7594efee8601d2e1$export$db3b6bfb95261072)(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el: el,\n dragEl: dragEl\n });\n if (params.draggable) enableDraggable();\n if (el) el.classList[swiper.enabled ? \"remove\" : \"add\"](...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.params.scrollbar.lockClass));\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) el.classList.remove(...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n disableDraggable();\n }\n on(\"changeDirection\", ()=>{\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let { el: el } = swiper.scrollbar;\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on(\"init\", ()=>{\n if (swiper.params.scrollbar.enabled === false) // eslint-disable-next-line\n disable();\n else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on(\"update resize observerUpdate lock unlock changeDirection\", ()=>{\n updateSize();\n });\n on(\"setTranslate\", ()=>{\n setTranslate();\n });\n on(\"setTransition\", (_s, duration)=>{\n setTransition(duration);\n });\n on(\"enable disable\", ()=>{\n const { el: el } = swiper.scrollbar;\n if (el) el.classList[swiper.enabled ? \"remove\" : \"add\"](...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.params.scrollbar.lockClass));\n });\n on(\"destroy\", ()=>{\n destroy();\n });\n const enable = ()=>{\n swiper.el.classList.remove(...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) swiper.scrollbar.el.classList.remove(...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n init();\n updateSize();\n setTranslate();\n };\n const disable = ()=>{\n swiper.el.classList.add(...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) swiper.scrollbar.el.classList.add(...(0, $c4729edb2a042a40$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass));\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable: enable,\n disable: disable,\n updateSize: updateSize,\n setTranslate: setTranslate,\n init: init,\n destroy: destroy\n });\n}\n\n\n\nfunction $ee0682b0f0b4a005$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = \"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]\";\n const setTransform = (el, progress)=>{\n const { rtl: rtl } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute(\"data-swiper-parallax\") || \"0\";\n let x = el.getAttribute(\"data-swiper-parallax-x\");\n let y = el.getAttribute(\"data-swiper-parallax-y\");\n const scale = el.getAttribute(\"data-swiper-parallax-scale\");\n const opacity = el.getAttribute(\"data-swiper-parallax-opacity\");\n const rotate = el.getAttribute(\"data-swiper-parallax-rotate\");\n if (x || y) {\n x = x || \"0\";\n y = y || \"0\";\n } else if (swiper.isHorizontal()) {\n x = p;\n y = \"0\";\n } else {\n y = p;\n x = \"0\";\n }\n if (x.indexOf(\"%\") >= 0) x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n else x = `${x * progress * rtlFactor}px`;\n if (y.indexOf(\"%\") >= 0) y = `${parseInt(y, 10) * progress}%`;\n else y = `${y * progress}px`;\n if (typeof opacity !== \"undefined\" && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== \"undefined\" && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== \"undefined\" && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = ()=>{\n const { el: el, slides: slides, progress: progress, snapGrid: snapGrid, isElement: isElement } = swiper;\n const elements = (0, $c4729edb2a042a40$export$f1e1789686576879)(el, elementsSelector);\n if (swiper.isElement) elements.push(...(0, $c4729edb2a042a40$export$f1e1789686576879)(swiper.hostEl, elementsSelector));\n elements.forEach((subEl)=>{\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex)=>{\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== \"auto\") slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach((subEl)=>{\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function(duration) {\n if (duration === void 0) duration = swiper.params.speed;\n const { el: el, hostEl: hostEl } = swiper;\n const elements = [\n ...el.querySelectorAll(elementsSelector)\n ];\n if (swiper.isElement) elements.push(...hostEl.querySelectorAll(elementsSelector));\n elements.forEach((parallaxEl)=>{\n let parallaxDuration = parseInt(parallaxEl.getAttribute(\"data-swiper-parallax-duration\"), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on(\"beforeInit\", ()=>{\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on(\"init\", ()=>{\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on(\"setTranslate\", ()=>{\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on(\"setTransition\", (_swiper, duration)=>{\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\n\n\n\nfunction $c1c1135744406dc5$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: \"swiper-zoom-container\",\n zoomedSlideClass: \"swiper-slide-zoomed\"\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, \"scale\", {\n get () {\n return scale;\n },\n set (value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit(\"zoomChange\", value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute(\"data-swiper-zoom\") || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [\n (evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale,\n (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale\n ];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter((slideEl)=>slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([\n ...swiper.hostEl.querySelectorAll(selector)\n ].filter((containerEl)=>containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n // Events\n function onGestureStart(e) {\n if (e.pointerType === \"mouse\") evCache.splice(0, evCache.length);\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) return;\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n gesture.imageEl = imageEl;\n if (imageEl) gesture.imageWrapEl = (0, $c4729edb2a042a40$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n else gesture.imageWrapEl = undefined;\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = \"0ms\";\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) return;\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) return;\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n if (zoom.scale < params.minRatio) zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === \"mouse\" && e.type === \"pointerout\") return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) return;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n else if (zoom.scale <= 1 && gesture.slideEl) gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(()=>{\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = (0, $c4729edb2a042a40$export$35e795649ee09318)(gesture.imageWrapEl, \"x\") || 0;\n image.startY = (0, $c4729edb2a042a40$export$35e795649ee09318)(gesture.imageWrapEl, \"y\") || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = \"0ms\";\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {\n allowTouchMove();\n 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 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) swiper.allowClick = false;\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) e.preventDefault();\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const { originX: originX, originY: originY } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n if (image.currentX < image.minX) image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n if (image.currentX > image.maxX) image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n if (image.currentY < image.minY) image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n if (image.currentY > image.maxY) image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\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 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) 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 // 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 image.currentX = newPositionX;\n image.currentY = newPositionY;\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 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) gesture.imageEl.style.transform = \"translate3d(0,0,0) scale(1)\";\n if (gesture.imageWrapEl) gesture.imageWrapEl.style.transform = \"translate3d(0,0,0)\";\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $c4729edb2a042a40$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n else gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n gesture.imageEl = imageEl;\n if (imageEl) gesture.imageWrapEl = (0, $c4729edb2a042a40$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n else gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = \"hidden\";\n swiper.wrapperEl.style.touchAction = \"none\";\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === \"undefined\" && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === \"number\" ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = (0, $c4729edb2a042a40$export$8b22cf2602fb60ce)(gesture.slideEl).left + window.scrollX;\n offsetY = (0, $c4729edb2a042a40$export$8b22cf2602fb60ce)(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) translateX = translateMinX;\n if (translateX > translateMaxX) translateX = translateMaxX;\n if (translateY < translateMinY) translateY = translateMinY;\n if (translateY > translateMaxY) translateY = translateMaxY;\n } else {\n translateX = 0;\n translateY = 0;\n }\n if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = \"300ms\";\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = \"300ms\";\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $c4729edb2a042a40$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n else gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n gesture.imageEl = imageEl;\n if (imageEl) gesture.imageWrapEl = (0, $c4729edb2a042a40$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n else gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = \"\";\n swiper.wrapperEl.style.touchAction = \"\";\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = \"300ms\";\n gesture.imageWrapEl.style.transform = \"translate3d(0,0,0)\";\n gesture.imageEl.style.transitionDuration = \"300ms\";\n gesture.imageEl.style.transform = \"translate3d(0,0,0) scale(1)\";\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) // Zoom Out\n zoomOut();\n else // Zoom In\n zoomIn(e);\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener: passiveListener,\n activeListenerWithCapture: activeListenerWithCapture\n };\n }\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners();\n // Scale image\n swiper.wrapperEl.addEventListener(\"pointerdown\", onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener(\"pointermove\", onGestureChange, activeListenerWithCapture);\n [\n \"pointerup\",\n \"pointercancel\",\n \"pointerout\"\n ].forEach((eventName)=>{\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n // Move image\n swiper.wrapperEl.addEventListener(\"pointermove\", onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners();\n // Scale image\n swiper.wrapperEl.removeEventListener(\"pointerdown\", onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener(\"pointermove\", onGestureChange, activeListenerWithCapture);\n [\n \"pointerup\",\n \"pointercancel\",\n \"pointerout\"\n ].forEach((eventName)=>{\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n // Move image\n swiper.wrapperEl.removeEventListener(\"pointermove\", onTouchMove, activeListenerWithCapture);\n }\n on(\"init\", ()=>{\n if (swiper.params.zoom.enabled) enable();\n });\n on(\"destroy\", ()=>{\n disable();\n });\n on(\"touchStart\", (_s, e)=>{\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on(\"touchEnd\", (_s, e)=>{\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on(\"doubleTap\", (_s, e)=>{\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) zoomToggle(e);\n });\n on(\"transitionEnd\", ()=>{\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) onTransitionEnd();\n });\n on(\"slideChange\", ()=>{\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) onTransitionEnd();\n });\n Object.assign(swiper.zoom, {\n enable: enable,\n disable: disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\n\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */ function $cf21d6d808fa59ec$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: \"slide\" // or 'container'\n }\n });\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val)=>{\n minIndex = -1;\n maxIndex = array.length;\n while(maxIndex - minIndex > 1){\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) minIndex = guess;\n else maxIndex = guess;\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === \"slide\") {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === \"container\") {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) multiplier = 1;\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) controlledTranslate = c.maxTranslate() - controlledTranslate;\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for(let i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTranslate(controlled[i]);\n } else if (controlled instanceof Swiper && byController !== controlled) setControlledTranslate(controlled);\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) (0, $c4729edb2a042a40$export$7ccc53e8f1e7dfc5)(()=>{\n c.updateAutoHeight();\n });\n (0, $c4729edb2a042a40$export$342063e11d6c3cad)(c.wrapperEl, ()=>{\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for(i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTransition(controlled[i]);\n } else if (controlled instanceof Swiper && byController !== controlled) setControlledTransition(controlled);\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on(\"beforeInit\", ()=>{\n if (typeof window !== \"undefined\" && // eslint-disable-line\n (typeof swiper.params.controller.control === \"string\" || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) swiper.controller.control = controlElement.swiper;\n else if (controlElement) {\n const onControllerSwiper = (e)=>{\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener(\"init\", onControllerSwiper);\n };\n controlElement.addEventListener(\"init\", onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on(\"update\", ()=>{\n removeSpline();\n });\n on(\"resize\", ()=>{\n removeSpline();\n });\n on(\"observerUpdate\", ()=>{\n removeSpline();\n });\n on(\"setTranslate\", (_s, translate, byController)=>{\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on(\"setTransition\", (_s, duration, byController)=>{\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate: setTranslate,\n setTransition: setTransition\n });\n}\n\n\n\n\n\nfunction $6790b77214b62a83$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: \"swiper-notification\",\n prevSlideMessage: \"Previous slide\",\n nextSlideMessage: \"Next slide\",\n firstSlideMessage: \"This is the first slide\",\n lastSlideMessage: \"This is the last slide\",\n paginationBulletMessage: \"Go to slide {{index}}\",\n slideLabelMessage: \"{{index}} / {{slidesLength}}\",\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: \"group\",\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = \"\";\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) size = 16;\n const randomChar = ()=>Math.round(16 * Math.random()).toString(16);\n return \"x\".repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"tabIndex\", \"0\");\n });\n }\n function makeElNotFocusable(el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"tabIndex\", \"-1\");\n });\n }\n function addElRole(el, role) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"role\", role);\n });\n }\n function addElRoleDescription(el, description) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"aria-roledescription\", description);\n });\n }\n function addElControls(el, controls) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"aria-controls\", controls);\n });\n }\n function addElLabel(el, label) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"aria-label\", label);\n });\n }\n function addElId(el, id) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"id\", id);\n });\n }\n function addElLive(el, live) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"aria-live\", live);\n });\n }\n function disableEl(el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"aria-disabled\", true);\n });\n }\n function enableEl(el) {\n el = (0, $c4729edb2a042a40$export$953cecd6e717a553)(el);\n el.forEach((subEl)=>{\n subEl.setAttribute(\"aria-disabled\", false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches((0, $7594efee8601d2e1$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = (0, $c4729edb2a042a40$export$953cecd6e717a553)(swiper.navigation.prevEl);\n const nextEls = (0, $c4729edb2a042a40$export$953cecd6e717a553)(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) swiper.slideNext();\n if (swiper.isEnd) notify(params.lastSlideMessage);\n else notify(params.nextSlideMessage);\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) swiper.slidePrev();\n if (swiper.isBeginning) notify(params.firstSlideMessage);\n else notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches((0, $7594efee8601d2e1$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) targetEl.click();\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach((bulletEl)=>{\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, \"button\");\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, (0, $c4729edb2a042a40$export$dda1d9f60106f0e9)(bulletEl) + 1));\n }\n }\n if (bulletEl.matches((0, $7594efee8601d2e1$export$db3b6bfb95261072)(swiper.params.pagination.bulletActiveClass))) bulletEl.setAttribute(\"aria-current\", \"true\");\n else bulletEl.removeAttribute(\"aria-current\");\n });\n }\n const initNavEl = (el, wrapperId, message)=>{\n makeElFocusable(el);\n if (el.tagName !== \"BUTTON\") {\n addElRole(el, \"button\");\n el.addEventListener(\"keydown\", onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = (e)=>{\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) preventFocusHandler = true;\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = ()=>{\n preventFocusHandler = false;\n requestAnimationFrame(()=>{\n requestAnimationFrame(()=>{\n if (!swiper.destroyed) swiper.a11y.clicked = false;\n });\n });\n };\n const onVisibilityChange = (e)=>{\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = (e)=>{\n if (swiper.a11y.clicked) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) swiper.el.scrollLeft = 0;\n else swiper.el.scrollTop = 0;\n requestAnimationFrame(()=>{\n if (preventFocusHandler) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n preventFocusHandler = false;\n });\n };\n const initSlides = ()=>{\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n if (params.slideRole) addElRole(swiper.slides, params.slideRole);\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) swiper.slides.forEach((slideEl, index)=>{\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute(\"data-swiper-slide-index\"), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n };\n const init = ()=>{\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n if (params.containerMessage) addElLabel(containerEl, params.containerMessage);\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute(\"id\") || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? \"off\" : \"polite\";\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n // Slide\n initSlides();\n // Navigation\n let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {};\n nextEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(nextEl);\n prevEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(prevEl);\n if (nextEl) nextEl.forEach((el)=>initNavEl(el, wrapperId, params.nextSlideMessage));\n if (prevEl) prevEl.forEach((el)=>initNavEl(el, wrapperId, params.prevSlideMessage));\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(swiper.pagination.el);\n paginationEl.forEach((el)=>{\n el.addEventListener(\"keydown\", onEnterOrSpaceKey);\n });\n }\n // Tab focus\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n swiper.el.addEventListener(\"focus\", handleFocus, true);\n swiper.el.addEventListener(\"focus\", handleFocus, true);\n swiper.el.addEventListener(\"pointerdown\", handlePointerDown, true);\n swiper.el.addEventListener(\"pointerup\", handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {};\n nextEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(nextEl);\n prevEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(prevEl);\n if (nextEl) nextEl.forEach((el)=>el.removeEventListener(\"keydown\", onEnterOrSpaceKey));\n if (prevEl) prevEl.forEach((el)=>el.removeEventListener(\"keydown\", onEnterOrSpaceKey));\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = (0, $c4729edb2a042a40$export$953cecd6e717a553)(swiper.pagination.el);\n paginationEl.forEach((el)=>{\n el.removeEventListener(\"keydown\", onEnterOrSpaceKey);\n });\n }\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n // Tab focus\n swiper.el.removeEventListener(\"focus\", handleFocus, true);\n swiper.el.removeEventListener(\"pointerdown\", handlePointerDown, true);\n swiper.el.removeEventListener(\"pointerup\", handlePointerUp, true);\n }\n on(\"beforeInit\", ()=>{\n liveRegion = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"span\", swiper.params.a11y.notificationClass);\n liveRegion.setAttribute(\"aria-live\", \"assertive\");\n liveRegion.setAttribute(\"aria-atomic\", \"true\");\n });\n on(\"afterInit\", ()=>{\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on(\"slidesLengthChange snapGridLengthChange slidesGridLengthChange\", ()=>{\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on(\"fromEdge toEdge afterInit lock unlock\", ()=>{\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on(\"paginationUpdate\", ()=>{\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on(\"destroy\", ()=>{\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\n\n\nfunction $8fae09ec9b8dec0c$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: \"\",\n replaceState: false,\n key: \"slides\",\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = (text)=>{\n return text.toString().replace(/\\s+/g, \"-\").replace(/[^\\w-]+/g, \"\").replace(/--+/g, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n };\n const getPathValues = (urlOverride)=>{\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n let location;\n if (urlOverride) location = new URL(urlOverride);\n else location = window.location;\n const pathArray = location.pathname.slice(1).split(\"/\").filter((part)=>part !== \"\");\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key: key,\n value: value\n };\n };\n const setHistory = (key, index)=>{\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) location = new URL(swiper.params.url);\n else location = window.location;\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute(\"data-history\"));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === \"/\") root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : \"\"}${value}`;\n } else if (!location.pathname.includes(key)) value = `${key ? `${key}/` : \"\"}${value}`;\n if (swiper.params.history.keepQuery) value += location.search;\n const currentState = window.history.state;\n if (currentState && currentState.value === value) return;\n if (swiper.params.history.replaceState) window.history.replaceState({\n value: value\n }, null, value);\n else window.history.pushState({\n value: value\n }, null, value);\n };\n const scrollToSlide = (speed, value, runCallbacks)=>{\n if (value) for(let i = 0, length = swiper.slides.length; i < length; i += 1){\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute(\"data-history\"));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n else swiper.slideTo(0, speed, runCallbacks);\n };\n const setHistoryPopState = ()=>{\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = ()=>{\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) window.addEventListener(\"popstate\", setHistoryPopState);\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) window.addEventListener(\"popstate\", setHistoryPopState);\n };\n const destroy = ()=>{\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n if (!swiper.params.history.replaceState) window.removeEventListener(\"popstate\", setHistoryPopState);\n };\n on(\"init\", ()=>{\n if (swiper.params.history.enabled) init();\n });\n on(\"destroy\", ()=>{\n if (swiper.params.history.enabled) destroy();\n });\n on(\"transitionEnd _freeModeNoMomentumRelease\", ()=>{\n if (initialized) setHistory(swiper.params.history.key, swiper.activeIndex);\n });\n on(\"slideChange\", ()=>{\n if (initialized && swiper.params.cssMode) setHistory(swiper.params.history.key, swiper.activeIndex);\n });\n}\n\n\n\n\nfunction $8fc27fcff566f5b3$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, emit: emit, on: on } = _ref;\n let initialized = false;\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n const window = (0, $8e504ae62a4f5a96$export$407448d2b89b1813)();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex (_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-hash\") === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute(\"data-swiper-slide-index\"), 10);\n return index;\n }\n return swiper.getSlideIndex((0, $c4729edb2a042a40$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = ()=>{\n emit(\"hashChange\");\n const newHash = document.location.hash.replace(\"#\", \"\");\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute(\"data-hash\") : \"\";\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === \"undefined\" || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = ()=>{\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute(\"data-hash\") || activeSlideEl.getAttribute(\"data-history\") : \"\";\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || \"\");\n emit(\"hashSet\");\n } else {\n document.location.hash = activeSlideHash || \"\";\n emit(\"hashSet\");\n }\n };\n const init = ()=>{\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace(\"#\", \"\");\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) window.addEventListener(\"hashchange\", onHashChange);\n };\n const destroy = ()=>{\n if (swiper.params.hashNavigation.watchState) window.removeEventListener(\"hashchange\", onHashChange);\n };\n on(\"init\", ()=>{\n if (swiper.params.hashNavigation.enabled) init();\n });\n on(\"destroy\", ()=>{\n if (swiper.params.hashNavigation.enabled) destroy();\n });\n on(\"transitionEnd _freeModeNoMomentumRelease\", ()=>{\n if (initialized) setHash();\n });\n on(\"slideChange\", ()=>{\n if (initialized && swiper.params.cssMode) setHash();\n });\n}\n\n\n\n/* eslint no-underscore-dangle: \"off\" */ /* eslint no-use-before-define: \"off\" */ function $e6b9999949c14044$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on, emit: emit, params: params } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener(\"transitionend\", onTransitionEnd);\n if (pausedByPointerEnter) return;\n resume();\n }\n const calcTimeLeft = ()=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) wasPaused = true;\n else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit(\"autoplayTimeLeft\", timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(()=>{\n calcTimeLeft();\n });\n };\n const getSlideDelay = ()=>{\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) activeSlideEl = swiper.slides.filter((slideEl)=>slideEl.classList.contains(\"swiper-slide-active\"))[0];\n else activeSlideEl = swiper.slides[swiper.activeIndex];\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute(\"data-swiper-autoplay\"), 10);\n return currentSlideDelay;\n };\n const run = (delayForce)=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === \"undefined\" ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === \"undefined\") {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = ()=>{\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit(\"autoplay\");\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit(\"autoplay\");\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit(\"autoplay\");\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit(\"autoplay\");\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(()=>{\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(()=>{\n proceed();\n }, delay);\n } else requestAnimationFrame(()=>{\n proceed();\n });\n // eslint-disable-next-line\n return delay;\n };\n const start = ()=>{\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit(\"autoplayStart\");\n };\n const stop = ()=>{\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit(\"autoplayStop\");\n };\n const pause = (internal, reset)=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) pausedByInteraction = true;\n const proceed = ()=>{\n emit(\"autoplayPause\");\n if (swiper.params.autoplay.waitForTransition) swiper.wrapperEl.addEventListener(\"transitionend\", onTransitionEnd);\n else resume();\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) autoplayTimeLeft = swiper.params.autoplay.delay;\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = ()=>{\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else run();\n swiper.autoplay.paused = false;\n emit(\"autoplayResume\");\n };\n const onVisibilityChange = ()=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n if (document.visibilityState === \"hidden\") {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === \"visible\") resume();\n };\n const onPointerEnter = (e)=>{\n if (e.pointerType !== \"mouse\") return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = (e)=>{\n if (e.pointerType !== \"mouse\") return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) resume();\n };\n const attachMouseEvents = ()=>{\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener(\"pointerenter\", onPointerEnter);\n swiper.el.addEventListener(\"pointerleave\", onPointerLeave);\n }\n };\n const detachMouseEvents = ()=>{\n swiper.el.removeEventListener(\"pointerenter\", onPointerEnter);\n swiper.el.removeEventListener(\"pointerleave\", onPointerLeave);\n };\n const attachDocumentEvents = ()=>{\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n document.addEventListener(\"visibilitychange\", onVisibilityChange);\n };\n const detachDocumentEvents = ()=>{\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n };\n on(\"init\", ()=>{\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on(\"destroy\", ()=>{\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) stop();\n });\n on(\"_freeModeStaticRelease\", ()=>{\n if (pausedByTouch || pausedByInteraction) resume();\n });\n on(\"_freeModeNoMomentumRelease\", ()=>{\n if (!swiper.params.autoplay.disableOnInteraction) pause(true, true);\n else stop();\n });\n on(\"beforeTransitionStart\", (_s, speed, internal)=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) pause(true, true);\n else stop();\n });\n on(\"sliderFirstMove\", ()=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(()=>{\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on(\"touchEnd\", ()=>{\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on(\"slideChange\", ()=>{\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start: start,\n stop: stop,\n pause: pause,\n resume: resume\n });\n}\n\n\n\n\nfunction $cec5837d8933aa0d$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: \"swiper-slide-thumb-active\",\n thumbsContainerClass: \"swiper-thumbs\"\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === \"undefined\" || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute(\"data-swiper-slide-index\"), 10);\n else slideToIndex = clickedIndex;\n if (swiper.params.loop) swiper.slideToLoop(slideToIndex);\n else swiper.slideTo(slideToIndex);\n }\n function init() {\n const { thumbs: thumbsParams } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if ((0, $c4729edb2a042a40$export$882b5998b3b9117c)(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on(\"tap\", onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === \"auto\" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) thumbsToActivate = swiper.params.slidesPerView;\n if (!swiper.params.thumbs.multipleActiveThumbs) thumbsToActivate = 1;\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach((slideEl)=>slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) for(let i = 0; i < thumbsToActivate; i += 1)(0, $c4729edb2a042a40$export$f1e1789686576879)(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach((slideEl)=>{\n slideEl.classList.add(thumbActiveClass);\n });\n else {\n for(let i = 0; i < thumbsToActivate; i += 1)if (thumbsSwiper.slides[swiper.realIndex + i]) thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? \"next\" : \"prev\";\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? \"next\" : \"prev\";\n }\n if (useOffset) newThumbsIndex += direction === \"next\" ? autoScrollOffset : -1 * autoScrollOffset;\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n else newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n } else newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on(\"beforeInit\", ()=>{\n const { thumbs: thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === \"string\" || thumbs.swiper instanceof HTMLElement) {\n const document = (0, $8e504ae62a4f5a96$export$39b482c5e57630a8)();\n const getThumbsElementAndInit = ()=>{\n const thumbsElement = typeof thumbs.swiper === \"string\" ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = (e)=>{\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener(\"init\", onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener(\"init\", onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = ()=>{\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) requestAnimationFrame(watchForThumbsToAppear);\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on(\"slideChange update resize observerUpdate\", ()=>{\n update();\n });\n on(\"setTransition\", (_s, duration)=>{\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on(\"beforeDestroy\", ()=>{\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) thumbsSwiper.destroy();\n });\n Object.assign(swiper.thumbs, {\n init: init,\n update: update\n });\n}\n\n\n\nfunction $029b3afe0d332224$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, emit: emit, once: once } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const { touchEventsData: data, touches: touches } = swiper;\n // Velocity\n if (data.velocities.length === 0) data.velocities.push({\n position: touches[swiper.isHorizontal() ? \"startX\" : \"startY\"],\n time: data.touchStartTime\n });\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? \"currentX\" : \"currentY\"],\n time: (0, $c4729edb2a042a40$export$4368d992c4eafac0)()\n });\n }\n function onTouchEnd(_ref2) {\n let { currentPos: currentPos } = _ref2;\n if (swiper.params.cssMode) return;\n const { params: params, wrapperEl: wrapperEl, rtlTranslate: rtl, snapGrid: snapGrid, touchEventsData: data } = swiper;\n // Time diff\n const touchEndTime = (0, $c4729edb2a042a40$export$4368d992c4eafac0)();\n const timeDiff = touchEndTime - data.touchStartTime;\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) swiper.slideTo(snapGrid.length - 1);\n else swiper.slideTo(swiper.slides.length - 1);\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) swiper.velocity = 0;\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (0, $c4729edb2a042a40$export$4368d992c4eafac0)() - lastMoveEvent.time > 300) swiper.velocity = 0;\n } else swiper.velocity = 0;\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) newPosition = swiper.maxTranslate() - bounceAmount;\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else newPosition = swiper.maxTranslate();\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) newPosition = swiper.minTranslate() + bounceAmount;\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else newPosition = swiper.minTranslate();\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for(let j = 0; j < snapGrid.length; j += 1)if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === \"next\") newPosition = snapGrid[nextSlide];\n else newPosition = snapGrid[nextSlide - 1];\n newPosition = -newPosition;\n }\n if (needsLoopFix) once(\"transitionEnd\", ()=>{\n swiper.loopFix();\n });\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n else momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) momentumDuration = params.speed;\n else if (moveDistance < 2 * currentSlideSize) momentumDuration = params.speed * 1.5;\n else momentumDuration = params.speed * 2.5;\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n (0, $c4729edb2a042a40$export$342063e11d6c3cad)(wrapperEl, ()=>{\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit(\"momentumBounce\");\n swiper.setTransition(params.speed);\n setTimeout(()=>{\n swiper.setTranslate(afterBouncePosition);\n (0, $c4729edb2a042a40$export$342063e11d6c3cad)(wrapperEl, ()=>{\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit(\"_freeModeNoMomentumRelease\");\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n (0, $c4729edb2a042a40$export$342063e11d6c3cad)(wrapperEl, ()=>{\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else swiper.updateProgress(newPosition);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) emit(\"_freeModeNoMomentumRelease\");\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit(\"_freeModeStaticRelease\");\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd\n }\n });\n}\n\n\nfunction $27d372b76cc38d0d$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: \"column\"\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = ()=>{\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiper.size;\n else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n return spaceBetween;\n };\n const initSlides = (slides)=>{\n const { slidesPerView: slidesPerView } = swiper.params;\n const { rows: rows, fill: fill } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) slidesNumberEvenToRows = slidesLength;\n else slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n if (slidesPerView !== \"auto\" && fill === \"row\") slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = ()=>{\n if (swiper.slides) swiper.slides.forEach((slide)=>{\n if (slide.swiperSlideGridSet) {\n slide.style.height = \"\";\n slide.style[swiper.getDirectionLabel(\"margin-top\")] = \"\";\n }\n });\n };\n const updateSlide = (i, slide, slides)=>{\n const { slidesPerGroup: slidesPerGroup } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const { rows: rows, fill: fill } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === \"row\" && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === \"column\") {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel(\"margin-top\")] = row !== 0 ? spaceBetween && `${spaceBetween}px` : \"\";\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid)=>{\n const { centeredSlides: centeredSlides, roundLengths: roundLengths } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const { rows: rows } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) swiper.wrapperEl.style[swiper.getDirectionLabel(\"width\")] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for(let i = 0; i < snapGrid.length; i += 1){\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = ()=>{\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = ()=>{\n const { params: params, el: el } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === \"column\") el.classList.add(`${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on(\"init\", onInit);\n on(\"update\", onUpdate);\n swiper.grid = {\n initSlides: initSlides,\n unsetSlides: unsetSlides,\n updateSlide: updateSlide,\n updateWrapperSize: updateWrapperSize\n };\n}\n\n\nfunction $b93aab924ccfd6b0$var$appendSlide(slides) {\n const swiper = this;\n const { params: params, slidesEl: slidesEl } = swiper;\n if (params.loop) swiper.loopDestroy();\n const appendElement = (slideEl)=>{\n if (typeof slideEl === \"string\") {\n const tempDOM = document.createElement(\"div\");\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = \"\";\n } else slidesEl.append(slideEl);\n };\n if (typeof slides === \"object\" && \"length\" in slides) {\n for(let i = 0; i < slides.length; i += 1)if (slides[i]) appendElement(slides[i]);\n } else appendElement(slides);\n swiper.recalcSlides();\n if (params.loop) swiper.loopCreate();\n if (!params.observer || swiper.isElement) swiper.update();\n}\nfunction $b93aab924ccfd6b0$var$prependSlide(slides) {\n const swiper = this;\n const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper;\n if (params.loop) swiper.loopDestroy();\n let newActiveIndex = activeIndex + 1;\n const prependElement = (slideEl)=>{\n if (typeof slideEl === \"string\") {\n const tempDOM = document.createElement(\"div\");\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = \"\";\n } else slidesEl.prepend(slideEl);\n };\n if (typeof slides === \"object\" && \"length\" in slides) {\n for(let i = 0; i < slides.length; i += 1)if (slides[i]) prependElement(slides[i]);\n newActiveIndex = activeIndex + slides.length;\n } else prependElement(slides);\n swiper.recalcSlides();\n if (params.loop) swiper.loopCreate();\n if (!params.observer || swiper.isElement) swiper.update();\n swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $b93aab924ccfd6b0$var$addSlide(index, slides) {\n const swiper = this;\n const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\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 const slidesBuffer = [];\n for(let i = baseLength - 1; i >= index; i -= 1){\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === \"object\" && \"length\" in slides) {\n for(let i = 0; i < slides.length; i += 1)if (slides[i]) slidesEl.append(slides[i]);\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else slidesEl.append(slides);\n for(let i = 0; i < slidesBuffer.length; i += 1)slidesEl.append(slidesBuffer[i]);\n swiper.recalcSlides();\n if (params.loop) swiper.loopCreate();\n if (!params.observer || swiper.isElement) swiper.update();\n if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n else swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $b93aab924ccfd6b0$var$removeSlide(slidesIndexes) {\n const swiper = this;\n const { params: params, activeIndex: activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\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[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[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) swiper.loopCreate();\n if (!params.observer || swiper.isElement) swiper.update();\n if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n else swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $b93aab924ccfd6b0$var$removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for(let i = 0; i < swiper.slides.length; i += 1)slidesIndexes.push(i);\n swiper.removeSlide(slidesIndexes);\n}\nfunction $b93aab924ccfd6b0$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper } = _ref;\n Object.assign(swiper, {\n appendSlide: $b93aab924ccfd6b0$var$appendSlide.bind(swiper),\n prependSlide: $b93aab924ccfd6b0$var$prependSlide.bind(swiper),\n addSlide: $b93aab924ccfd6b0$var$addSlide.bind(swiper),\n removeSlide: $b93aab924ccfd6b0$var$removeSlide.bind(swiper),\n removeAllSlides: $b93aab924ccfd6b0$var$removeAllSlides.bind(swiper)\n });\n}\n\n\nfunction $340deff477651ee1$export$f1e1789686576879(params) {\n const { effect: effect, swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, overwriteParams: overwriteParams, perspective: perspective, recreateShadows: recreateShadows, getEffectParams: getEffectParams } = params;\n on(\"beforeInit\", ()=>{\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on(\"setTranslate\", ()=>{\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on(\"setTransition\", (_s, duration)=>{\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on(\"transitionEnd\", ()=>{\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach((slideEl)=>{\n slideEl.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on(\"virtualUpdate\", ()=>{\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) requireUpdateOnVirtual = true;\n requestAnimationFrame(()=>{\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\n\n\nfunction $cba14c63500b23da$export$f1e1789686576879(effectParams, slideEl) {\n const transformEl = (0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = \"hidden\";\n transformEl.style[\"-webkit-backface-visibility\"] = \"hidden\";\n }\n return transformEl;\n}\n\n\n\nfunction $fecc837ad1893672$export$f1e1789686576879(_ref) {\n let { swiper: swiper, duration: duration, transformElements: transformElements, allSlides: allSlides } = _ref;\n const { activeIndex: activeIndex } = swiper;\n const getSlide = (el)=>{\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter((slideEl)=>slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) transitionEndTarget = transformElements;\n else transitionEndTarget = transformElements.filter((transformEl)=>{\n const el = transformEl.classList.contains(\"swiper-slide-transform\") ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n transitionEndTarget.forEach((el)=>{\n (0, $c4729edb2a042a40$export$342063e11d6c3cad)(el, ()=>{\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent(\"transitionend\", {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\n\n\nfunction $e80eae5b41a630b3$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = ()=>{\n const { slides: slides } = swiper;\n const params = swiper.params.fadeEffect;\n for(let i = 0; i < slides.length; i += 1){\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = (0, $cba14c63500b23da$export$f1e1789686576879)(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = (duration)=>{\n const transformElements = swiper.slides.map((slideEl)=>(0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl));\n transformElements.forEach((el)=>{\n el.style.transitionDuration = `${duration}ms`;\n });\n (0, $fecc837ad1893672$export$f1e1789686576879)({\n swiper: swiper,\n duration: duration,\n transformElements: transformElements,\n allSlides: true\n });\n };\n (0, $340deff477651ee1$export$f1e1789686576879)({\n effect: \"fade\",\n swiper: swiper,\n on: on,\n setTranslate: setTranslate,\n setTransition: setTransition,\n overwriteParams: ()=>({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n\n\nfunction $e42f2f3f58d9f145$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal)=>{\n let shadowBefore = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n let shadowAfter = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n if (!shadowBefore) {\n shadowBefore = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? \"left\" : \"top\"}`.split(\" \"));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? \"right\" : \"bottom\"}`.split(\" \"));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = ()=>{\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach((slideEl)=>{\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = ()=>{\n const { el: el, wrapperEl: wrapperEl, slides: slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, browser: browser } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector(\".swiper-cube-shadow\");\n if (!cubeShadowEl) {\n cubeShadowEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", \"swiper-cube-shadow\");\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector(\".swiper-cube-shadow\");\n if (!cubeShadowEl) {\n cubeShadowEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", \"swiper-cube-shadow\");\n el.append(cubeShadowEl);\n }\n }\n }\n for(let i = 0; i < slides.length; i += 1){\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) slideIndex = parseInt(slideEl.getAttribute(\"data-swiper-slide-index\"), 10);\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) tx = -tx;\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) wrapperRotate += 0.001;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) createSlideShadows(slideEl, progress, isHorizontal);\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style[\"-webkit-transform-origin\"] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty(\"--swiper-cube-translate-z\", `${zFactor}px`);\n };\n const setTransition = (duration)=>{\n const { el: el, slides: slides } = swiper;\n slides.forEach((slideEl)=>{\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((subEl)=>{\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector(\".swiper-cube-shadow\");\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n (0, $340deff477651ee1$export$f1e1789686576879)({\n effect: \"cube\",\n swiper: swiper,\n on: on,\n setTranslate: setTranslate,\n setTransition: setTransition,\n recreateShadows: recreateShadows,\n getEffectParams: ()=>swiper.params.cubeEffect,\n perspective: ()=>true,\n overwriteParams: ()=>({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\n\n\nfunction $62cfb68b9e979980$export$db3b6bfb95261072(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : \"\"}${suffix ? ` swiper-slide-shadow-${suffix}` : \"\"}`;\n const shadowContainer = (0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(\" \").join(\".\")}`);\n if (!shadowEl) {\n shadowEl = (0, $c4729edb2a042a40$export$db3b6bfb95261072)(\"div\", shadowClass.split(\" \"));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\n\n\n\n\n\nfunction $8aa8f2b978727564$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress)=>{\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n if (!shadowBefore) shadowBefore = (0, $62cfb68b9e979980$export$db3b6bfb95261072)(\"flip\", slideEl, swiper.isHorizontal() ? \"left\" : \"top\");\n if (!shadowAfter) shadowAfter = (0, $62cfb68b9e979980$export$db3b6bfb95261072)(\"flip\", slideEl, swiper.isHorizontal() ? \"right\" : \"bottom\");\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = ()=>{\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach((slideEl)=>{\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = ()=>{\n const { slides: slides, rtlTranslate: rtl } = swiper;\n const params = swiper.params.flipEffect;\n for(let i = 0; i < slides.length; i += 1){\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1);\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) rotateY = -rotateY;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) rotateY += 0.001;\n if (Math.abs(rotateX) / 90 % 2 === 1) rotateX += 0.001;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) createSlideShadows(slideEl, progress);\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = (0, $cba14c63500b23da$export$f1e1789686576879)(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = (duration)=>{\n const transformElements = swiper.slides.map((slideEl)=>(0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl));\n transformElements.forEach((el)=>{\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>{\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n (0, $fecc837ad1893672$export$f1e1789686576879)({\n swiper: swiper,\n duration: duration,\n transformElements: transformElements\n });\n };\n (0, $340deff477651ee1$export$f1e1789686576879)({\n effect: \"flip\",\n swiper: swiper,\n on: on,\n setTranslate: setTranslate,\n setTransition: setTransition,\n recreateShadows: recreateShadows,\n getEffectParams: ()=>swiper.params.flipEffect,\n perspective: ()=>true,\n overwriteParams: ()=>({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n\n\n\n\nfunction $cde70de02b442e0c$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = ()=>{\n const { width: swiperWidth, height: swiperHeight, slides: slides, slidesSizesGrid: slidesSizesGrid } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for(let i = 0, length = slides.length; i < length; i += 1){\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === \"function\" ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === \"string\" && stretch.indexOf(\"%\") !== -1) stretch = parseFloat(params.stretch) / 100 * slideSize;\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) rotateY += 0.001;\n if (Math.abs(rotateX) / 90 % 2 === 1) rotateX += 0.001;\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = (0, $cba14c63500b23da$export$f1e1789686576879)(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n let shadowAfterEl = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n if (!shadowBeforeEl) shadowBeforeEl = (0, $62cfb68b9e979980$export$db3b6bfb95261072)(\"coverflow\", slideEl, isHorizontal ? \"left\" : \"top\");\n if (!shadowAfterEl) shadowAfterEl = (0, $62cfb68b9e979980$export$db3b6bfb95261072)(\"coverflow\", slideEl, isHorizontal ? \"right\" : \"bottom\");\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = (duration)=>{\n const transformElements = swiper.slides.map((slideEl)=>(0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl));\n transformElements.forEach((el)=>{\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>{\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n (0, $340deff477651ee1$export$f1e1789686576879)({\n effect: \"coverflow\",\n swiper: swiper,\n on: on,\n setTranslate: setTranslate,\n setTransition: setTransition,\n perspective: ()=>true,\n overwriteParams: ()=>({\n watchSlidesProgress: true\n })\n });\n}\n\n\n\n\n\n\n\nfunction $809c9e28ca30d18c$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [\n 0,\n 0,\n 0\n ],\n rotate: [\n 0,\n 0,\n 0\n ],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [\n 0,\n 0,\n 0\n ],\n rotate: [\n 0,\n 0,\n 0\n ],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = (value)=>{\n if (typeof value === \"string\") return value;\n return `${value}px`;\n };\n const setTranslate = ()=>{\n const { slides: slides, wrapperEl: wrapperEl, slidesSizesGrid: slidesSizesGrid } = swiper;\n const params = swiper.params.creativeEffect;\n const { progressMultiplier: multiplier } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for(let i = 0; i < slides.length; i += 1){\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n const offset = slideEl.swiperSlideOffset;\n const t = [\n swiper.params.cssMode ? -offset - swiper.translate : -offset,\n 0,\n 0\n ];\n const r = [\n 0,\n 0,\n 0\n ];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [\n 0,\n 0,\n 0\n ],\n rotate: [\n 0,\n 0,\n 0\n ],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index)=>{\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index)=>{\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) val += 0.001;\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(\", \");\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector(\".swiper-slide-shadow\");\n if (!shadowEl && data.shadow) shadowEl = (0, $62cfb68b9e979980$export$db3b6bfb95261072)(\"creative\", slideEl);\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = (0, $cba14c63500b23da$export$f1e1789686576879)(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) targetEl.style.transformOrigin = data.origin;\n }\n };\n const setTransition = (duration)=>{\n const transformElements = swiper.slides.map((slideEl)=>(0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl));\n transformElements.forEach((el)=>{\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll(\".swiper-slide-shadow\").forEach((shadowEl)=>{\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n (0, $fecc837ad1893672$export$f1e1789686576879)({\n swiper: swiper,\n duration: duration,\n transformElements: transformElements,\n allSlides: true\n });\n };\n (0, $340deff477651ee1$export$f1e1789686576879)({\n effect: \"creative\",\n swiper: swiper,\n on: on,\n setTranslate: setTranslate,\n setTransition: setTransition,\n perspective: ()=>swiper.params.creativeEffect.perspective,\n overwriteParams: ()=>({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n\n\n\n\n\nfunction $940c330ff4576a81$export$2e2bcd8739ae039(_ref) {\n let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = ()=>{\n const { slides: slides, activeIndex: activeIndex, rtlTranslate: rtl } = swiper;\n const params = swiper.params.cardsEffect;\n const { startTranslate: startTranslate, isTouched: isTouched } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for(let i = 0; i < slides.length; i += 1){\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n if (swiper.params.centeredSlides && swiper.params.cssMode) offset -= slides[0].swiperSlideOffset;\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) // next\n tX = `calc(${tX}px ${rtl ? \"-\" : \"+\"} (${tXAdd * Math.abs(progress)}%))`;\n else if (progress > 0) // prev\n tX = `calc(${tX}px ${rtl ? \"-\" : \"+\"} (-${tXAdd * Math.abs(progress)}%))`;\n else tX = `${tX}px`;\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n /* eslint-disable */ const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */ if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector(\".swiper-slide-shadow\");\n if (!shadowEl) shadowEl = (0, $62cfb68b9e979980$export$db3b6bfb95261072)(\"cards\", slideEl);\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = (0, $cba14c63500b23da$export$f1e1789686576879)(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = (duration)=>{\n const transformElements = swiper.slides.map((slideEl)=>(0, $c4729edb2a042a40$export$39b482c5e57630a8)(slideEl));\n transformElements.forEach((el)=>{\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll(\".swiper-slide-shadow\").forEach((shadowEl)=>{\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n (0, $fecc837ad1893672$export$f1e1789686576879)({\n swiper: swiper,\n duration: duration,\n transformElements: transformElements\n });\n };\n (0, $340deff477651ee1$export$f1e1789686576879)({\n effect: \"cards\",\n swiper: swiper,\n on: on,\n setTranslate: setTranslate,\n setTransition: setTransition,\n perspective: ()=>true,\n overwriteParams: ()=>({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\n\n\n\nlet $5c2d4072c3636382$var$swiper = new (0, $928de60d0cea4b62$export$25ce5a424b770e84)();\nlet $5c2d4072c3636382$var$lightbox = (0, (/*@__PURE__*/$parcel$interopDefault($48fd48063a4817a7$exports)))({\n selector: \".video-play\"\n});\nlet $5c2d4072c3636382$var$wrapper = document.querySelector(\".testimonials .swiper-wrapper\");\ndocument.addEventListener(\"DOMContentLoaded\", function(event) {\n $5c2d4072c3636382$var$initVideo();\n $5c2d4072c3636382$var$initTestimonials();\n});\nfunction $5c2d4072c3636382$var$initVideo() {\n $5c2d4072c3636382$var$lightbox = (0, (/*@__PURE__*/$parcel$interopDefault($48fd48063a4817a7$exports)))({\n selector: \".video-play\"\n });\n}\nasync function $5c2d4072c3636382$var$initTestimonials() {\n function adjustHeight() {\n setTimeout(function() {\n $5c2d4072c3636382$var$wrapper.removeAttribute(\"style\");\n $5c2d4072c3636382$var$swiper.update();\n $5c2d4072c3636382$var$wrapper.style.height = $5c2d4072c3636382$var$wrapper.clientHeight + \"px\";\n }, 100);\n }\n $5c2d4072c3636382$var$swiper = new (0, $928de60d0cea4b62$export$25ce5a424b770e84)(\".testimonials .swiper\", {\n modules: [\n (0, $2b86f6bf56c98ece$export$2e2bcd8739ae039),\n (0, $a52c8024d16f85e6$export$2e2bcd8739ae039)\n ],\n // Optional parameters\n slidesPerView: \"auto\",\n spaceBetween: 10,\n loop: true,\n // Navigation arrows\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\"\n },\n on: {\n init: function() {\n window.addEventListener(\"resize\", adjustHeight);\n adjustHeight();\n }\n }\n });\n}\n\n\n//# sourceMappingURL=index.959adfbd.js.map\n","import GLightbox from \"glightbox\";\r\nimport Swiper from \"swiper\";\r\nimport { Navigation, Pagination } from \"swiper/modules\";\r\n\r\nlet swiper = new Swiper();\r\n\r\nlet lightbox = GLightbox({\r\n\tselector: \".video-play\",\r\n});\r\n\r\nlet wrapper = document.querySelector(\".testimonials .swiper-wrapper\");\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\r\n\tinitVideo();\r\n\tinitTestimonials();\r\n});\r\n\r\nfunction initVideo() {\r\n\tlightbox = GLightbox({\r\n\t\tselector: \".video-play\",\r\n\t});\r\n}\r\n\r\nasync function initTestimonials() {\r\n\tfunction adjustHeight() {\r\n\t\tsetTimeout(function () {\r\n\t\t\twrapper.removeAttribute(\"style\");\r\n\t\t\tswiper.update();\r\n\t\t\twrapper.style.height = wrapper.clientHeight + \"px\";\r\n\t\t}, 100);\r\n\t}\r\n\tswiper = new Swiper(\".testimonials .swiper\", {\r\n\t\tmodules: [Navigation, Pagination],\r\n\t\t// Optional parameters\r\n\t\tslidesPerView: \"auto\",\r\n\t\tspaceBetween: 10,\r\n\t\tloop: true,\r\n\t\t// Navigation arrows\r\n\t\tnavigation: {\r\n\t\t\tnextEl: \".swiper-button-next\",\r\n\t\t\tprevEl: \".swiper-button-prev\",\r\n\t\t},\r\n\t\ton: {\r\n\t\t\tinit: function () {\r\n\t\t\t\twindow.addEventListener(\"resize\", adjustHeight);\r\n\t\t\t\tadjustHeight();\r\n\t\t\t},\r\n\t\t},\r\n\t});\r\n}\r\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self).GLightbox=t()}(this,(function(){\"use strict\";function e(e){var t=function(e,t){if(\"object\"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:t+\"\"}function t(e){return(t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function n(t,i){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[l]=e[l]||[],s={all:n,evt:null,found:null};return t&&i&&M(n)>0&&r(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return s.found=!0,s.evt=n,!1})),s}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,o=t.once,h=void 0!==o&&o,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){C(n)&&n.call(u,e,this),h&&v.destroy()}return k(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){r(g,(function(t){var i=a(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},r(g,(function(t){var i=a(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function d(e,t){r(t.split(\" \"),(function(t){return e.classList.add(t)}))}function c(e,t){r(t.split(\" \"),(function(t){return e.classList.remove(t)}))}function u(e,t){return e.classList.contains(t)}function g(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if(\"function\"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||\"\"===t)return!1;if(\"none\"===t)return C(i)&&i(),!1;var n=b(),s=t.split(\" \");r(s,(function(t){d(e,\"g\"+t)})),h(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){r(s,(function(e){c(t,\"g\"+e)})),C(i)&&i()}})}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\";if(\"\"===t)return e.style.webkitTransform=\"\",e.style.MozTransform=\"\",e.style.msTransform=\"\",e.style.OTransform=\"\",e.style.transform=\"\",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function p(e){e.style.display=\"block\"}function m(e){e.style.display=\"none\"}function y(e){var t=document.createDocumentFragment(),i=document.createElement(\"div\");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function x(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function b(){var e,t=document.createElement(\"fakeelement\"),i={animation:\"animationend\",OAnimation:\"oAnimationEnd\",MozAnimation:\"animationend\",WebkitAnimation:\"webkitAnimationEnd\"};for(e in i)if(void 0!==t.style[e])return i[e]}function S(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function w(e,t,i){if(O(e))console.error(\"Inject assets error\");else if(C(t)&&(i=t,t=!1),k(t)&&t in window)C(i)&&i();else{var n;if(-1!==e.indexOf(\".css\")){if((n=document.querySelectorAll('link[href=\"'+e+'\"]'))&&n.length>0)return void(C(i)&&i());var s=document.getElementsByTagName(\"head\")[0],l=s.querySelectorAll('link[rel=\"stylesheet\"]'),o=document.createElement(\"link\");return o.rel=\"stylesheet\",o.type=\"text/css\",o.href=e,o.media=\"all\",l?s.insertBefore(o,l[0]):s.appendChild(o),void(C(i)&&i())}if((n=document.querySelectorAll('script[src=\"'+e+'\"]'))&&n.length>0){if(C(i)){if(k(t))return S((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement(\"script\");r.type=\"text/javascript\",r.src=e,r.onload=function(){if(C(i)){if(k(t))return S((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function T(){return\"navigator\"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function C(e){return\"function\"==typeof e}function k(e){return\"string\"==typeof e}function E(e){return!(!e||!e.nodeType||1!=e.nodeType)}function A(e){return Array.isArray(e)}function L(e){return e&&e.length&&isFinite(e.length)}function I(e){return\"object\"===t(e)&&null!=e&&!C(e)&&!A(e)}function O(e){return null==e}function P(e,t){return null!==e&&hasOwnProperty.call(e,t)}function M(e){if(I(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)P(e,i)&&t++;return t}return e.length}function z(e){return!isNaN(parseFloat(e))&&isFinite(e)}function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(\".gbtn[data-taborder]:not(.disabled)\");if(!t.length)return!1;if(1==t.length)return t[0];\"string\"==typeof e&&(e=parseInt(e));var i=[];r(t,(function(e){i.push(e.getAttribute(\"data-taborder\"))}));var n=Math.max.apply(Math,i.map((function(e){return parseInt(e)}))),s=e<0?1:e+1;s>n&&(s=\"1\");var l=i.filter((function(e){return e>=parseInt(s)})),o=l.sort()[0];return document.querySelector('.gbtn[data-taborder=\"'.concat(o,'\"]'))}function Y(e){if(e.events.hasOwnProperty(\"keyboard\"))return!1;e.events.keyboard=h(\"keydown\",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(\".gbtn.focused\");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if(\"input\"==l||\"textarea\"==l||\"button\"==l)return}t.preventDefault();var o=document.querySelectorAll(\".gbtn[data-taborder]\");if(!o||o.length<=0)return;if(!s){var r=X();return void(r&&(r.focus(),d(r,\"focused\")))}var a=X(s.getAttribute(\"data-taborder\"));c(s,\"focused\"),a&&(a.focus(),d(a,\"focused\"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}var q=s((function e(t,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(i(this,e),this.img=t,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener(\"mousedown\",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener(\"mouseup\",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener(\"mousemove\",(function(e){return s.drag(e)}),!1),this.img.addEventListener(\"click\",(function(e){return s.slide.classList.contains(\"dragging-nav\")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}),[{key:\"zoomIn\",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute(\"data-style\",t.getAttribute(\"style\")),t.style.maxWidth=t.naturalWidth+\"px\",t.style.maxHeight=t.naturalHeight+\"px\",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add(\"zoomed\"),this.zoomedIn=!0}}},{key:\"zoomOut\",value:function(){this.img.parentNode.setAttribute(\"style\",\"\"),this.img.setAttribute(\"style\",this.img.getAttribute(\"data-style\")),this.slide.classList.remove(\"zoomed\"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&\"function\"==typeof this.onclose&&this.onclose()}},{key:\"dragStart\",value:function(e){e.preventDefault(),this.zoomedIn?(\"touchstart\"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add(\"dragging\"))):this.active=!1}},{key:\"dragEnd\",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove(\"dragging\")}),100)}},{key:\"drag\",value:function(e){this.active&&(e.preventDefault(),\"touchmove\"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:\"onMove\",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:\"setTranslate\",value:function(e,t,i){e.style.transform=\"translate3d(\"+t+\"px, \"+i+\"px, 0)\"}},{key:\"widowWidth\",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),N=s((function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener(\"mousedown\",(function(e){return t.dragStart(e)}),!1),this.el.addEventListener(\"mouseup\",(function(e){return t.dragEnd(e)}),!1),this.el.addEventListener(\"mousemove\",(function(e){return t.drag(e)}),!1)}),[{key:\"dragStart\",value:function(e){if(this.slide.classList.contains(\"zoomed\"))this.active=!1;else{\"touchstart\"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains(\"nodrag\")||g(e.target,\".nodrag\")||-1!==[\"input\",\"select\",\"textarea\",\"button\",\"a\"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||\"img\"!==t&&g(e.target,\".gslide-inline\"))&&(this.active=!0,this.el.classList.add(\"dragging\"),this.dragContainer=g(e.target,\".ginner-container\")))}}},{key:\"dragEnd\",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,\"right\"==this.doSlideChange&&this.instance.prevSlide(),\"left\"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove(\"dragging\"),t.slide.classList.remove(\"dragging-nav\"),t.dragContainer.style.transform=\"\",t.dragContainer.style.transition=\"\"}),100)}},{key:\"drag\",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add(\"dragging-nav\"),\"touchmove\"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||\"x\"==this.lastDirection)){this.yOffset=0,this.lastDirection=\"x\",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),\"right\"==n&&this.instance.prevSlide(),void(\"left\"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||\"y\"==this.lastDirection)){this.xOffset=0,this.lastDirection=\"y\",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:\"shouldChange\",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?\"right\":\"left\";(\"left\"==t&&this.slide!==this.slide.parentNode.lastChild||\"right\"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:\"shouldClose\",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:\"setTranslate\",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?\"all .2s ease\":\"\",e.style.transform=\"translate3d(\".concat(t,\"px, \").concat(i,\"px, 0)\")}}]);function D(e,t,i,n){var s=e.querySelector(\".gslide-media\"),l=new Image,o=\"gSlideTitle_\"+i,r=\"gSlideDesc_\"+i;l.addEventListener(\"load\",(function(){C(n)&&n()}),!1),l.src=t.href,\"\"!=t.sizes&&\"\"!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt=\"\",O(t.alt)||\"\"===t.alt||(l.alt=t.alt),\"\"!==t.title&&l.setAttribute(\"aria-labelledby\",o),\"\"!==t.description&&l.setAttribute(\"aria-describedby\",r),t.hasOwnProperty(\"_hasCustomWidth\")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty(\"_hasCustomHeight\")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function _(e,t,i,n){var s=this,l=e.querySelector(\".ginner-container\"),o=\"gvideo\"+i,r=e.querySelector(\".gslide-media\"),a=this.getAllPlayers();d(l,\"gvideo-container\"),r.insertBefore(y('
'),r.firstChild);var h=e.querySelector(\".gvideo-wrapper\");w(this.settings.plyr.css,\"Plyr\");var c=t.href,u=null==t?void 0:t.videoProvider,g=!1;r.style.maxWidth=t.width,w(this.settings.plyr.js,\"Plyr\",(function(){if(!u&&c.match(/vimeo\\.com\\/([0-9]*)/)&&(u=\"vimeo\"),!u&&(c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/)||c.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/)||c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)||c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/shorts\\/([a-zA-Z0-9\\-_]+)/))&&(u=\"youtube\"),\"local\"===u||!u){u=\"local\";var l='\")}var r=g||y('
'));d(h,\"\".concat(u,\"-video gvideo\")),h.appendChild(r),h.setAttribute(\"data-id\",o),h.setAttribute(\"data-index\",i);var v=P(s.settings.plyr,\"config\")?s.settings.plyr.config:{},f=new Plyr(\"#\"+o,v);f.on(\"ready\",(function(e){a[o]=e.detail.plyr,C(n)&&n()})),S((function(){return e.querySelector(\"iframe\")&&\"true\"==e.querySelector(\"iframe\").dataset.ready}),(function(){s.resize(e)})),f.on(\"enterfullscreen\",W),f.on(\"exitfullscreen\",W)}))}function W(e){var t=g(e.target,\".gslide-media\");\"enterfullscreen\"===e.type&&d(t,\"fullscreen\"),\"exitfullscreen\"===e.type&&c(t,\"fullscreen\")}function B(e,t,i,n){var s,l=this,o=e.querySelector(\".gslide-media\"),r=!(!P(t,\"href\")||!t.href)&&t.href.split(\"#\").pop().trim(),a=!(!P(t,\"content\")||!t.content)&&t.content;if(a&&(k(a)&&(s=y('
'.concat(a,\"
\"))),E(a))){\"none\"==a.style.display&&(a.style.display=\"block\");var c=document.createElement(\"div\");c.className=\"ginlined-content\",c.appendChild(a),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,d(g,\"ginlined-content\"),s=g}if(!s)return console.error(\"Unable to append inline slide content\",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events[\"inlineclose\"+r]=h(\"click\",{onElement:o.querySelectorAll(\".gtrigger-close\"),withCallback:function(e){e.preventDefault(),l.close()}}),C(n)&&n()}function H(e,t,i,n){var s=e.querySelector(\".gslide-media\"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement(\"iframe\");return l.className=\"vimeo-video gvideo\",l.src=t,l.style.width=\"100%\",l.style.height=\"100%\",i&&l.setAttribute(\"allow\",i),l.onload=function(){l.onload=null,d(l,\"node-ready\"),C(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var j=s((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e),this.defaults={href:\"\",sizes:\"\",srcset:\"\",title:\"\",type:\"\",videoProvider:\"\",description:\"\",alt:\"\",descPosition:\"bottom\",effect:\"\",width:\"\",height:\"\",content:!1,zoomable:!0,draggable:!0},I(t)&&(this.defaults=o(this.defaults,t))}),[{key:\"sourceType\",value:function(e){var t=e;return null!==(e=e.toLowerCase()).match(/\\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/)?\"image\":e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/)||e.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/)||e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)||e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/shorts\\/([a-zA-Z0-9\\-_]+)/)||e.match(/vimeo\\.com\\/([0-9]*)/)||null!==e.match(/\\.(mp4|ogg|webm|mov)/)?\"video\":null!==e.match(/\\.(mp3|wav|wma|aac|ogg)/)?\"audio\":e.indexOf(\"#\")>-1&&\"\"!==t.split(\"#\").pop().trim()?\"inline\":e.indexOf(\"goajax=true\")>-1?\"ajax\":\"external\"}},{key:\"parseConfig\",value:function(e,t){var i=this,n=o({descPosition:t.descPosition},this.defaults);if(I(e)&&!E(e)){P(e,\"type\")||(P(e,\"content\")&&e.content?e.type=\"inline\":P(e,\"href\")&&(e.type=this.sourceType(e.href)));var s=o(n,e);return this.setSize(s,t),s}var l=\"\",a=e.getAttribute(\"data-glightbox\"),h=e.nodeName.toLowerCase();if(\"a\"===h&&(l=e.href),\"img\"===h&&(l=e.src,n.alt=e.alt),n.href=l,r(n,(function(s,l){P(t,l)&&\"width\"!==l&&(n[l]=t[l]);var o=e.dataset[l];O(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type=\"inline\"),!n.type&&l&&(n.type=this.sourceType(l)),O(a)){if(!n.title&&\"a\"==h){var d=e.title;O(d)||\"\"===d||(n.title=d)}if(!n.title&&\"img\"==h){var c=e.alt;O(c)||\"\"===c||(n.title=c)}}else{var u=[];r(n,(function(e,t){u.push(\";\\\\s?\"+t)})),u=u.join(\"\\\\s?:|\"),\"\"!==a.trim()&&r(n,(function(e,t){var s=a,l=new RegExp(\"s?\"+t+\"s?:s?(.*?)(\"+u+\"s?:|$)\"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\\s*$/,\"\");n[t]=i.sanitizeValue(r)}}))}if(n.description&&\".\"===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(\".glightbox-desc\");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:\"setSize\",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=\"video\"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=P(e,\"width\")&&\"\"!==e.width?this.checkSize(e.width):n,e.height=P(e,\"height\")&&\"\"!==e.height?this.checkSize(e.height):s,i&&\"image\"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:\"checkSize\",value:function(e){return z(e)?\"\".concat(e,\"px\"):e}},{key:\"sanitizeValue\",value:function(e){return\"true\"!==e&&\"false\"!==e?e:\"true\"===e}}]),V=s((function e(t,n,s){i(this,e),this.element=t,this.instance=n,this.index=s}),[{key:\"setContent\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(u(t,\"loaded\"))return!1;var n=this.instance.settings,s=this.slideConfig,l=T();C(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(\".gslide-media\"),h=t.querySelector(\".gslide-title\"),c=t.querySelector(\".gslide-desc\"),g=t.querySelector(\".gdesc-inner\"),v=i,f=\"gSlideTitle_\"+this.index,p=\"gSlideDesc_\"+this.index;if(C(n.afterSlideLoad)&&(v=function(){C(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),\"\"==s.title&&\"\"==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(h&&\"\"!==s.title?(h.id=f,h.innerHTML=s.title):h.parentNode.removeChild(h),c&&\"\"!==s.description?(c.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),c.innerHTML=s.smallDescription,this.descriptionEvents(c,s)):c.innerHTML=s.description):c.parentNode.removeChild(c),d(a.parentNode,\"desc-\".concat(r)),d(g.parentNode,\"description-\".concat(r))),d(a,\"gslide-\".concat(o)),d(t,\"loaded\"),\"video\"!==o){if(\"external\"!==o)return\"inline\"===o?(B.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new N({dragEl:t.querySelector(\".gslide-inline\"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void(\"image\"!==o?C(v)&&v():D(t,s,this.index,(function(){var i=t.querySelector(\"img\");s.draggable&&new N({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(d(i,\"zoomable\"),new q(i,t,(function(){e.instance.resize()}))),C(v)&&v()})));H.apply(this,[t,s,this.index,v])}else _.apply(this.instance,[t,s,this.index,v])}},{key:\"slideShortDesc\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement(\"div\");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... '+i+\"\"):o}},{key:\"descriptionEvents\",value:function(e,t){var i=this,n=e.querySelector(\".desc-more\");if(!n)return!1;h(\"click\",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=g(n,\".gslide-desc\");if(!l)return!1;l.innerHTML=t.description,d(s,\"gdesc-open\");var o=h(\"click\",{onElement:[s,g(l,\".gslide-description\")],withCallback:function(e,n){\"a\"!==e.target.nodeName.toLowerCase()&&(c(s,\"gdesc-open\"),d(s,\"gdesc-closed\"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){c(s,\"gdesc-closed\")}),400),o.destroy())}})}})}},{key:\"create\",value:function(){return y(this.instance.settings.slideHTML)}},{key:\"getConfig\",value:function(){E(this.element)||this.element.hasOwnProperty(\"draggable\")||(this.element.draggable=this.instance.settings.draggable);var e=new j(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]);function F(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function R(e,t){var i=function(e,t){var i=F(e)*F(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var G=s((function e(t){i(this,e),this.handlers=[],this.el=t}),[{key:\"add\",value:function(e){this.handlers.push(e)}},{key:\"del\",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:\"dispatch\",value:function(){for(var e=0,t=this.handlers.length;e=0)console.log(\"ignore drag for this touched element\",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=F(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}},{key:\"move\",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=F(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=R(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:\"end\",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:\"cancelAll\",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:\"cancel\",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:\"_cancelLongTap\",value:function(){clearTimeout(this.longTapTimeout)}},{key:\"_cancelSingleTap\",value:function(){clearTimeout(this.singleTapTimeout)}},{key:\"_swipeDirection\",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?\"Left\":\"Right\":i-n>0?\"Up\":\"Down\"}},{key:\"on\",value:function(e,t){this[e]&&this[e].add(t)}},{key:\"off\",value:function(e,t){this[e]&&this[e].del(t)}},{key:\"destroy\",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener(\"touchstart\",this.start),this.element.removeEventListener(\"touchmove\",this.move),this.element.removeEventListener(\"touchend\",this.end),this.element.removeEventListener(\"touchcancel\",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener(\"scroll\",this._cancelAllHandler),null}}]);function $(e){var t=function(){var e,t=document.createElement(\"fakeelement\"),i={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=u(e,\"gslide-media\")?e:e.querySelector(\".gslide-media\"),s=g(n,\".ginner-container\"),l=e.querySelector(\".gslide-description\");i>769&&(n=s),d(n,\"greset\"),f(n,\"translate3d(0, 0, 0)\"),h(t,{onElement:n,once:!0,withCallback:function(e,t){c(n,\"greset\")}}),n.style.opacity=\"\",l&&(l.style.opacity=\"\")}function J(e){if(e.events.hasOwnProperty(\"touch\"))return!1;var t,i,n,s=x(),l=s.width,o=s.height,r=!1,a=null,h=null,v=null,p=!1,m=1,y=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},M=0,z=0,X=document.getElementById(\"glightbox-slider\"),Y=document.querySelector(\".goverlay\"),q=new U(X,{touchStart:function(t){if(r=!0,(u(t.targetTouches[0].target,\"ginner-container\")||g(t.targetTouches[0].target,\".gslide-desc\")||\"a\"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),g(t.targetTouches[0].target,\".gslide-inline\")&&!u(t.targetTouches[0].target.parentNode,\"gslide-inline\")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,z=t.targetTouches[0].clientY,a=e.activeSlide,h=a.querySelector(\".gslide-media\"),n=a.querySelector(\".gslide-inline\"),v=null,u(h,\"gslide-image\")&&(v=h.querySelector(\"img\")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(h=a.querySelector(\".ginner-container\")),c(Y,\"greset\"),t.pageX>20&&t.pageXo){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var d,c=s.targetTouches[0].clientX,u=s.targetTouches[0].clientY,g=M-c,m=z-u;if(Math.abs(g)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&v&&(d=1-Math.abs(i)/o,Y.style.opacity=d,e.settings.touchFollowAxis&&(E=0)),I&&(d=1-Math.abs(t)/l,h.style.opacity=d,e.settings.touchFollowAxis&&(A=0)),!v)return f(h,\"translate3d(\".concat(E,\"%, 0, 0)\"));f(h,\"translate3d(\".concat(E,\"%, \").concat(A,\"%, 0)\"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&v))return t<29&&i<25?(d(Y,\"greset\"),Y.style.opacity=1,$(h)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=y||1},pinch:function(e){if(!v||p)return!1;b=!0,v.scaleX=v.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void v.setAttribute(\"style\",\"\");t>4.5&&(t=4.5),v.style.transform=\"scale3d(\".concat(t,\", \").concat(t,\", 1)\"),y=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n=\"translate3d(\".concat(t,\"px, \").concat(i,\"px, 0)\");y&&(n+=\" scale3d(\".concat(y,\", \").concat(y,\", 1)\")),f(v,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if(\"Left\"==t.direction){if(e.index==e.elements.length-1)return $(h);e.nextSlide()}if(\"Right\"==t.direction){if(0==e.index)return $(h);e.prevSlide()}}}});e.events.touch=q}var K=T(),Q=null!==T()||void 0!==document.createTouch||\"ontouchstart\"in window||\"onmsgesturechange\"in window||navigator.msMaxTouchPoints,ee=document.getElementsByTagName(\"html\")[0],te={selector:\".glightbox\",elements:null,skin:\"clean\",theme:\"clean\",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:\"bottom\",width:\"900px\",height:\"506px\",videosWidth:\"960px\",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:\"https://cdn.plyr.io/3.6.12/plyr.css\",js:\"https://cdn.plyr.io/3.6.12/plyr.js\",config:{ratio:\"16:9\",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:\"zoom\",closeEffect:\"zoom\",slideEffect:\"slide\",moreText:\"See more\",moreLength:60,cssEfects:{fade:{in:\"fadeIn\",out:\"fadeOut\"},zoom:{in:\"zoomIn\",out:\"zoomOut\"},slide:{in:\"slideInRight\",out:\"slideOutLeft\"},slideBack:{in:\"slideInLeft\",out:\"slideOutRight\"},none:{in:\"none\",out:\"none\"}},svg:{close:'',next:' ',prev:''},slideHTML:'
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
',lightboxHTML:'
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
'},ie=s((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e),this.customOptions=t,this.settings=o(te,t),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}),[{key:\"init\",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=h(\"click\",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:\"open\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=z(t)?t:this.settings.startAt;if(E(e)){var n=e.getAttribute(\"data-gallery\");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),O(i)&&(i=this.getElementIndex(e))<0&&(i=0)}z(i)||(i=0),this.build(),v(this.overlay,\"none\"===this.settings.openEffect?\"none\":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement(\"style\");o.type=\"text/css\",o.className=\"gcss-styles\",o.innerText=\".gscrollbar-fixer {margin-right: \".concat(l,\"px}\"),document.head.appendChild(o),d(s,\"gscrollbar-fixer\")}d(s,\"glightbox-open\"),d(ee,\"glightbox-open\"),K&&(d(document.body,\"glightbox-mobile\"),this.settings.slideEffect=\"slide\"),this.showSlide(i,!0),1===this.elements.length?(d(this.prevButton,\"glightbox-button-hidden\"),d(this.nextButton,\"glightbox-button-hidden\")):(c(this.prevButton,\"glightbox-button-hidden\"),c(this.nextButton,\"glightbox-button-hidden\")),this.lightboxOpen=!0,this.trigger(\"open\"),C(this.settings.onOpen)&&this.settings.onOpen(),Q&&this.settings.touchNavigation&&J(this),this.settings.keyboardNavigation&&Y(this)}},{key:\"openAt\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:\"showSlide\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];p(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(\".current\");n&&c(n,\"current\"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(\".gslide\")[t];if(u(s,\"loaded\"))this.slideAnimateIn(s,i),m(this.loader);else{p(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger(\"slide_before_load\",o),l.instance.setContent(s,(function(){m(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger(\"slide_after_load\",o)}))}this.slideDescription=s.querySelector(\".gslide-description\"),this.slideDescriptionContained=this.slideDescription&&u(this.slideDescription.parentNode,\"gslide-media\"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:\"preloadSlide\",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(O(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(\".gslide\")[e];if(u(i,\"loaded\"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger(\"slide_before_load\",l),\"video\"===s||\"external\"===s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger(\"slide_after_load\",l)}))}),200):n.instance.setContent(i,(function(){t.trigger(\"slide_after_load\",l)}))}},{key:\"prevSlide\",value:function(){this.goToSlide(this.index-1)}},{key:\"nextSlide\",value:function(){this.goToSlide(this.index+1)}},{key:\"goToSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:\"insertSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new V(e,this,t),n=i.getConfig(),s=o({},n),l=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(l);else{var d=this.slidesContainer.querySelectorAll(\".gslide\")[t];this.slidesContainer.insertBefore(l,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0===this.index&&0===t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(\".gslide\")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger(\"slide_inserted\",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),C(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:\"removeSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(\".gslide\")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger(\"slide_removed\",e),C(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:\"slideAnimateIn\",value:function(e,t){var i=this,n=e.querySelector(\".gslide-media\"),s=e.querySelector(\".gslide-description\"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(m(s),s.style.display=\"\"),c(e,this.effectsClasses),t)v(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger(\"slide_changed\",{prev:l,current:o}),C(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a=\"none\"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&\"slide\"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),v(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger(\"slide_changed\",{prev:l,current:o}),C(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),d(e,\"current\")}},{key:\"slideAnimateOut\",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;c(e,this.effectsClasses),d(e,\"prev\");var t=this.settings.slideEffect,i=\"none\"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger(\"slide_before_change\",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),C(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&\"slide\"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),v(e,i,(function(){var t=e.querySelector(\".ginner-container\"),i=e.querySelector(\".gslide-media\"),n=e.querySelector(\".gslide-description\");t.style.transform=\"\",i.style.transform=\"\",c(i,\"greset\"),i.style.opacity=\"\",n&&(n.style.opacity=\"\"),c(e,\"prev\")}))}},{key:\"getAllPlayers\",value:function(){return this.videoPlayers}},{key:\"getSlidePlayerInstance\",value:function(e){var t=\"gvideo\"+e,i=this.getAllPlayers();return!(!P(i,t)||!i[t])&&i[t]}},{key:\"stopSlideVideo\",value:function(e){if(E(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}console.log(\"stopSlideVideo is deprecated, use slidePlayerPause\");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:\"slidePlayerPause\",value:function(e){if(E(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:\"playSlideVideo\",value:function(e){if(E(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}console.log(\"playSlideVideo is deprecated, use slidePlayerPlay\");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:\"slidePlayerPlay\",value:function(e){var t;if(!K||null!==(t=this.settings.plyr.config)&&void 0!==t&&t.muted){if(E(e)){var i=e.querySelector(\".gvideo-wrapper\");i&&(e=i.getAttribute(\"data-index\"))}var n=this.getSlidePlayerInstance(e);n&&!n.playing&&(n.play(),this.settings.autofocusVideos&&n.elements.container.focus())}}},{key:\"setElements\",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&r(e,(function(e,n){var s=new V(e,t,n),l=s.getConfig(),r=o({},l);r.slideConfig=l,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML=\"\",this.elements.length&&(r(this.elements,(function(){var e=y(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:\"getElementIndex\",value:function(e){var t=!1;return r(this.elements,(function(i,n){if(P(i,\"node\")&&i.node==e)return t=n,!0})),t}},{key:\"getElements\",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!O(this.settings.elements)&&A(this.settings.elements)&&this.settings.elements.length&&r(this.settings.elements,(function(i,n){var s=new V(i,e,n),l=s.getConfig(),r=o({},l);r.node=!1,r.index=n,r.instance=s,r.slideConfig=l,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(r(i,(function(i,n){var s=new V(i,e,n),l=s.getConfig(),r=o({},l);r.node=i,r.index=n,r.instance=s,r.slideConfig=l,r.gallery=i.getAttribute(\"data-gallery\"),t.push(r)})),t):t}},{key:\"getGalleryElements\",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:\"getSelector\",value:function(){return!this.settings.elements&&(this.settings.selector&&\"data-\"==this.settings.selector.substring(0,5)?\"*[\".concat(this.settings.selector,\"]\"):this.settings.selector)}},{key:\"getActiveSlide\",value:function(){return this.slidesContainer.querySelectorAll(\".gslide\")[this.index]}},{key:\"getActiveSlideIndex\",value:function(){return this.index}},{key:\"getAnimationClasses\",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push(\"g\".concat(i.in)),e.push(\"g\".concat(i.out))}return e.join(\" \")}},{key:\"build\",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];r(t,(function(e){e.parentNode==document.body&&\"#\"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute(\"aria-hidden\")&&(i.push(e),e.setAttribute(\"aria-hidden\",\"true\"))}));var n=P(this.settings.svg,\"next\")?this.settings.svg.next:\"\",s=P(this.settings.svg,\"prev\")?this.settings.svg.prev:\"\",l=P(this.settings.svg,\"close\")?this.settings.svg.close:\"\",o=this.settings.lightboxHTML;o=y(o=(o=(o=o.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(o);var a=document.getElementById(\"glightbox-body\");this.modal=a;var c=a.querySelector(\".gclose\");this.prevButton=a.querySelector(\".gprev\"),this.nextButton=a.querySelector(\".gnext\"),this.overlay=a.querySelector(\".goverlay\"),this.loader=a.querySelector(\".gloader\"),this.slidesContainer=document.getElementById(\"glightbox-slider\"),this.bodyHiddenChildElms=i,this.events={},d(this.modal,\"glightbox-\"+this.settings.skin),this.settings.closeButton&&c&&(this.events.close=h(\"click\",{onElement:c,withCallback:function(t,i){t.preventDefault(),e.close()}})),c&&!this.settings.closeButton&&c.parentNode.removeChild(c),this.nextButton&&(this.events.next=h(\"click\",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=h(\"click\",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=h(\"click\",{onElement:a,withCallback:function(t,i){e.preventOutsideClick||u(document.body,\"glightbox-mobile\")||g(t.target,\".ginner-container\")||g(t.target,\".gbtn\")||u(t.target,\"gnext\")||u(t.target,\"gprev\")||e.close()}})),r(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(\".gslide\")[i]})),Q&&d(document.body,\"glightbox-touch\"),this.events.resize=h(\"resize\",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:\"resize\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!u(e,\"zoomed\")){var t=x(),i=e.querySelector(\".gvideo-wrapper\"),n=e.querySelector(\".gslide-image\"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?d(document.body,\"glightbox-mobile\"):c(document.body,\"glightbox-mobile\"),i||n){var r=!1;if(s&&(u(s,\"description-bottom\")||u(s,\"description-top\"))&&!u(s,\"gabsolute\")&&(r=!0),n)if(l<=768)n.querySelector(\"img\");else if(r){var a,h=s.offsetHeight,g=n.querySelector(\"img\"),v=this.elements[this.index].node,f=null!==(a=v.getAttribute(\"data-height\"))&&void 0!==a?a:\"100vh\";g.setAttribute(\"style\",\"max-height: calc(\".concat(f,\" - \").concat(h,\"px)\")),s.setAttribute(\"style\",\"max-width: \".concat(g.offsetWidth,\"px;\"))}if(i){var p=P(this.settings.plyr.config,\"ratio\")?this.settings.plyr.config.ratio:\"\";if(!p){var m=i.clientWidth,y=i.clientHeight,b=m/y;p=\"\".concat(m/b,\":\").concat(y/b)}var S=p.split(\":\"),w=this.settings.videosWidth,T=this.settings.videosWidth,C=(T=z(w)||-1!==w.indexOf(\"px\")?parseInt(w):-1!==w.indexOf(\"vw\")?l*parseInt(w)/100:-1!==w.indexOf(\"vh\")?o*parseInt(w)/100:-1!==w.indexOf(\"%\")?l*parseInt(w)/100:parseInt(i.clientWidth))/(parseInt(S[0])/parseInt(S[1]));if(C=Math.floor(C),r&&(o-=s.offsetHeight),T>l||C>o||oT){var k=i.offsetWidth,E=i.offsetHeight,A=o/E,L={width:k*A,height:E*A};i.parentNode.setAttribute(\"style\",\"max-width: \".concat(L.width,\"px\")),r&&s.setAttribute(\"style\",\"max-width: \".concat(L.width,\"px;\"))}else i.parentNode.style.maxWidth=\"\".concat(w),r&&s.setAttribute(\"style\",\"max-width: \".concat(w,\";\"))}}}}},{key:\"reload\",value:function(){this.init()}},{key:\"updateNavigationClasses\",value:function(){var e=this.loop();c(this.nextButton,\"disabled\"),c(this.prevButton,\"disabled\"),0==this.index&&this.elements.length-1==0?(d(this.prevButton,\"disabled\"),d(this.nextButton,\"disabled\")):0!==this.index||e?this.index!==this.elements.length-1||e||d(this.nextButton,\"disabled\"):d(this.prevButton,\"disabled\")}},{key:\"loop\",value:function(){var e=P(this.settings,\"loopAtEnd\")?this.settings.loopAtEnd:null;return e=P(this.settings,\"loop\")?this.settings.loop:e,e}},{key:\"close\",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&r(this.bodyHiddenChildElms,(function(e){e.removeAttribute(\"aria-hidden\")})),d(this.modal,\"glightbox-closing\"),v(this.overlay,\"none\"==this.settings.openEffect?\"none\":this.settings.cssEfects.fade.out),v(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;c(ee,\"glightbox-open\"),c(i,\"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer\"),e.modal.parentNode.removeChild(e.modal),e.trigger(\"close\"),C(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(\".gcss-styles\");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:\"destroy\",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:\"on\",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!C(t))throw new TypeError(\"Event name and callback must be defined\");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:\"once\",value:function(e,t){this.on(e,t,!0)}},{key:\"trigger\",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];r(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&r(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:\"clearAllEvents\",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:\"version\",value:function(){return\"3.3.0\"}}]);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new ie(e);return t.init(),t}}));","/**\n * Swiper 11.1.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2024 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 9, 2024\n */\n\nexport { S as Swiper, S as default } from './shared/swiper-core.mjs';\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.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 if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\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 swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const 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 (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= 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 if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= 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 Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n 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 if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\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 || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\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 || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides[i].classList.add(params.slideVisibleClass);\n }\n if (isFullyVisible) {\n slides[i].classList.add(params.slideFullyVisibleClass);\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\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 {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = 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 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\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 swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\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 return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\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 && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n 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 getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\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 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, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\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.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : 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) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\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 const t = rtl ? translate : -translate;\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else 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.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.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 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n 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 return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n 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(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!swiper.wrapperEl.contains(targetEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = 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 cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n 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 || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\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 let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\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 let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\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 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\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 if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\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\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 = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\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 let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\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 (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\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 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(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n 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(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 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 clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\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 {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n 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 swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n 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, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n 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 {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(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 // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\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 (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(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 changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\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 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\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.removeAttribute('style');\n wrapperEl.removeAttribute('style');\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('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 if (deleteInstance !== false) {\n swiper.el.swiper = null;\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction 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}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\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 (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\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}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v };\n","export {default as Virtual} from './virtual.mjs';\nexport {default as Keyboard} from './keyboard.mjs';\nexport {default as Mousewheel} from './mousewheel.mjs';\nexport {default as Navigation} from './navigation.mjs';\nexport {default as Pagination} from './pagination.mjs';\nexport {default as Scrollbar} from './scrollbar.mjs';\nexport {default as Parallax} from './parallax.mjs';\nexport {default as Zoom} from './zoom.mjs';\nexport {default as Controller} from './controller.mjs';\nexport {default as A11y} from './a11y.mjs';\nexport {default as History} from './history.mjs';\nexport {default as HashNavigation} from './hash-navigation.mjs';\nexport {default as Autoplay} from './autoplay.mjs';\nexport {default as Thumbs} from './thumbs.mjs';\nexport {default as FreeMode} from './free-mode.mjs';\nexport {default as Grid} from './grid.mjs';\nexport {default as Manipulation} from './manipulation.mjs';\nexport {default as EffectFade} from './effect-fade.mjs';\nexport {default as EffectCube} from './effect-cube.mjs';\nexport {default as EffectFlip} from './effect-flip.mjs';\nexport {default as EffectCoverflow} from './effect-coverflow.mjs';\nexport {default as EffectCreative} from './effect-creative.mjs';\nexport {default as EffectCards} from './effect-cards.mjs';","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) {\n swiper.virtual.cache[index] = slideEl;\n }\n return slideEl;\n }\n function update(force, beforeInit) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop,\n initialSlide\n } = swiper.params;\n if (beforeInit && !isLoop && initialSlide > 0) {\n return;\n }\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`)).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n // shift cache indexes\n Object.keys(swiper.virtual.cache).forEach(key => {\n if (key > slidesIndexes) {\n swiper.virtual.cache[key - 1] = swiper.virtual.cache[key];\n swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1);\n delete swiper.virtual.cache[key];\n }\n });\n }\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n update(false, true);\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const el = swiper.el;\n const swiperWidth = el.clientWidth;\n const swiperHeight = el.clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = elementOffset(el);\n if (rtl) swiperOffset.left -= el.scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n emit('keyPress', kc);\n return undefined;\n }\n function enable() {\n if (swiper.keyboard.enabled) return;\n document.addEventListener('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n function disable() {\n if (!swiper.keyboard.enabled) return;\n document.removeEventListener('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null,\n noMousewheelClass: 'swiper-no-mousewheel'\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n 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 pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\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 return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\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 && now() - 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 emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\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 function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n\n // Ignore event if the target or its parents have the swiper-no-mousewheel class\n if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\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 animateSlider(newEvent);\n }\n } else {\n 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 (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 = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) 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 (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n return true;\n }\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n swiper.slideToLoop(index);\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\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 bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\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 subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\n\nfunction Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\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.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (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 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n if (!el.length) return;\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass));\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass));\n }\n disableDraggable();\n }\n on('changeDirection', () => {\n if (!swiper.scrollbar || !swiper.scrollbar.el) return;\n const params = swiper.params.scrollbar;\n let {\n el\n } = swiper.scrollbar;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock changeDirection', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass));\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid,\n isElement\n } = swiper;\n const elements = elementChildren(el, elementsSelector);\n if (swiper.isElement) {\n elements.push(...elementChildren(swiper.hostEl, elementsSelector));\n }\n elements.forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n const {\n el,\n hostEl\n } = swiper;\n const elements = [...el.querySelectorAll(elementsSelector)];\n if (swiper.isElement) {\n elements.push(...hostEl.querySelectorAll(elementsSelector));\n }\n elements.forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n limitToOriginalSize: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n originX: 0,\n originY: 0,\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getMaxRatio() {\n const params = swiper.params.zoom;\n const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {\n const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;\n return Math.min(imageMaxRatio, maxRatio);\n }\n return maxRatio;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = getMaxRatio();\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.originX = originX;\n gesture.originY = originY;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\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.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale > 1 && gesture.slideEl) {\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n } else if (zoom.scale <= 1 && gesture.slideEl) {\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n }\n if (zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n gesture.slideEl = undefined;\n }\n }\n let allowTouchMoveTimeout;\n function allowTouchMove() {\n swiper.touchEventsData.preventTouchMoveFromPointerMove = false;\n }\n function preventTouchMove() {\n clearTimeout(allowTouchMoveTimeout);\n swiper.touchEventsData.preventTouchMoveFromPointerMove = true;\n allowTouchMoveTimeout = setTimeout(() => {\n allowTouchMove();\n });\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n const event = evCache.length > 0 ? evCache[0] : e;\n image.touchesStart.x = event.pageX;\n image.touchesStart.y = event.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {\n return;\n }\n const zoom = swiper.zoom;\n if (!gesture.imageEl) {\n return;\n }\n if (!image.isTouched || !gesture.slideEl) {\n return;\n }\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) {\n allowTouchMove();\n 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 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n if (touchesDiff > 5) {\n swiper.allowClick = false;\n }\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n allowTouchMove();\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n preventTouchMove();\n image.isMoved = true;\n const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n const {\n originX,\n originY\n } = gesture;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\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 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 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) 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 image.currentX = newPositionX;\n image.currentY = newPositionY;\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 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n const maxRatio = getMaxRatio();\n zoom.scale = forceZoomRatio || maxRatio;\n currentScale = forceZoomRatio || maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;\n imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\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 if (forceZoomRatio && zoom.scale === 1) {\n gesture.originX = 0;\n gesture.originY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n gesture.originX = 0;\n gesture.originY = 0;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd();\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, k as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n function getInterpolateFunction(c) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n if (c.destroyed) return;\n\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n multiplier = 1;\n }\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n if (c.destroyed) return;\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}\n\nexport { Controller as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${index}\"]`) : swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n getSlideIndex(_s, hash) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n if (!slideWithHash) return 0;\n const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n return index;\n }\n return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n }\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n emit('hashSet');\n } else {\n document.location.hash = activeSlideHash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit,\n params\n } = _ref;\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { l as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n swiper.slideToLoop(slideToIndex);\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper.update();\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n slideEl.classList.add(thumbActiveClass);\n });\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n if (thumbsSwiper.slides[swiper.realIndex + i]) {\n thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n }\n }\n }\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n const currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n const document = getDocument();\n const getThumbsElementAndInit = () => {\n const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n if (thumbsElement && thumbsElement.swiper) {\n thumbs.swiper = thumbsElement.swiper;\n init();\n update(true);\n } else if (thumbsElement) {\n const onThumbsSwiper = e => {\n thumbs.swiper = e.detail[0];\n thumbsElement.removeEventListener('init', onThumbsSwiper);\n init();\n update(true);\n thumbs.swiper.update();\n swiper.update();\n };\n thumbsElement.addEventListener('init', onThumbsSwiper);\n }\n return thumbsElement;\n };\n const watchForThumbsToAppear = () => {\n if (swiper.destroyed) return;\n const thumbsElement = getThumbsElementAndInit();\n if (!thumbsElement) {\n requestAnimationFrame(watchForThumbsToAppear);\n }\n };\n requestAnimationFrame(watchForThumbsToAppear);\n } else {\n init();\n update(true);\n }\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}\n\nexport { Thumb as default };\n","import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n if (swiper.params.cssMode) return;\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n if (swiper.params.cssMode) return;\n const {\n touchEventsData: data,\n touches\n } = swiper;\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: now()\n });\n }\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n if (swiper.params.cssMode) return;\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\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 if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\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 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\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.freeMode.momentumBounce) {\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.freeMode.sticky) {\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 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 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.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n emit('_freeModeStaticRelease');\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n let wasMultiRow;\n const getSpaceBetween = () => {\n let spaceBetween = swiper.params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n return spaceBetween;\n };\n const initSlides = slides => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n slidesPerRow = slidesNumberEvenToRows / rows;\n };\n const unsetSlides = () => {\n if (swiper.slides) {\n swiper.slides.forEach(slide => {\n if (slide.swiperSlideGridSet) {\n slide.style.height = '';\n slide.style[swiper.getDirectionLabel('margin-top')] = '';\n }\n });\n }\n };\n const updateSlide = (i, slide, slides) => {\n const {\n slidesPerGroup\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows,\n fill\n } = swiper.params.grid;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.row = row;\n slide.column = column;\n slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`;\n slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n slide.swiperSlideGridSet = true;\n };\n const updateWrapperSize = (slideSize, snapGrid) => {\n const {\n centeredSlides,\n roundLengths\n } = swiper.params;\n const spaceBetween = getSpaceBetween();\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n const onInit = () => {\n wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1;\n };\n const onUpdate = () => {\n const {\n params,\n el\n } = swiper;\n const isMultiRow = params.grid && params.grid.rows > 1;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n numFullColumns = 1;\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n wasMultiRow = isMultiRow;\n };\n on('init', onInit);\n on('update', onUpdate);\n swiper.grid = {\n initSlides,\n unsetSlides,\n updateSlide,\n updateWrapperSize\n };\n}\n\nexport { Grid as default };\n","function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}\n\nfunction prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\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 const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\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 {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\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[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[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\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 const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}\n\nexport { Manipulation as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFade as default };\n","function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}\n\nexport { effectInit as e };\n","import { g as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}\n\nexport { effectTarget as e };\n","import { k as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformElements,\n allSlides\n } = _ref;\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.wrapperEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) {\n wrapperRotate += 0.001;\n }\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectFlip as default };\n","import { g as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n if (!shadowEl) {\n shadowEl = createElement('div', shadowClass.split(' '));\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n if (swiper.browser && swiper.browser.need3dFix) {\n if (Math.abs(rotateY) / 90 % 2 === 1) {\n rotateY += 0.001;\n }\n if (Math.abs(rotateX) / 90 % 2 === 1) {\n rotateX += 0.001;\n }\n }\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n let val = data.rotate[index] * Math.abs(progress * multiplier);\n if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) {\n val += 0.001;\n }\n r[index] = val;\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow('creative', slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { g as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n /* eslint-disable */\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n scale(${scaleString})\n `;\n /* eslint-enable */\n\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow('cards', slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}\n\nexport { EffectCards as default };\n"],"names":["$928de60d0cea4b62$var$support","$928de60d0cea4b62$var$deviceCached","$928de60d0cea4b62$var$browser","$parcel$interopDefault","a","__esModule","default","$48fd48063a4817a7$exports","$8e504ae62a4f5a96$var$isObject","obj","constructor","Object","$8e504ae62a4f5a96$var$extend","target","src","keys","forEach","key","length","t","e","Symbol","iterator","prototype","i","TypeError","n","s","enumerable","configurable","writable","defineProperty","toPrimitive","call","String","Number","l","Date","now","o","arguments","toString","hasOwnProperty","r","E","window","document","L","I","M","P","all","evt","found","eventName","fn","h","onElement","withCallback","avoidDuplicate","once","d","useCapture","c","u","g","v","C","destroy","k","querySelectorAll","splice","removeEventListener","addEventListener","push","split","classList","add","remove","contains","body","parentElement","matches","msMatchesSelector","b","createElement","animation","OAnimation","MozAnimation","WebkitAnimation","style","f","webkitTransform","MozTransform","msTransform","OTransform","transform","p","display","m","y","createDocumentFragment","innerHTML","firstChild","appendChild","x","width","innerWidth","documentElement","clientWidth","height","innerHeight","clientHeight","S","setInterval","clearInterval","clearTimeout","setTimeout","w","O","console","error","indexOf","getElementsByTagName","rel","type","href","media","insertBefore","onload","T","navigator","userAgent","match","nodeType","A","Array","isArray","isFinite","z","isNaN","parseFloat","X","parseInt","getAttribute","Math","max","apply","map","filter","sort","querySelector","concat","q","img","slide","onclose","setZoomEvents","active","zoomedIn","dragging","currentX","currentY","initialX","initialY","xOffset","yOffset","dragStart","dragEnd","drag","zoomOut","zoomIn","value","widowWidth","setAttribute","maxWidth","naturalWidth","maxHeight","naturalHeight","setTranslate","parentNode","preventDefault","touches","clientX","clientY","isDragging","N","dragEl","toleranceX","toleranceY","instance","el","direction","lastDirection","toleranceReached","dragContainer","nodeName","toLowerCase","doSlideChange","preventOutsideClick","prevSlide","nextSlide","doSlideClose","close","transition","abs","shouldChange","settings","dragAutoSnap","shouldClose","lastChild","_","getAllPlayers","plyr","css","videoProvider","js","Plyr","config","on","detail","dataset","ready","resize","W","B","pop","trim","content","className","getElementById","cloneNode","events","H","url","callback","allow","appendTo","j","defaults","sizes","srcset","title","description","alt","descPosition","effect","zoomable","draggable","sourceType","setSize","sanitizeValue","join","RegExp","replace","substring","DOMException","slideConfig","checkSize","videosWidth","_hasCustomWidth","_hasCustomHeight","V","element","index","beforeSlideLoad","player","afterSlideLoad","getSlidePlayerInstance","removeChild","id","moreLength","smallDescription","slideShortDesc","moreText","descriptionEvents","dragToleranceX","dragToleranceY","offsetWidth","Image","innerText","substr","slideHTML","slideExtraAttributes","parseConfig","F","sqrt","G","handlers","Z","U","start","bind","move","end","cancel","preV","pinchStartLen","zoom","isDoubleTap","rotate","touchStart","multipointStart","multipointEnd","pinch","swipe","tap","doubleTap","longTap","singleTap","pressMove","twoFingerPressMove","touchMove","touchEnd","touchCancel","translateContainer","_cancelAllHandler","cancelAll","delta","last","tapTimeout","singleTapTimeout","longTapTimeout","swipeTimeout","x1","x2","y1","y2","preTapPosition","log","pageX","pageY","dispatch","_cancelLongTap","_cancelSingleTap","_preventTap","angle","acos","PI","sx2","deltaX","deltaY","sy2","changedTouches","_swipeDirection","del","$","OTransition","MozTransition","WebkitTransition","opacity","K","Q","createTouch","msMaxTouchPoints","ee","te","selector","elements","skin","theme","closeButton","startAt","autoplayVideos","autofocusVideos","beforeSlideChange","afterSlideChange","slideInserted","slideRemoved","onOpen","onClose","loop","preload","oneSlidePerOpen","touchNavigation","touchFollowAxis","keyboardNavigation","closeOnOutsideClick","plugins","ratio","fullscreen","enabled","iosNative","youtube","noCookie","showinfo","iv_load_policy","vimeo","byline","portrait","transparent","openEffect","closeEffect","slideEffect","cssEfects","fade","in","out","slideBack","none","svg","next","prev","lightboxHTML","ie","customOptions","effectsClasses","getAnimationClasses","videoPlayers","apiEvents","fullElementsList","getSelector","baseEvents","open","getElements","activeSlide","prevActiveSlideIndex","prevActiveSlide","getGalleryElements","getElementIndex","build","overlay","head","showSlide","prevButton","nextButton","lightboxOpen","trigger","J","Y","targetTouches","offsetHeight","scaleX","scaleY","touch","keyboard","event","keyCode","activeElement","toLocaleLowerCase","focus","loader","slidesContainer","slideAnimateOut","slideAnimateIn","slideNode","slideIndex","node","setContent","slideDescription","slideDescriptionContained","preloadSlide","updateNavigationClasses","goToSlide","getConfig","create","getActiveSlideIndex","slidePlayerPlay","current","slidePlayerPause","playing","pause","play","muted","container","gallery","built","childNodes","charAt","hasAttribute","modal","bodyHiddenChildElms","outClose","floor","init","loopAtEnd","closing","removeAttribute","clearAllEvents","$8e504ae62a4f5a96$var$ssrDocument","blur","createEvent","initEvent","children","createElementNS","importNode","location","hash","host","hostname","origin","pathname","protocol","search","$8e504ae62a4f5a96$export$39b482c5e57630a8","doc","$8e504ae62a4f5a96$var$ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","screen","matchMedia","requestAnimationFrame","cancelAnimationFrame","$8e504ae62a4f5a96$export$407448d2b89b1813","win","$c4729edb2a042a40$export$7ccc53e8f1e7dfc5","delay","$c4729edb2a042a40$export$4368d992c4eafac0","$c4729edb2a042a40$export$882b5998b3b9117c","slice","$c4729edb2a042a40$export$3b14a55fb2447963","to","undefined","noExtend","nextSource","HTMLElement","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","__swiper__","$c4729edb2a042a40$export$2408f22a0fab9ae5","varName","varValue","setProperty","$c4729edb2a042a40$export$43caf9889c228507","_ref","time","swiper","targetPosition","side","window1","startPosition","translate","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","animate","getTime","currentPosition","easeProgress","cos","progress","min","scrollTo","overflow","$c4729edb2a042a40$export$f1e1789686576879","$c4729edb2a042a40$export$625550452a3fa3ec","text","warn","err","$c4729edb2a042a40$export$db3b6bfb95261072","tag","classes","$c4729edb2a042a40$export$ae1af26003f05816","prop","$c4729edb2a042a40$export$dda1d9f60106f0e9","child","previousSibling","$c4729edb2a042a40$export$407448d2b89b1813","parents","parent","$c4729edb2a042a40$export$2d1720544b23b823","size","includeMargins","$c4729edb2a042a40$export$953cecd6e717a553","$928de60d0cea4b62$var$getSupport","$928de60d0cea4b62$var$calcSupport","document1","smoothScroll","DocumentTouch","$928de60d0cea4b62$var$getDevice","overrides","$928de60d0cea4b62$var$calcDevice","_temp","support","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","macos","iPadScreens","os","$928de60d0cea4b62$var$toggleSlideClasses","slideEl","condition","$928de60d0cea4b62$var$processLazyPreloader","imageEl","destroyed","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","$928de60d0cea4b62$var$unlazy","slides","$928de60d0cea4b62$var$preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","preloadColumns","activeColumn","from","includes","column","slideIndexLastInView","rewind","realIndex","$928de60d0cea4b62$var$transitionEmit","runCallbacks","step","previousIndex","emit","$928de60d0cea4b62$var$preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","$928de60d0cea4b62$var$onTouchStart","originalEvent","data","touchEventsData","pointerId","touchId","identifier","simulateTouch","pointerType","animating","preventInteractionOnTransition","cssMode","loopFix","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","path","noSwipingSelector","isTargetShadow","noSwiping","$928de60d0cea4b62$var$closestElement","base","__closestFrom","assignedSlot","getRootNode","allowClick","swipeHandler","startY","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchStart","$928de60d0cea4b62$var$onTouchMove","targetTouch","loopFixed","rtlTranslate","rtl","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","previousX","previousY","diffX","diffY","touchAngle","isHorizontal","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","diff","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","allowSlideNext","allowSlidePrev","startTranslate","getTranslate","setTransition","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","currentTranslate","loopSwapReset","disableParentSwiper","resistanceRatio","centeredSlides","slidesSizesGrid","activeSlideIndex","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","onTouchMove","updateProgress","$928de60d0cea4b62$var$onTouchEnd","currentPos","browser","isSafari","isWebView","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","onTouchEnd","swipeToLast","stopIndex","groupSize","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","isBeginning","virtual","isEnd","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","$928de60d0cea4b62$var$onResize","breakpoints","setBreakpoint","snapGrid","isVirtual","updateSlides","isVirtualLoop","slideToLoop","autoplay","running","paused","resizeTimeout","resume","watchOverflow","checkOverflow","$928de60d0cea4b62$var$onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","$928de60d0cea4b62$var$onScroll","previousTranslate","scrollLeft","scrollTop","translatesDiff","$928de60d0cea4b62$var$onLoad","autoHeight","update","$928de60d0cea4b62$var$onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","$928de60d0cea4b62$var$events","method","capture","domMethod","onDocumentTouchStart","passive","onClick","onScroll","updateOnWindowResize","onLoad","$928de60d0cea4b62$var$isGridEnabled","$928de60d0cea4b62$export$4368d992c4eafac0","swiperElementNodeName","initialSlide","resizeObserver","createElements","eventsPrefix","setWrapperSize","virtualTranslate","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","uniqueNavElements","slideToClickedSlide","loopAddBlankSlides","loopAdditionalSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","containerModifierClass","slideBlankClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","$928de60d0cea4b62$var$prototypes","eventsEmitter","handler","priority","self","eventsListeners","onceHandler","off","__emitterProxy","_len","args","_key","onAny","eventsAnyListeners","offAny","eventHandler","context","_len2","_key2","unshift","eventsArray","slideSize","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","wrongRTL","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","initSlides","unsetSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","paddingLeft","paddingRight","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","getFilteredSlide","nextEls","nextElementSibling","prevEls","previousElementSibling","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","$928de60d0cea4b62$var$getActiveIndexByTranslate","skip","firstSlideInColumn","initialized","pathEl","slideFound","clickedSlide","clickedIndex","axis","matrix","curTransform","transformMatrix","curStyle","$c4729edb2a042a40$var$getComputedStyle","currentStyle","WebKitCSSMatrix","MsTransform","m41","m42","byController","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionDuration","transitionDelay","transitionStart","transitionEnd","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","newIndex","targetSlideIndex","cols","needLoopFix","slideRealIndex","slideNext","perGroup","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","nextSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","append","recalcSlides","byMousewheel","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","activeColIndex","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","newSlideTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","breakpointOnlyParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","points","point","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","$928de60d0cea4b62$var$prepareClasses","entries","prefix","resultClasses","item","removeClasses","$928de60d0cea4b62$var$extendedDefaults","$928de60d0cea4b62$export$25ce5a424b770e84","swipers","newParams","$928de60d0cea4b62$var$calcBrowser","needPerspectiveFix","major","minor","num","test","isSafariBrowser","need3dFix","modules","__modules__","allModulesParams","mod","extendParams","moduleParamName","moduleParams","auto","swiperParams","passedParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","toUpperCase","getWrapperSelector","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","object","extendDefaults","newDefaults","extendedDefaults","installModule","use","module","$1fa9c9580bcac513$export$db3b6bfb95261072","checkProps","$2b86f6bf56c98ece$export$2e2bcd8739ae039","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","isHidden","pagination","clickable","toggle","$7594efee8601d2e1$export$db3b6bfb95261072","$a52c8024d16f85e6$export$2e2bcd8739ae039","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","total","firstIndex","midIndex","classesToRemove","suffix","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","progressEl","render","paginationHTML","numberOfBullets","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","createObserver","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","$5c2d4072c3636382$var$swiper","$5c2d4072c3636382$var$wrapper","$5c2d4072c3636382$var$initTestimonials","adjustHeight"],"version":3,"file":"index.959adfbd.js.map"}