/** * swiper 8.3.0 * most modern mobile touch slider and framework with hardware accelerated transitions * https://swiperjs.com * * copyright 2014-2022 vladimir kharlampidi * * released under the mit license * * released on: july 6, 2022 */ ! function(e, t) { "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalthis ? globalthis : e || self).swiper = t() }(this, (function() { "use strict"; function e(e) { return null !== e && "object" == typeof e && "constructor" in e && e.constructor === object } function t(s, a) { void 0 === s && (s = {}), void 0 === a && (a = {}), object.keys(a).foreach((i => { void 0 === s[i] ? s[i] = a[i] : e(a[i]) && e(s[i]) && object.keys(a[i]).length > 0 && t( s[i], a[i]) })) } const s = { body: {}, addeventlistener() {}, removeeventlistener() {}, activeelement: { blur() {}, nodename: "" }, queryselector: () => null, queryselectorall: () => [], getelementbyid: () => null, createevent: () => ({ initevent() {} }), createelement: () => ({ children: [], childnodes: [], style: {}, setattribute() {}, getelementsbytagname: () => [] }), createelementns: () => ({}), importnode: () => null, location: { hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: "" } }; function a() { const e = "undefined" != typeof document ? document : {}; return t(e, s), e } const i = { document: s, navigator: { useragent: "" }, location: { hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: "" }, history: { replacestate() {}, pushstate() {}, go() {}, back() {} }, customevent: function() { return this }, addeventlistener() {}, removeeventlistener() {}, getcomputedstyle: () => ({ getpropertyvalue: () => "" }), image() {}, date() {}, screen: {}, settimeout() {}, cleartimeout() {}, matchmedia: () => ({}), requestanimationframe: e => "undefined" == typeof settimeout ? (e(), null) : settimeout(e, 0), cancelanimationframe(e) { "undefined" != typeof settimeout && cleartimeout(e) } }; function r() { const e = "undefined" != typeof window ? window : {}; return t(e, i), e } class n extends array { constructor(e) { "number" == typeof e ? super(e) : (super(...e || []), function(e) { const t = e.__proto__; object.defineproperty(e, "__proto__", { get: () => t, set(e) { t.__proto__ = e } }) }(this)) } } function l(e) { void 0 === e && (e = []); const t = []; return e.foreach((e => { array.isarray(e) ? t.push(...l(e)) : t.push(e) })), t } function o(e, t) { return array.prototype.filter.call(e, t) } function d(e, t) { const s = r(), i = a(); let l = []; if (!t && e instanceof n) return e; if (!e) return new n(l); if ("string" == typeof e) { const s = e.trim(); if (s.indexof("<") >= 0 && s.indexof(">") >= 0) { let e = "div"; 0 === s.indexof(" e.split(" ")))); return this.foreach((e => { e.classlist.add(...a) })), this }, removeclass: function() { for (var e = arguments.length, t = new array(e), s = 0; s < e; s++) t[s] = arguments[s]; const a = l(t.map((e => e.split(" ")))); return this.foreach((e => { e.classlist.remove(...a) })), this }, hasclass: function() { for (var e = arguments.length, t = new array(e), s = 0; s < e; s++) t[s] = arguments[s]; const a = l(t.map((e => e.split(" ")))); return o(this, (e => a.filter((t => e.classlist.contains(t))).length > 0)).length > 0 }, toggleclass: function() { for (var e = arguments.length, t = new array(e), s = 0; s < e; s++) t[s] = arguments[s]; const a = l(t.map((e => e.split(" ")))); this.foreach((e => { a.foreach((t => { e.classlist.toggle(t) })) })) }, attr: function(e, t) { if (1 === arguments.length && "string" == typeof e) return this[0] ? this[0].getattribute( e) : void 0; for (let s = 0; s < this.length; s += 1) if (2 === arguments.length) this[s].setattribute(e, t); else for (const t in e) this[s][t] = e[t], this[s].setattribute(t, e[t]); return this }, removeattr: function(e) { for (let t = 0; t < this.length; t += 1) this[t].removeattribute(e); return this }, transform: function(e) { for (let t = 0; t < this.length; t += 1) this[t].style.transform = e; return this }, transition: function(e) { for (let t = 0; t < this.length; t += 1) this[t].style.transitionduration = "string" != typeof e ? `${e}ms` : e; return this }, on: function() { for (var e = arguments.length, t = new array(e), s = 0; s < e; s++) t[s] = arguments[s]; let [a, i, r, n] = t; function l(e) { const t = e.target; if (!t) return; const s = e.target.dom7eventdata || []; if (s.indexof(e) < 0 && s.unshift(e), d(t).is(i)) r.apply(t, s); else { const e = d(t).parents(); for (let t = 0; t < e.length; t += 1) d(e[t]).is(i) && r.apply(e[t], s) } } function o(e) { const t = e && e.target && e.target.dom7eventdata || []; t.indexof(e) < 0 && t.unshift(e), r.apply(this, t) } "function" == typeof t[1] && ([a, r, n] = t, i = void 0), n || (n = !1); const c = a.split(" "); let p; for (let e = 0; e < this.length; e += 1) { const t = this[e]; if (i) for (p = 0; p < c.length; p += 1) { const e = c[p]; t.dom7livelisteners || (t.dom7livelisteners = {}), t.dom7livelisteners[e] || (t .dom7livelisteners[e] = []), t.dom7livelisteners[e].push({ listener: r, proxylistener: l }), t.addeventlistener(e, l, n) } else for (p = 0; p < c.length; p += 1) { const e = c[p]; t.dom7listeners || (t.dom7listeners = {}), t.dom7listeners[e] || (t .dom7listeners[e] = []), t.dom7listeners[e].push({ listener: r, proxylistener: o }), t.addeventlistener(e, o, n) } } return this }, off: function() { for (var e = arguments.length, t = new array(e), s = 0; s < e; s++) t[s] = arguments[s]; let [a, i, r, n] = t; "function" == typeof t[1] && ([a, r, n] = t, i = void 0), n || (n = !1); const l = a.split(" "); for (let e = 0; e < l.length; e += 1) { const t = l[e]; for (let e = 0; e < this.length; e += 1) { const s = this[e]; let a; if (!i && s.dom7listeners ? a = s.dom7listeners[t] : i && s.dom7livelisteners && ( a = s.dom7livelisteners[t]), a && a.length) for (let e = a.length - 1; e >= 0; e -= 1) { const i = a[e]; r && i.listener === r || r && i.listener && i.listener.dom7proxy && i .listener.dom7proxy === r ? (s.removeeventlistener(t, i.proxylistener, n), a.splice(e, 1)) : r || (s.removeeventlistener(t, i .proxylistener, n), a.splice(e, 1)) } } } return this }, trigger: function() { const e = r(); for (var t = arguments.length, s = new array(t), a = 0; a < t; a++) s[a] = arguments[a]; const i = s[0].split(" "), n = s[1]; for (let t = 0; t < i.length; t += 1) { const a = i[t]; for (let t = 0; t < this.length; t += 1) { const i = this[t]; if (e.customevent) { const t = new e.customevent(a, { detail: n, bubbles: !0, cancelable: !0 }); i.dom7eventdata = s.filter(((e, t) => t > 0)), i.dispatchevent(t), i .dom7eventdata = [], delete i.dom7eventdata } } } return this }, transitionend: function(e) { const t = this; return e && t.on("transitionend", (function s(a) { a.target === this && (e.call(this, a), t.off("transitionend", s)) })), this }, outerwidth: function(e) { if (this.length > 0) { if (e) { const e = this.styles(); return this[0].offsetwidth + parsefloat(e.getpropertyvalue("margin-right")) + parsefloat(e.getpropertyvalue("margin-left")) } return this[0].offsetwidth } return null }, outerheight: function(e) { if (this.length > 0) { if (e) { const e = this.styles(); return this[0].offsetheight + parsefloat(e.getpropertyvalue("margin-top")) + parsefloat(e.getpropertyvalue("margin-bottom")) } return this[0].offsetheight } return null }, styles: function() { const e = r(); return this[0] ? e.getcomputedstyle(this[0], null) : {} }, offset: function() { if (this.length > 0) { const e = r(), t = a(), s = this[0], i = s.getboundingclientrect(), n = t.body, l = s.clienttop || n.clienttop || 0, o = s.clientleft || n.clientleft || 0, d = s === e ? e.scrolly : s.scrolltop, c = s === e ? e.scrollx : s.scrollleft; return { top: i.top + d - l, left: i.left + c - o } } return null }, css: function(e, t) { const s = r(); let a; if (1 === arguments.length) { if ("string" != typeof e) { for (a = 0; a < this.length; a += 1) for (const t in e) this[a].style[t] = e[t]; return this } if (this[0]) return s.getcomputedstyle(this[0], null).getpropertyvalue(e) } if (2 === arguments.length && "string" == typeof e) { for (a = 0; a < this.length; a += 1) this[a].style[e] = t; return this } return this }, each: function(e) { return e ? (this.foreach(((t, s) => { e.apply(t, [t, s]) })), this) : this }, html: function(e) { if (void 0 === e) return this[0] ? this[0].innerhtml : null; for (let t = 0; t < this.length; t += 1) this[t].innerhtml = e; return this }, text: function(e) { if (void 0 === e) return this[0] ? this[0].textcontent.trim() : null; for (let t = 0; t < this.length; t += 1) this[t].textcontent = e; return this }, is: function(e) { const t = r(), s = a(), i = this[0]; let l, o; if (!i || void 0 === e) return !1; if ("string" == typeof e) { if (i.matches) return i.matches(e); if (i.webkitmatchesselector) return i.webkitmatchesselector(e); if (i.msmatchesselector) return i.msmatchesselector(e); for (l = d(e), o = 0; o < l.length; o += 1) if (l[o] === i) return !0; return !1 } if (e === s) return i === s; if (e === t) return i === t; if (e.nodetype || e instanceof n) { for (l = e.nodetype ? [e] : e, o = 0; o < l.length; o += 1) if (l[o] === i) return !0; return !1 } return !1 }, index: function() { let e, t = this[0]; if (t) { for (e = 0; null !== (t = t.previoussibling);) 1 === t.nodetype && (e += 1); return e } }, eq: function(e) { if (void 0 === e) return this; const t = this.length; if (e > t - 1) return d([]); if (e < 0) { const s = t + e; return d(s < 0 ? [] : [this[s]]) } return d([this[e]]) }, append: function() { let e; const t = a(); for (let s = 0; s < arguments.length; s += 1) { e = s < 0 || arguments.length <= s ? void 0 : arguments[s]; for (let s = 0; s < this.length; s += 1) if ("string" == typeof e) { const a = t.createelement("div"); for (a.innerhtml = e; a.firstchild;) this[s].appendchild(a.firstchild) } else if (e instanceof n) for (let t = 0; t < e.length; t += 1) this[s].appendchild(e[t]); else this[s].appendchild(e) } return this }, prepend: function(e) { const t = a(); let s, i; for (s = 0; s < this.length; s += 1) if ("string" == typeof e) { const a = t.createelement("div"); for (a.innerhtml = e, i = a.childnodes.length - 1; i >= 0; i -= 1) this[s] .insertbefore(a.childnodes[i], this[s].childnodes[0]) } else if (e instanceof n) for (i = 0; i < e.length; i += 1) this[s].insertbefore(e[i], this[s].childnodes[0]); else this[s].insertbefore(e, this[s].childnodes[0]); return this }, next: function(e) { return this.length > 0 ? e ? this[0].nextelementsibling && d(this[0].nextelementsibling).is( e) ? d([this[0].nextelementsibling]) : d([]) : this[0].nextelementsibling ? d([this[ 0].nextelementsibling]) : d([]) : d([]) }, nextall: function(e) { const t = []; let s = this[0]; if (!s) return d([]); for (; s.nextelementsibling;) { const a = s.nextelementsibling; e ? d(a).is(e) && t.push(a) : t.push(a), s = a } return d(t) }, prev: function(e) { if (this.length > 0) { const t = this[0]; return e ? t.previouselementsibling && d(t.previouselementsibling).is(e) ? d([t .previouselementsibling ]) : d([]) : t.previouselementsibling ? d([t.previouselementsibling]) : d([]) } return d([]) }, prevall: function(e) { const t = []; let s = this[0]; if (!s) return d([]); for (; s.previouselementsibling;) { const a = s.previouselementsibling; e ? d(a).is(e) && t.push(a) : t.push(a), s = a } return d(t) }, parent: function(e) { const t = []; for (let s = 0; s < this.length; s += 1) null !== this[s].parentnode && (e ? d(this[s] .parentnode).is(e) && t.push(this[s].parentnode) : t.push(this[s].parentnode)); return d(t) }, parents: function(e) { const t = []; for (let s = 0; s < this.length; s += 1) { let a = this[s].parentnode; for (; a;) e ? d(a).is(e) && t.push(a) : t.push(a), a = a.parentnode } return d(t) }, closest: function(e) { let t = this; return void 0 === e ? d([]) : (t.is(e) || (t = t.parents(e).eq(0)), t) }, find: function(e) { const t = []; for (let s = 0; s < this.length; s += 1) { const a = this[s].queryselectorall(e); for (let e = 0; e < a.length; e += 1) t.push(a[e]) } return d(t) }, children: function(e) { const t = []; for (let s = 0; s < this.length; s += 1) { const a = this[s].children; for (let s = 0; s < a.length; s += 1) e && !d(a[s]).is(e) || t.push(a[s]) } return d(t) }, filter: function(e) { return d(o(this, e)) }, remove: function() { for (let e = 0; e < this.length; e += 1) this[e].parentnode && this[e].parentnode .removechild(this[e]); return this } }; function p(e, t) { return void 0 === t && (t = 0), settimeout(e, t) } function u() { return date.now() } function h(e, t) { void 0 === t && (t = "x"); const s = r(); let a, i, n; const l = function(e) { const t = r(); let s; return t.getcomputedstyle && (s = t.getcomputedstyle(e, null)), !s && e.currentstyle && (s = e .currentstyle), s || (s = e.style), s }(e); return s.webkitcssmatrix ? (i = l.transform || l.webkittransform, i.split(",").length > 6 && (i = i .split(", ").map((e => e.replace(",", "."))).join(", ")), n = new s.webkitcssmatrix( "none" === i ? "" : i)) : (n = l.moztransform || l.otransform || l.mstransform || l .mstransform || l.transform || l.getpropertyvalue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), a = n.tostring().split(",")), "x" === t && (i = s.webkitcssmatrix ? n .m41 : 16 === a.length ? parsefloat(a[12]) : parsefloat(a[4])), "y" === t && (i = s .webkitcssmatrix ? n.m42 : 16 === a.length ? parsefloat(a[13]) : parsefloat(a[5])), i || 0 } function m(e) { return "object" == typeof e && null !== e && e.constructor && "object" === object.prototype.tostring .call(e).slice(8, -1) } function f(e) { return "undefined" != typeof window && void 0 !== window.htmlelement ? e instanceof htmlelement : e && ( 1 === e.nodetype || 11 === e.nodetype) } function g() { const e = object(arguments.length <= 0 ? void 0 : arguments[0]), t = ["__proto__", "constructor", "prototype"]; for (let s = 1; s < arguments.length; s += 1) { const a = s < 0 || arguments.length <= s ? void 0 : arguments[s]; if (null != a && !f(a)) { const s = object.keys(object(a)).filter((e => t.indexof(e) < 0)); for (let t = 0, i = s.length; t < i; t += 1) { const i = s[t], r = object.getownpropertydescriptor(a, i); void 0 !== r && r.enumerable && (m(e[i]) && m(a[i]) ? a[i].__swiper__ ? e[i] = a[i] : g(e[ i], a[i]) : !m(e[i]) && m(a[i]) ? (e[i] = {}, a[i].__swiper__ ? e[i] = a[i] : g( e[i], a[i])) : e[i] = a[i]) } } } return e } function v(e, t, s) { e.style.setproperty(t, s) } function w(e) { let { swiper: t, targetposition: s, side: a } = e; const i = r(), n = -t.translate; let l, o = null; const d = t.params.speed; t.wrapperel.style.scrollsnaptype = "none", i.cancelanimationframe(t.cssmodeframeid); const c = s > n ? "next" : "prev", p = (e, t) => "next" === c && e >= t || "prev" === c && e <= t, u = () => { l = (new date).gettime(), null === o && (o = l); const e = math.max(math.min((l - o) / d, 1), 0), r = .5 - math.cos(e * math.pi) / 2; let c = n + r * (s - n); if (p(c, s) && (c = s), t.wrapperel.scrollto({ [a]: c }), p(c, s)) return t.wrapperel.style.overflow = "hidden", t.wrapperel.style .scrollsnaptype = "", settimeout((() => { t.wrapperel.style.overflow = "", t.wrapperel.scrollto({ [a]: c }) })), void i.cancelanimationframe(t.cssmodeframeid); t.cssmodeframeid = i.requestanimationframe(u) }; u() } let b, x, y; function e() { return b || (b = function() { const e = r(), t = a(); return { smoothscroll: t.documentelement && "scrollbehavior" in t.documentelement.style, touch: !!("ontouchstart" in e || e.documenttouch && t instanceof e.documenttouch), passivelistener: function() { let t = !1; try { const s = object.defineproperty({}, "passive", { get() { t = !0 } }); e.addeventlistener("testpassivelistener", null, s) } catch (e) {} return t }(), gestures: "ongesturestart" in e } }()), b } function c(e) { return void 0 === e && (e = {}), x || (x = function(e) { let { useragent: t } = void 0 === e ? {} : e; const s = e(), a = r(), i = a.navigator.platform, n = t || a.navigator.useragent, l = { ios: !1, android: !1 }, o = a.screen.width, d = a.screen.height, c = n.match(/(android);?[\s\/]+([\d.]+)?/); let p = n.match(/(ipad).*os\s([\d_]+)/); const u = n.match(/(ipod)(.*os\s([\d_]+))?/), h = !p && n.match(/(iphone\sos|ios)\s([\d_]+)/), m = "win32" === i; let f = "macintel" === i; return !p && f && s.touch && ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810" ].indexof(`${o}x${d}`) >= 0 && (p = n.match(/(version)\/([\d.]+)/), p || (p = [0, 1, "13_0_0" ]), f = !1), c && !m && (l.os = "android", l.android = !0), (p || h || u) && (l.os = "ios", l.ios = !0), l }(e)), x } function t() { return y || (y = function() { const e = r(); return { issafari: function() { const t = e.navigator.useragent.tolowercase(); return t.indexof("safari") >= 0 && t.indexof("chrome") < 0 && t.indexof( "android") < 0 }(), iswebview: /(iphone|ipod|ipad).*applewebkit(?!.*safari)/i.test(e.navigator.useragent) } }()), y } object.keys(c).foreach((e => { object.defineproperty(d.fn, e, { value: c[e], writable: !0 }) })); var $ = { on(e, t, s) { const a = this; if (!a.eventslisteners || a.destroyed) return a; if ("function" != typeof t) return a; const i = s ? "unshift" : "push"; return e.split(" ").foreach((e => { a.eventslisteners[e] || (a.eventslisteners[e] = []), a.eventslisteners[e][i](t) })), a }, once(e, t, s) { const a = this; if (!a.eventslisteners || a.destroyed) return a; if ("function" != typeof t) return a; function i() { a.off(e, i), i.__emitterproxy && delete i.__emitterproxy; for (var s = arguments.length, r = new array(s), n = 0; n < s; n++) r[n] = arguments[n]; t.apply(a, r) } return i.__emitterproxy = t, a.on(e, i, s) }, onany(e, t) { const s = this; if (!s.eventslisteners || s.destroyed) return s; if ("function" != typeof e) return s; const a = t ? "unshift" : "push"; return s.eventsanylisteners.indexof(e) < 0 && s.eventsanylisteners[a](e), s }, offany(e) { const t = this; if (!t.eventslisteners || t.destroyed) return t; if (!t.eventsanylisteners) return t; const s = t.eventsanylisteners.indexof(e); return s >= 0 && t.eventsanylisteners.splice(s, 1), t }, off(e, t) { const s = this; return !s.eventslisteners || s.destroyed ? s : s.eventslisteners ? (e.split(" ").foreach((e => { void 0 === t ? s.eventslisteners[e] = [] : s.eventslisteners[e] && s .eventslisteners[e].foreach(((a, i) => { (a === t || a.__emitterproxy && a.__emitterproxy === t) && s .eventslisteners[e].splice(i, 1) })) })), s) : s }, emit() { const e = this; if (!e.eventslisteners || e.destroyed) return e; if (!e.eventslisteners) return e; let t, s, a; for (var i = arguments.length, r = new array(i), n = 0; n < i; n++) r[n] = arguments[n]; "string" == typeof r[0] || array.isarray(r[0]) ? (t = r[0], s = r.slice(1, r.length), a = e) : ( t = r[0].events, s = r[0].data, a = r[0].context || e), s.unshift(a); return (array.isarray(t) ? t : t.split(" ")).foreach((t => { e.eventsanylisteners && e.eventsanylisteners.length && e.eventsanylisteners .foreach((e => { e.apply(a, [t, ...s]) })), e.eventslisteners && e.eventslisteners[t] && e.eventslisteners[t] .foreach((e => { e.apply(a, s) })) })), e } }; var s = { updatesize: function() { const e = this; let t, s; const a = e.$el; t = void 0 !== e.params.width && null !== e.params.width ? e.params.width : a[0] .clientwidth, s = void 0 !== e.params.height && null !== e.params.height ? e.params .height : a[0].clientheight, 0 === t && e.ishorizontal() || 0 === s && e.isvertical() || (t = t - parseint(a.css("padding-left") || 0, 10) - parseint(a.css("padding-right") || 0, 10), s = s - parseint(a.css("padding-top") || 0, 10) - parseint(a.css( "padding-bottom") || 0, 10), number.isnan(t) && (t = 0), number.isnan(s) && (s = 0), object.assign(e, { width: t, height: s, size: e.ishorizontal() ? t : s })) }, updateslides: function() { const e = this; function t(t) { return e.ishorizontal() ? t : { width: "height", "margin-top": "margin-left", "margin-bottom ": "margin-right", "margin-left": "margin-top", "margin-right": "margin-bottom", "padding-left": "padding-top", "padding-right": "padding-bottom", marginright: "marginbottom" } [t] } function s(e, s) { return parsefloat(e.getpropertyvalue(t(s)) || 0) } const a = e.params, { $wrapperel: i, size: r, rtltranslate: n, wrongrtl: l } = e, o = e.virtual && a.virtual.enabled, d = o ? e.virtual.slides.length : e.slides.length, c = i.children(`.${e.params.slideclass}`), p = o ? e.virtual.slides.length : c.length; let u = []; const h = [], m = []; let f = a.slidesoffsetbefore; "function" == typeof f && (f = a.slidesoffsetbefore.call(e)); let g = a.slidesoffsetafter; "function" == typeof g && (g = a.slidesoffsetafter.call(e)); const w = e.snapgrid.length, b = e.slidesgrid.length; let x = a.spacebetween, y = -f, e = 0, c = 0; if (void 0 === r) return; "string" == typeof x && x.indexof("%") >= 0 && (x = parsefloat(x.replace("%", "")) / 100 * r), e.virtualsize = -x, n ? c.css({ marginleft: "", marginbottom: "", margintop: "" }) : c.css({ marginright: "", marginbottom: "", margintop: "" }), a.centeredslides && a.cssmode && (v(e.wrapperel, "--swiper-centered-offset-before", ""), v(e.wrapperel, "--swiper-centered-offset-after", "")); const t = a.grid && a.grid.rows > 1 && e.grid; let $; t && e.grid.initslides(p); const s = "auto" === a.slidesperview && a.breakpoints && object.keys(a.breakpoints).filter(( e => void 0 !== a.breakpoints[e].slidesperview)).length > 0; for (let i = 0; i < p; i += 1) { $ = 0; const n = c.eq(i); if (t && e.grid.updateslide(i, n, p, t), "none" !== n.css("display")) { if ("auto" === a.slidesperview) { s && (c[i].style[t("width")] = ""); const r = getcomputedstyle(n[0]), l = n[0].style.transform, o = n[0].style.webkittransform; if (l && (n[0].style.transform = "none"), o && (n[0].style.webkittransform = "none"), a.roundlengths) $ = e.ishorizontal() ? n.outerwidth(!0) : n .outerheight(!0); else { const e = s(r, "width"), t = s(r, "padding-left"), a = s(r, "padding-right"), i = s(r, "margin-left"), l = s(r, "margin-right"), o = r.getpropertyvalue("box-sizing"); if (o && "border-box" === o) $ = e + i + l; else { const { clientwidth: s, offsetwidth: r } = n[0]; $ = e + t + a + i + l + (r - s) } } l && (n[0].style.transform = l), o && (n[0].style.webkittransform = o), a .roundlengths && ($ = math.floor($)) } else $ = (r - (a.slidesperview - 1) * x) / a.slidesperview, a.roundlengths && ($ = math.floor($)), c[i] && (c[i].style[t("width")] = `${$}px`); c[i] && (c[i].swiperslidesize = $), m.push($), a.centeredslides ? (y = y + $ / 2 + e / 2 + x, 0 === e && 0 !== i && (y = y - r / 2 - x), 0 === i && (y = y - r / 2 - x), math.abs(y) < .001 && (y = 0), a.roundlengths && (y = math .floor(y)), c % a.slidespergroup == 0 && u.push(y), h.push(y)) : (a .roundlengths && (y = math.floor(y)), (c - math.min(e.params .slidespergroupskip, c)) % e.params.slidespergroup == 0 && u.push(y), h .push(y), y = y + $ + x), e.virtualsize += $ + x, e = $, c += 1 } } if (e.virtualsize = math.max(e.virtualsize, r) + g, n && l && ("slide" === a.effect || "coverflow" === a.effect) && i.css({ width: `${e.virtualsize+a.spacebetween}px` }), a.setwrappersize && i.css({ [t("width")]: `${e.virtualsize+a.spacebetween}px` }), t && e.grid.updatewrappersize($, u, t), !a.centeredslides) { const t = []; for (let s = 0; s < u.length; s += 1) { let i = u[s]; a.roundlengths && (i = math.floor(i)), u[s] <= e.virtualsize - r && t.push(i) } u = t, math.floor(e.virtualsize - r) - math.floor(u[u.length - 1]) > 1 && u.push(e .virtualsize - r) } if (0 === u.length && (u = [0]), 0 !== a.spacebetween) { const s = e.ishorizontal() && n ? "marginleft" : t("marginright"); c.filter(((e, t) => !a.cssmode || t !== c.length - 1)).css({ [s]: `${x}px` }) } if (a.centeredslides && a.centeredslidesbounds) { let e = 0; m.foreach((t => { e += t + (a.spacebetween ? a.spacebetween : 0) })), e -= a.spacebetween; const t = e - r; u = u.map((e => e < 0 ? -f : e > t ? t + g : e)) } if (a.centerinsufficientslides) { let e = 0; if (m.foreach((t => { e += t + (a.spacebetween ? a.spacebetween : 0) })), e -= a.spacebetween, e < r) { const t = (r - e) / 2; u.foreach(((e, s) => { u[s] = e - t })), h.foreach(((e, s) => { h[s] = e + t })) } } if (object.assign(e, { slides: c, snapgrid: u, slidesgrid: h, slidessizesgrid: m }), a.centeredslides && a.cssmode && !a.centeredslidesbounds) { v(e.wrapperel, "--swiper-centered-offset-before", -u[0] + "px"), v(e.wrapperel, "--swiper-centered-offset-after", e.size / 2 - m[m.length - 1] / 2 + "px"); const t = -e.snapgrid[0], s = -e.slidesgrid[0]; e.snapgrid = e.snapgrid.map((e => e + t)), e.slidesgrid = e.slidesgrid.map((e => e + s)) } if (p !== d && e.emit("slideslengthchange"), u.length !== w && (e.params.watchoverflow && e .checkoverflow(), e.emit("snapgridlengthchange")), h.length !== b && e.emit( "slidesgridlengthchange"), a.watchslidesprogress && e.updateslidesoffset(), !(o || a .cssmode || "slide" !== a.effect && "fade" !== a.effect)) { const t = `${a.containermodifierclass}backface-hidden`, s = e.$el.hasclass(t); p <= a.maxbackfacehiddenslides ? s || e.$el.addclass(t) : s && e.$el.removeclass(t) } }, updateautoheight: function(e) { const t = this, s = [], a = t.virtual && t.params.virtual.enabled; let i, r = 0; "number" == typeof e ? t.settransition(e) : !0 === e && t.settransition(t.params.speed); const n = e => a ? t.slides.filter((t => parseint(t.getattribute("data-swiper-slide-index"), 10) === e))[0] : t.slides.eq(e)[0]; if ("auto" !== t.params.slidesperview && t.params.slidesperview > 1) if (t.params.centeredslides)(t.visibleslides || d([])).each((e => { s.push(e) })); else for (i = 0; i < math.ceil(t.params.slidesperview); i += 1) { const e = t.activeindex + i; if (e > t.slides.length && !a) break; s.push(n(e)) } else s.push(n(t.activeindex)); for (i = 0; i < s.length; i += 1) if (void 0 !== s[i]) { const e = s[i].offsetheight; r = e > r ? e : r }(r || 0 === r) && t.$wrapperel.css("height", `${r}px`) }, updateslidesoffset: function() { const e = this, t = e.slides; for (let s = 0; s < t.length; s += 1) t[s].swiperslideoffset = e.ishorizontal() ? t[s] .offsetleft : t[s].offsettop }, updateslidesprogress: function(e) { void 0 === e && (e = this && this.translate || 0); const t = this, s = t.params, { slides: a, rtltranslate: i, snapgrid: r } = t; if (0 === a.length) return; void 0 === a[0].swiperslideoffset && t.updateslidesoffset(); let n = -e; i && (n = e), a.removeclass(s.slidevisibleclass), t.visibleslidesindexes = [], t .visibleslides = []; for (let e = 0; e < a.length; e += 1) { const l = a[e]; let o = l.swiperslideoffset; s.cssmode && s.centeredslides && (o -= a[0].swiperslideoffset); const d = (n + (s.centeredslides ? t.mintranslate() : 0) - o) / (l.swiperslidesize + s .spacebetween), c = (n - r[0] + (s.centeredslides ? t.mintranslate() : 0) - o) / (l .swiperslidesize + s.spacebetween), p = -(n - o), u = p + t.slidessizesgrid[e]; (p >= 0 && p < t.size - 1 || u > 1 && u <= t.size || p <= 0 && u >= t.size) && (t .visibleslides.push(l), t.visibleslidesindexes.push(e), a.eq(e).addclass(s .slidevisibleclass)), l.progress = i ? -d : d, l.originalprogress = i ? -c : c } t.visibleslides = d(t.visibleslides) }, updateprogress: function(e) { const t = this; if (void 0 === e) { const s = t.rtltranslate ? -1 : 1; e = t && t.translate && t.translate * s || 0 } const s = t.params, a = t.maxtranslate() - t.mintranslate(); let { progress: i, isbeginning: r, isend: n } = t; const l = r, o = n; 0 === a ? (i = 0, r = !0, n = !0) : (i = (e - t.mintranslate()) / a, r = i <= 0, n = i >= 1), object.assign(t, { progress: i, isbeginning: r, isend: n }), (s.watchslidesprogress || s.centeredslides && s.autoheight) && t .updateslidesprogress(e), r && !l && t.emit("reachbeginning toedge"), n && !o && t.emit( "reachend toedge"), (l && !r || o && !n) && t.emit("fromedge"), t.emit("progress", i) }, updateslidesclasses: function() { const e = this, { slides: t, params: s, $wrapperel: a, activeindex: i, realindex: r } = e, n = e.virtual && s.virtual.enabled; let l; t.removeclass( `${s.slideactiveclass} ${s.slidenextclass} ${s.slideprevclass} ${s.slideduplicateactiveclass} ${s.slideduplicatenextclass} ${s.slideduplicateprevclass}` ), l = n ? e.$wrapperel.find(`.${s.slideclass}[data-swiper-slide-index="${i}"]`) : t .eq(i), l.addclass(s.slideactiveclass), s.loop && (l.hasclass(s.slideduplicateclass) ? a .children( `.${s.slideclass}:not(.${s.slideduplicateclass})[data-swiper-slide-index="${r}"]` ).addclass(s.slideduplicateactiveclass) : a.children( `.${s.slideclass}.${s.slideduplicateclass}[data-swiper-slide-index="${r}"]`) .addclass(s.slideduplicateactiveclass)); let o = l.nextall(`.${s.slideclass}`).eq(0).addclass(s.slidenextclass); s.loop && 0 === o.length && (o = t.eq(0), o.addclass(s.slidenextclass)); let d = l.prevall(`.${s.slideclass}`).eq(0).addclass(s.slideprevclass); s.loop && 0 === d.length && (d = t.eq(-1), d.addclass(s.slideprevclass)), s.loop && (o .hasclass(s.slideduplicateclass) ? a.children( `.${s.slideclass}:not(.${s.slideduplicateclass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]` ).addclass(s.slideduplicatenextclass) : a.children( `.${s.slideclass}.${s.slideduplicateclass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]` ).addclass(s.slideduplicatenextclass), d.hasclass(s.slideduplicateclass) ? a .children( `.${s.slideclass}:not(.${s.slideduplicateclass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]` ).addclass(s.slideduplicateprevclass) : a.children( `.${s.slideclass}.${s.slideduplicateclass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]` ).addclass(s.slideduplicateprevclass)), e.emitslidesclasses() }, updateactiveindex: function(e) { const t = this, s = t.rtltranslate ? t.translate : -t.translate, { slidesgrid: a, snapgrid: i, params: r, activeindex: n, realindex: l, snapindex: o } = t; let d, c = e; if (void 0 === c) { for (let e = 0; e < a.length; e += 1) void 0 !== a[e + 1] ? s >= a[e] && s < a[e + 1] - (a[e + 1] - a[e]) / 2 ? c = e : s >= a[e] && s < a[e + 1] && (c = e + 1) : s >= a[ e] && (c = e); r.normalizeslideindex && (c < 0 || void 0 === c) && (c = 0) } if (i.indexof(s) >= 0) d = i.indexof(s); else { const e = math.min(r.slidespergroupskip, c); d = e + math.floor((c - e) / r.slidespergroup) } if (d >= i.length && (d = i.length - 1), c === n) return void(d !== o && (t.snapindex = d, t .emit("snapindexchange"))); const p = parseint(t.slides.eq(c).attr("data-swiper-slide-index") || c, 10); object.assign(t, { snapindex: d, realindex: p, previousindex: n, activeindex: c }), t.emit("activeindexchange"), t.emit("snapindexchange"), l !== p && t.emit( "realindexchange"), (t.initialized || t.params.runcallbacksoninit) && t.emit( "slidechange") }, updateclickedslide: function(e) { const t = this, s = t.params, a = d(e).closest(`.${s.slideclass}`)[0]; let i, r = !1; if (a) for (let e = 0; e < t.slides.length; e += 1) if (t.slides[e] === a) { r = !0, i = e; break } if (!a || !r) return t.clickedslide = void 0, void(t.clickedindex = void 0); t.clickedslide = a, t.virtual && t.params.virtual.enabled ? t.clickedindex = parseint(d(a) .attr("data-swiper-slide-index"), 10) : t.clickedindex = i, s.slidetoclickedslide && void 0 !== t.clickedindex && t.clickedindex !== t.activeindex && t.slidetoclickedslide() } }; var m = { gettranslate: function(e) { void 0 === e && (e = this.ishorizontal() ? "x" : "y"); const { params: t, rtltranslate: s, translate: a, $wrapperel: i } = this; if (t.virtualtranslate) return s ? -a : a; if (t.cssmode) return a; let r = h(i[0], e); return s && (r = -r), r || 0 }, settranslate: function(e, t) { const s = this, { rtltranslate: a, params: i, $wrapperel: r, wrapperel: n, progress: l } = s; let o, d = 0, c = 0; s.ishorizontal() ? d = a ? -e : e : c = e, i.roundlengths && (d = math.floor(d), c = math .floor(c)), i.cssmode ? n[s.ishorizontal() ? "scrollleft" : "scrolltop"] = s .ishorizontal() ? -d : -c : i.virtualtranslate || r.transform( `translate3d(${d}px, ${c}px, 0px)`), s.previoustranslate = s.translate, s .translate = s.ishorizontal() ? d : c; const p = s.maxtranslate() - s.mintranslate(); o = 0 === p ? 0 : (e - s.mintranslate()) / p, o !== l && s.updateprogress(e), s.emit( "settranslate", s.translate, t) }, mintranslate: function() { return -this.snapgrid[0] }, maxtranslate: function() { return -this.snapgrid[this.snapgrid.length - 1] }, translateto: function(e, t, s, a, i) { void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === s && (s = !0), void 0 === a && (a = !0); const r = this, { params: n, wrapperel: l } = r; if (r.animating && n.preventinteractionontransition) return !1; const o = r.mintranslate(), d = r.maxtranslate(); let c; if (c = a && e > o ? o : a && e < d ? d : e, r.updateprogress(c), n.cssmode) { const e = r.ishorizontal(); if (0 === t) l[e ? "scrollleft" : "scrolltop"] = -c; else { if (!r.support.smoothscroll) return w({ swiper: r, targetposition: -c, side: e ? "left" : "top" }), !0; l.scrollto({ [e ? "left" : "top"]: -c, behavior: "smooth" }) } return !0 } return 0 === t ? (r.settransition(0), r.settranslate(c), s && (r.emit( "beforetransitionstart", t, i), r.emit("transitionend"))) : (r.settransition(t), r .settranslate(c), s && (r.emit("beforetransitionstart", t, i), r.emit( "transitionstart")), r.animating || (r.animating = !0, r .ontranslatetowrappertransitionend || (r.ontranslatetowrappertransitionend = function(e) { r && !r.destroyed && e.target === this && (r.$wrapperel[0] .removeeventlistener("transitionend", r .ontranslatetowrappertransitionend), r.$wrapperel[0] .removeeventlistener("webkittransitionend", r .ontranslatetowrappertransitionend), r .ontranslatetowrappertransitionend = null, delete r .ontranslatetowrappertransitionend, s && r.emit("transitionend") ) }), r.$wrapperel[0].addeventlistener("transitionend", r .ontranslatetowrappertransitionend), r.$wrapperel[0].addeventlistener( "webkittransitionend", r.ontranslatetowrappertransitionend))), !0 } }; function p(e) { let { swiper: t, runcallbacks: s, direction: a, step: i } = e; const { activeindex: r, previousindex: n } = t; let l = a; if (l || (l = r > n ? "next" : r < n ? "prev" : "reset"), t.emit(`transition${i}`), s && r !== n) { if ("reset" === l) return void t.emit(`slideresettransition${i}`); t.emit(`slidechangetransition${i}`), "next" === l ? t.emit(`slidenexttransition${i}`) : t.emit( `slideprevtransition${i}`) } } var k = { slideto: function(e, t, s, a, i) { if (void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === s && (s = ! 0), "number" != typeof e && "string" != typeof e) throw new error( `the 'index' argument cannot have type other than 'number' or 'string'. [${typeof e}] given.` ); if ("string" == typeof e) { const t = parseint(e, 10); if (!isfinite(t)) throw new error( `the passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.` ); e = t } const r = this; let n = e; n < 0 && (n = 0); const { params: l, snapgrid: o, slidesgrid: d, previousindex: c, activeindex: p, rtltranslate: u, wrapperel: h, enabled: m } = r; if (r.animating && l.preventinteractionontransition || !m && !a && !i) return !1; const f = math.min(r.params.slidespergroupskip, n); let g = f + math.floor((n - f) / r.params.slidespergroup); g >= o.length && (g = o.length - 1), (p || l.initialslide || 0) === (c || 0) && s && r.emit( "beforeslidechangestart"); const v = -o[g]; if (r.updateprogress(v), l.normalizeslideindex) for (let e = 0; e < d.length; e += 1) { const t = -math.floor(100 * v), s = math.floor(100 * d[e]), a = math.floor(100 * d[e + 1]); void 0 !== d[e + 1] ? t >= s && t < a - (a - s) / 2 ? n = e : t >= s && t < a && ( n = e + 1) : t >= s && (n = e) } if (r.initialized && n !== p) { if (!r.allowslidenext && v < r.translate && v < r.mintranslate()) return !1; if (!r.allowslideprev && v > r.translate && v > r.maxtranslate() && (p || 0) !== n) return !1 } let b; if (b = n > p ? "next" : n < p ? "prev" : "reset", u && -v === r.translate || !u && v === r .translate) return r.updateactiveindex(n), l.autoheight && r.updateautoheight(), r .updateslidesclasses(), "slide" !== l.effect && r.settranslate(v), "reset" !== b && (r.transitionstart(s, b), r.transitionend(s, b)), !1; if (l.cssmode) { const e = r.ishorizontal(), s = u ? v : -v; if (0 === t) { const t = r.virtual && r.params.virtual.enabled; t && (r.wrapperel.style.scrollsnaptype = "none", r._immediatevirtual = !0), h[e ? "scrollleft" : "scrolltop"] = s, t && requestanimationframe((() => { r.wrapperel.style.scrollsnaptype = "", r._swiperimmediatevirtual = ! 1 })) } else { if (!r.support.smoothscroll) return w({ swiper: r, targetposition: s, side: e ? "left" : "top" }), !0; h.scrollto({ [e ? "left" : "top"]: s, behavior: "smooth" }) } return !0 } return r.settransition(t), r.settranslate(v), r.updateactiveindex(n), r .updateslidesclasses(), r.emit("beforetransitionstart", t, a), r.transitionstart(s, b), 0 === t ? r.transitionend(s, b) : r.animating || (r.animating = !0, r .onslidetowrappertransitionend || (r.onslidetowrappertransitionend = function(e) { r && !r.destroyed && e.target === this && (r.$wrapperel[0] .removeeventlistener("transitionend", r .onslidetowrappertransitionend), r.$wrapperel[0] .removeeventlistener("webkittransitionend", r .onslidetowrappertransitionend), r .onslidetowrappertransitionend = null, delete r .onslidetowrappertransitionend, r.transitionend(s, b)) }), r.$wrapperel[0].addeventlistener("transitionend", r .onslidetowrappertransitionend), r.$wrapperel[0].addeventlistener( "webkittransitionend", r.onslidetowrappertransitionend)), !0 }, slidetoloop: function(e, t, s, a) { if (void 0 === e && (e = 0), void 0 === t && (t = this.params.speed), void 0 === s && (s = ! 0), "string" == typeof e) { const t = parseint(e, 10); if (!isfinite(t)) throw new error( `the passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.` ); e = t } const i = this; let r = e; return i.params.loop && (r += i.loopedslides), i.slideto(r, t, s, a) }, slidenext: function(e, t, s) { void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); const a = this, { animating: i, enabled: r, params: n } = a; if (!r) return a; let l = n.slidespergroup; "auto" === n.slidesperview && 1 === n.slidespergroup && n.slidespergroupauto && (l = math .max(a.slidesperviewdynamic("current", !0), 1)); const o = a.activeindex < n.slidespergroupskip ? 1 : l; if (n.loop) { if (i && n.looppreventsslide) return !1; a.loopfix(), a._clientleft = a.$wrapperel[0].clientleft } return n.rewind && a.isend ? a.slideto(0, e, t, s) : a.slideto(a.activeindex + o, e, t, s) }, slideprev: function(e, t, s) { void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); const a = this, { params: i, animating: r, snapgrid: n, slidesgrid: l, rtltranslate: o, enabled: d } = a; if (!d) return a; if (i.loop) { if (r && i.looppreventsslide) return !1; a.loopfix(), a._clientleft = a.$wrapperel[0].clientleft } function c(e) { return e < 0 ? -math.floor(math.abs(e)) : math.floor(e) } const p = c(o ? a.translate : -a.translate), u = n.map((e => c(e))); let h = n[u.indexof(p) - 1]; if (void 0 === h && i.cssmode) { let e; n.foreach(((t, s) => { p >= t && (e = s) })), void 0 !== e && (h = n[e > 0 ? e - 1 : e]) } let m = 0; if (void 0 !== h && (m = l.indexof(h), m < 0 && (m = a.activeindex - 1), "auto" === i .slidesperview && 1 === i.slidespergroup && i.slidespergroupauto && (m = m - a .slidesperviewdynamic("previous", !0) + 1, m = math.max(m, 0))), i.rewind && a .isbeginning) { const i = a.params.virtual && a.params.virtual.enabled && a.virtual ? a.virtual.slides .length - 1 : a.slides.length - 1; return a.slideto(i, e, t, s) } return a.slideto(m, e, t, s) }, slidereset: function(e, t, s) { return void 0 === e && (e = this.params.speed), void 0 === t && (t = !0), this.slideto(this .activeindex, e, t, s) }, slidetoclosest: function(e, t, s, a) { void 0 === e && (e = this.params.speed), void 0 === t && (t = !0), void 0 === a && (a = .5); const i = this; let r = i.activeindex; const n = math.min(i.params.slidespergroupskip, r), l = n + math.floor((r - n) / i.params.slidespergroup), o = i.rtltranslate ? i.translate : -i.translate; if (o >= i.snapgrid[l]) { const e = i.snapgrid[l]; o - e > (i.snapgrid[l + 1] - e) * a && (r += i.params.slidespergroup) } else { const e = i.snapgrid[l - 1]; o - e <= (i.snapgrid[l] - e) * a && (r -= i.params.slidespergroup) } return r = math.max(r, 0), r = math.min(r, i.slidesgrid.length - 1), i.slideto(r, e, t, s) }, slidetoclickedslide: function() { const e = this, { params: t, $wrapperel: s } = e, a = "auto" === t.slidesperview ? e.slidesperviewdynamic() : t.slidesperview; let i, r = e.clickedindex; if (t.loop) { if (e.animating) return; i = parseint(d(e.clickedslide).attr("data-swiper-slide-index"), 10), t.centeredslides ? r < e.loopedslides - a / 2 || r > e.slides.length - e.loopedslides + a / 2 ? (e .loopfix(), r = s.children( `.${t.slideclass}[data-swiper-slide-index="${i}"]:not(.${t.slideduplicateclass})` ).eq(0).index(), p((() => { e.slideto(r) }))) : e.slideto(r) : r > e.slides.length - a ? (e.loopfix(), r = s.children( `.${t.slideclass}[data-swiper-slide-index="${i}"]:not(.${t.slideduplicateclass})` ).eq(0).index(), p((() => { e.slideto(r) }))) : e.slideto(r) } else e.slideto(r) } }; var z = { loopcreate: function() { const e = this, t = a(), { params: s, $wrapperel: i } = e, r = i.children().length > 0 ? d(i.children()[0].parentnode) : i; r.children(`.${s.slideclass}.${s.slideduplicateclass}`).remove(); let n = r.children(`.${s.slideclass}`); if (s.loopfillgroupwithblank) { const e = s.slidespergroup - n.length % s.slidespergroup; if (e !== s.slidespergroup) { for (let a = 0; a < e; a += 1) { const e = d(t.createelement("div")).addclass( `${s.slideclass} ${s.slideblankclass}`); r.append(e) } n = r.children(`.${s.slideclass}`) } } "auto" !== s.slidesperview || s.loopedslides || (s.loopedslides = n.length), e .loopedslides = math.ceil(parsefloat(s.loopedslides || s.slidesperview, 10)), e .loopedslides += s.loopadditionalslides, e.loopedslides > n.length && (e.loopedslides = n.length); const l = [], o = []; n.each(((t, s) => { const a = d(t); s < e.loopedslides && o.push(t), s < n.length && s >= n.length - e .loopedslides && l.push(t), a.attr("data-swiper-slide-index", s) })); for (let e = 0; e < o.length; e += 1) r.append(d(o[e].clonenode(!0)).addclass(s .slideduplicateclass)); for (let e = l.length - 1; e >= 0; e -= 1) r.prepend(d(l[e].clonenode(!0)).addclass(s .slideduplicateclass)) }, loopfix: function() { const e = this; e.emit("beforeloopfix"); const { activeindex: t, slides: s, loopedslides: a, allowslideprev: i, allowslidenext: r, snapgrid: n, rtltranslate: l } = e; let o; e.allowslideprev = !0, e.allowslidenext = !0; const d = -n[t] - e.gettranslate(); if (t < a) { o = s.length - 3 * a + t, o += a; e.slideto(o, 0, !1, !0) && 0 !== d && e.settranslate((l ? -e.translate : e.translate) - d) } else if (t >= s.length - a) { o = -s.length + t + a, o += a; e.slideto(o, 0, !1, !0) && 0 !== d && e.settranslate((l ? -e.translate : e.translate) - d) } e.allowslideprev = i, e.allowslidenext = r, e.emit("loopfix") }, loopdestroy: function() { const { $wrapperel: e, params: t, slides: s } = this; e.children( `.${t.slideclass}.${t.slideduplicateclass},.${t.slideclass}.${t.slideblankclass}`) .remove(), s.removeattr("data-swiper-slide-index") } }; function l(e) { const t = this, s = a(), i = r(), n = t.toucheventsdata, { params: l, touches: o, enabled: c } = t; if (!c) return; if (t.animating && l.preventinteractionontransition) return; !t.animating && l.cssmode && l.loop && t.loopfix(); let p = e; p.originalevent && (p = p.originalevent); let h = d(p.target); if ("wrapper" === l.toucheventstarget && !h.closest(t.wrapperel).length) return; if (n.istouchevent = "touchstart" === p.type, !n.istouchevent && "which" in p && 3 === p.which) return; if (!n.istouchevent && "button" in p && p.button > 0) return; if (n.istouched && n.ismoved) return; !!l.noswipingclass && "" !== l.noswipingclass && p.target && p.target.shadowroot && e.path && e.path[ 0] && (h = d(e.path[0])); const m = l.noswipingselector ? l.noswipingselector : `.${l.noswipingclass}`, f = !(!p.target || !p.target.shadowroot); if (l.noswiping && (f ? function(e, t) { return void 0 === t && (t = this), function t(s) { if (!s || s === a() || s === r()) return null; s.assignedslot && (s = s.assignedslot); const i = s.closest(e); return i || s.getrootnode ? i || t(s.getrootnode().host) : null }(t) }(m, h[0]) : h.closest(m)[0])) return void(t.allowclick = !0); if (l.swipehandler && !h.closest(l.swipehandler)[0]) return; o.currentx = "touchstart" === p.type ? p.targettouches[0].pagex : p.pagex, o.currenty = "touchstart" === p.type ? p.targettouches[0].pagey : p.pagey; const g = o.currentx, v = o.currenty, w = l.edgeswipedetection || l.iosedgeswipedetection, b = l.edgeswipethreshold || l.iosedgeswipethreshold; if (w && (g <= b || g >= i.innerwidth - b)) { if ("prevent" !== w) return; e.preventdefault() } if (object.assign(n, { istouched: !0, ismoved: !1, allowtouchcallbacks: !0, isscrolling: void 0, startmoving: void 0 }), o.startx = g, o.starty = v, n.touchstarttime = u(), t.allowclick = !0, t.updatesize(), t .swipedirection = void 0, l.threshold > 0 && (n.allowthresholdmove = !1), "touchstart" !== p.type) { let e = !0; h.is(n.focusableelements) && (e = !1, "select" === h[0].nodename && (n.istouched = !1)), s .activeelement && d(s.activeelement).is(n.focusableelements) && s.activeelement !== h[0] && s .activeelement.blur(); const a = e && t.allowtouchmove && l.touchstartpreventdefault; !l.touchstartforcepreventdefault && !a || h[0].iscontenteditable || p.preventdefault() } t.params.freemode && t.params.freemode.enabled && t.freemode && t.animating && !l.cssmode && t.freemode .ontouchstart(), t.emit("touchstart", p) } function o(e) { const t = a(), s = this, i = s.toucheventsdata, { params: r, touches: n, rtltranslate: l, enabled: o } = s; if (!o) return; let c = e; if (c.originalevent && (c = c.originalevent), !i.istouched) return void(i.startmoving && i .isscrolling && s.emit("touchmoveopposite", c)); if (i.istouchevent && "touchmove" !== c.type) return; const p = "touchmove" === c.type && c.targettouches && (c.targettouches[0] || c.changedtouches[0]), h = "touchmove" === c.type ? p.pagex : c.pagex, m = "touchmove" === c.type ? p.pagey : c.pagey; if (c.preventedbynestedswiper) return n.startx = h, void(n.starty = m); if (!s.allowtouchmove) return d(c.target).is(i.focusableelements) || (s.allowclick = !1), void(i .istouched && (object.assign(n, { startx: h, starty: m, currentx: h, currenty: m }), i.touchstarttime = u())); if (i.istouchevent && r.touchreleaseonedges && !r.loop) if (s.isvertical()) { if (m < n.starty && s.translate <= s.maxtranslate() || m > n.starty && s.translate >= s .mintranslate()) return i.istouched = !1, void(i.ismoved = !1) } else if (h < n.startx && s.translate <= s.maxtranslate() || h > n.startx && s.translate >= s .mintranslate()) return; if (i.istouchevent && t.activeelement && c.target === t.activeelement && d(c.target).is(i .focusableelements)) return i.ismoved = !0, void(s.allowclick = !1); if (i.allowtouchcallbacks && s.emit("touchmove", c), c.targettouches && c.targettouches.length > 1) return; n.currentx = h, n.currenty = m; const f = n.currentx - n.startx, g = n.currenty - n.starty; if (s.params.threshold && math.sqrt(f ** 2 + g ** 2) < s.params.threshold) return; if (void 0 === i.isscrolling) { let e; s.ishorizontal() && n.currenty === n.starty || s.isvertical() && n.currentx === n.startx ? i .isscrolling = !1 : f * f + g * g >= 25 && (e = 180 * math.atan2(math.abs(g), math.abs(f)) / math.pi, i.isscrolling = s.ishorizontal() ? e > r.touchangle : 90 - e > r.touchangle) } if (i.isscrolling && s.emit("touchmoveopposite", c), void 0 === i.startmoving && (n.currentx === n .startx && n.currenty === n.starty || (i.startmoving = !0)), i.isscrolling) return void(i .istouched = !1); if (!i.startmoving) return; s.allowclick = !1, !r.cssmode && c.cancelable && c.preventdefault(), r.touchmovestoppropagation && !r .nested && c.stoppropagation(), i.ismoved || (r.loop && !r.cssmode && s.loopfix(), i .starttranslate = s.gettranslate(), s.settransition(0), s.animating && s.$wrapperel.trigger( "webkittransitionend transitionend"), i.allowmomentumbounce = !1, !r.grabcursor || !0 !== s .allowslidenext && !0 !== s.allowslideprev || s.setgrabcursor(!0), s.emit("sliderfirstmove", c) ), s.emit("slidermove", c), i.ismoved = !0; let v = s.ishorizontal() ? f : g; n.diff = v, v *= r.touchratio, l && (v = -v), s.swipedirection = v > 0 ? "prev" : "next", i .currenttranslate = v + i.starttranslate; let w = !0, b = r.resistanceratio; if (r.touchreleaseonedges && (b = 0), v > 0 && i.currenttranslate > s.mintranslate() ? (w = !1, r .resistance && (i.currenttranslate = s.mintranslate() - 1 + (-s.mintranslate() + i .starttranslate + v) ** b)) : v < 0 && i.currenttranslate < s.maxtranslate() && (w = !1, r .resistance && (i.currenttranslate = s.maxtranslate() + 1 - (s.maxtranslate() - i .starttranslate - v) ** b)), w && (c.preventedbynestedswiper = !0), !s.allowslidenext && "next" === s.swipedirection && i.currenttranslate < i.starttranslate && (i.currenttranslate = i .starttranslate), !s.allowslideprev && "prev" === s.swipedirection && i.currenttranslate > i .starttranslate && (i.currenttranslate = i.starttranslate), s.allowslideprev || s.allowslidenext || (i.currenttranslate = i.starttranslate), r.threshold > 0) { if (!(math.abs(v) > r.threshold || i.allowthresholdmove)) return void(i.currenttranslate = i .starttranslate); if (!i.allowthresholdmove) return i.allowthresholdmove = !0, n.startx = n.currentx, n.starty = n .currenty, i.currenttranslate = i.starttranslate, void(n.diff = s.ishorizontal() ? n .currentx - n.startx : n.currenty - n.starty) } r.followfinger && !r.cssmode && ((r.freemode && r.freemode.enabled && s.freemode || r .watchslidesprogress) && (s.updateactiveindex(), s.updateslidesclasses()), s.params .freemode && r.freemode.enabled && s.freemode && s.freemode.ontouchmove(), s.updateprogress(i .currenttranslate), s.settranslate(i.currenttranslate)) } function i(e) { const t = this, s = t.toucheventsdata, { params: a, touches: i, rtltranslate: r, slidesgrid: n, enabled: l } = t; if (!l) return; let o = e; if (o.originalevent && (o = o.originalevent), s.allowtouchcallbacks && t.emit("touchend", o), s .allowtouchcallbacks = !1, !s.istouched) return s.ismoved && a.grabcursor && t.setgrabcursor(!1), s .ismoved = !1, void(s.startmoving = !1); a.grabcursor && s.ismoved && s.istouched && (!0 === t.allowslidenext || !0 === t.allowslideprev) && t .setgrabcursor(!1); const d = u(), c = d - s.touchstarttime; if (t.allowclick) { const e = o.path || o.composedpath && o.composedpath(); t.updateclickedslide(e && e[0] || o.target), t.emit("tap click", o), c < 300 && d - s .lastclicktime < 300 && t.emit("doubletap doubleclick", o) } if (s.lastclicktime = u(), p((() => { t.destroyed || (t.allowclick = !0) })), !s.istouched || !s.ismoved || !t.swipedirection || 0 === i.diff || s.currenttranslate === s .starttranslate) return s.istouched = !1, s.ismoved = !1, void(s.startmoving = !1); let h; if (s.istouched = !1, s.ismoved = !1, s.startmoving = !1, h = a.followfinger ? r ? t.translate : -t .translate : -s.currenttranslate, a.cssmode) return; if (t.params.freemode && a.freemode.enabled) return void t.freemode.ontouchend({ currentpos: h }); let m = 0, f = t.slidessizesgrid[0]; for (let e = 0; e < n.length; e += e < a.slidespergroupskip ? 1 : a.slidespergroup) { const t = e < a.slidespergroupskip - 1 ? 1 : a.slidespergroup; void 0 !== n[e + t] ? h >= n[e] && h < n[e + t] && (m = e, f = n[e + t] - n[e]) : h >= n[e] && (m = e, f = n[n.length - 1] - n[n.length - 2]) } let g = null, v = null; a.rewind && (t.isbeginning ? v = t.params.virtual && t.params.virtual.enabled && t.virtual ? t.virtual .slides.length - 1 : t.slides.length - 1 : t.isend && (g = 0)); const w = (h - n[m]) / f, b = m < a.slidespergroupskip - 1 ? 1 : a.slidespergroup; if (c > a.longswipesms) { if (!a.longswipes) return void t.slideto(t.activeindex); "next" === t.swipedirection && (w >= a.longswipesratio ? t.slideto(a.rewind && t.isend ? g : m + b) : t.slideto(m)), "prev" === t.swipedirection && (w > 1 - a.longswipesratio ? t.slideto( m + b) : null !== v && w < 0 && math.abs(w) > a.longswipesratio ? t.slideto(v) : t .slideto(m)) } else { if (!a.shortswipes) return void t.slideto(t.activeindex); t.navigation && (o.target === t.navigation.nextel || o.target === t.navigation.prevel) ? o .target === t.navigation.nextel ? t.slideto(m + b) : t.slideto(m) : ("next" === t .swipedirection && t.slideto(null !== g ? g : m + b), "prev" === t.swipedirection && t .slideto(null !== v ? v : m)) } } function a() { const e = this, { params: t, el: s } = e; if (s && 0 === s.offsetwidth) return; t.breakpoints && e.setbreakpoint(); const { allowslidenext: a, allowslideprev: i, snapgrid: r } = e; e.allowslidenext = !0, e.allowslideprev = !0, e.updatesize(), e.updateslides(), e.updateslidesclasses(), ("auto" === t.slidesperview || t.slidesperview > 1) && e.isend && !e.isbeginning && !e.params .centeredslides ? e.slideto(e.slides.length - 1, 0, !1, !0) : e.slideto(e.activeindex, 0, !1, !0), e .autoplay && e.autoplay.running && e.autoplay.paused && e.autoplay.run(), e.allowslideprev = i, e .allowslidenext = a, e.params.watchoverflow && r !== e.snapgrid && e.checkoverflow() } function d(e) { const t = this; t.enabled && (t.allowclick || (t.params.preventclicks && e.preventdefault(), t.params .preventclickspropagation && t.animating && (e.stoppropagation(), e .stopimmediatepropagation()))) } function g() { const e = this, { wrapperel: t, rtltranslate: s, enabled: a } = e; if (!a) return; let i; e.previoustranslate = e.translate, e.ishorizontal() ? e.translate = -t.scrollleft : e.translate = -t .scrolltop, 0 === e.translate && (e.translate = 0), e.updateactiveindex(), e.updateslidesclasses(); const r = e.maxtranslate() - e.mintranslate(); i = 0 === r ? 0 : (e.translate - e.mintranslate()) / r, i !== e.progress && e.updateprogress(s ? -e .translate : e.translate), e.emit("settranslate", e.translate, !1) } let n = !1; function b() {} const h = (e, t) => { const s = a(), { params: i, touchevents: r, el: n, wrapperel: l, device: o, support: d } = e, c = !!i.nested, p = "on" === t ? "addeventlistener" : "removeeventlistener", u = t; if (d.touch) { const t = !("touchstart" !== r.start || !d.passivelistener || !i.passivelisteners) && { passive: !0, capture: !1 }; n[p](r.start, e.ontouchstart, t), n[p](r.move, e.ontouchmove, d.passivelistener ? { passive: !1, capture: c } : c), n[p](r.end, e.ontouchend, t), r.cancel && n[p](r.cancel, e.ontouchend, t) } else n[p](r.start, e.ontouchstart, !1), s[p](r.move, e.ontouchmove, c), s[p](r.end, e.ontouchend, !1); (i.preventclicks || i.preventclickspropagation) && n[p]("click", e.onclick, !0), i.cssmode && l[p]( "scroll", e.onscroll), i.updateonwindowresize ? e[u](o.ios || o.android ? "resize orientationchange observerupdate" : "resize observerupdate", a, !0) : e[u]( "observerupdate", a, !0) }; var x = { attachevents: function() { const e = this, t = a(), { params: s, support: i } = e; e.ontouchstart = l.bind(e), e.ontouchmove = o.bind(e), e.ontouchend = i.bind(e), s .cssmode && (e.onscroll = g.bind(e)), e.onclick = d.bind(e), i.touch && !n && (t .addeventlistener("touchstart", b), n = !0), h(e, "on") }, detachevents: function() { h(this, "off") } }; const y = (e, t) => e.grid && t.grid && t.grid.rows > 1; var r = { addclasses: function() { const e = this, { classnames: t, params: s, rtl: a, $el: i, device: r, support: n } = e, l = function(e, t) { const s = []; return e.foreach((e => { "object" == typeof e ? object.keys(e).foreach((a => { e[a] && s.push(t + a) })) : "string" == typeof e && s.push(t + e) })), s }(["initialized", s.direction, { "pointer-events": !n.touch }, { "free-mode": e.params.freemode && s.freemode.enabled }, { autoheight: s.autoheight }, { rtl: a }, { grid: s.grid && s.grid.rows > 1 }, { "grid-column": s.grid && s.grid.rows > 1 && "column" === s.grid.fill }, { android: r.android }, { ios: r.ios }, { "css-mode": s.cssmode }, { centered: s.cssmode && s.centeredslides }, { "watch-progress": s.watchslidesprogress }], s.containermodifierclass); t.push(...l), i.addclass([...t].join(" ")), e.emitcontainerclasses() }, removeclasses: function() { const { $el: e, classnames: t } = this; e.removeclass(t.join(" ")), this.emitcontainerclasses() } }; var w = { init: !0, direction: "horizontal", toucheventstarget: "wrapper", initialslide: 0, speed: 300, cssmode: !1, updateonwindowresize: !0, resizeobserver: !0, nested: !1, createelements: !1, enabled: !0, focusableelements: "input, select, option, textarea, button, video, label", width: null, height: null, preventinteractionontransition: !1, useragent: null, url: null, edgeswipedetection: !1, edgeswipethreshold: 20, autoheight: !1, setwrappersize: !1, virtualtranslate: !1, effect: "slide", breakpoints: void 0, breakpointsbase: "window", spacebetween: 0, slidesperview: 1, slidespergroup: 1, slidespergroupskip: 0, slidespergroupauto: !1, centeredslides: !1, centeredslidesbounds: !1, slidesoffsetbefore: 0, slidesoffsetafter: 0, normalizeslideindex: !0, centerinsufficientslides: !1, watchoverflow: !0, roundlengths: !1, touchratio: 1, touchangle: 45, simulatetouch: !0, shortswipes: !0, longswipes: !0, longswipesratio: .5, longswipesms: 300, followfinger: !0, allowtouchmove: !0, threshold: 0, touchmovestoppropagation: !1, touchstartpreventdefault: !0, touchstartforcepreventdefault: !1, touchreleaseonedges: !1, uniquenavelements: !0, resistance: !0, resistanceratio: .85, watchslidesprogress: !1, grabcursor: !1, preventclicks: !0, preventclickspropagation: !0, slidetoclickedslide: !1, preloadimages: !0, updateonimagesready: !0, loop: !1, loopadditionalslides: 0, loopedslides: null, loopfillgroupwithblank: !1, looppreventsslide: !0, rewind: !1, allowslideprev: !0, allowslidenext: !0, swipehandler: null, noswiping: !0, noswipingclass: "swiper-no-swiping", noswipingselector: null, passivelisteners: !0, maxbackfacehiddenslides: 10, containermodifierclass: "swiper-", slideclass: "swiper-slide", slideblankclass: "swiper-slide-invisible-blank", slideactiveclass: "swiper-slide-active", slideduplicateactiveclass: "swiper-slide-duplicate-active", slidevisibleclass: "swiper-slide-visible", slideduplicateclass: "swiper-slide-duplicate", slidenextclass: "swiper-slide-next", slideduplicatenextclass: "swiper-slide-duplicate-next", slideprevclass: "swiper-slide-prev", slideduplicateprevclass: "swiper-slide-duplicate-prev", wrapperclass: "swiper-wrapper", runcallbacksoninit: !0, _emitclasses: !1 }; function j(e, t) { return function(s) { void 0 === s && (s = {}); const a = object.keys(s)[0], i = s[a]; "object" == typeof i && null !== i ? (["navigation", "pagination", "scrollbar"].indexof(a) >= 0 && !0 === e[a] && (e[a] = { auto: !0 }), a in e && "enabled" in i ? (!0 === e[a] && (e[a] = { enabled: !0 }), "object" != typeof e[a] || "enabled" in e[a] || (e[a].enabled = !0), e[a] || (e[ a] = { enabled: !1 }), g(t, s)) : g(t, s)) : g(t, s) } } const _ = { eventsemitter: $, update: s, translate: m, transition: { settransition: function(e, t) { const s = this; s.params.cssmode || s.$wrapperel.transition(e), s.emit("settransition", e, t) }, transitionstart: function(e, t) { void 0 === e && (e = !0); const s = this, { params: a } = s; a.cssmode || (a.autoheight && s.updateautoheight(), p({ swiper: s, runcallbacks: e, direction: t, step: "start" })) }, transitionend: function(e, t) { void 0 === e && (e = !0); const s = this, { params: a } = s; s.animating = !1, a.cssmode || (s.settransition(0), p({ swiper: s, runcallbacks: e, direction: t, step: "end" })) } }, slide: k, loop: z, grabcursor: { setgrabcursor: function(e) { const t = this; if (t.support.touch || !t.params.simulatetouch || t.params.watchoverflow && t .islocked || t.params.cssmode) return; const s = "container" === t.params.toucheventstarget ? t.el : t.wrapperel; s.style.cursor = "move", s.style.cursor = e ? "grabbing" : "grab" }, unsetgrabcursor: function() { const e = this; e.support.touch || e.params.watchoverflow && e.islocked || e.params.cssmode || (e[ "container" === e.params.toucheventstarget ? "el" : "wrapperel"].style .cursor = "") } }, events: x, breakpoints: { setbreakpoint: function() { const e = this, { activeindex: t, initialized: s, loopedslides: a = 0, params: i, $el: r } = e, n = i.breakpoints; if (!n || n && 0 === object.keys(n).length) return; const l = e.getbreakpoint(n, e.params.breakpointsbase, e.el); if (!l || e.currentbreakpoint === l) return; const o = (l in n ? n[l] : void 0) || e.originalparams, d = y(e, i), c = y(e, o), p = i.enabled; d && !c ? (r.removeclass( `${i.containermodifierclass}grid ${i.containermodifierclass}grid-column`), e .emitcontainerclasses()) : !d && c && (r.addclass( `${i.containermodifierclass}grid`), (o.grid.fill && "column" === o.grid .fill || !o.grid.fill && "column" === i.grid.fill) && r.addclass( `${i.containermodifierclass}grid-column`), e.emitcontainerclasses()), [ "navigation", "pagination", "scrollbar" ].foreach((t => { const s = i[t] && i[t].enabled, a = o[t] && o[t].enabled; s && !a && e[t].disable(), !s && a && e[t].enable() })); const u = o.direction && o.direction !== i.direction, h = i.loop && (o.slidesperview !== i.slidesperview || u); u && s && e.changedirection(), g(e.params, o); const m = e.params.enabled; object.assign(e, { allowtouchmove: e.params.allowtouchmove, allowslidenext: e.params.allowslidenext, allowslideprev: e.params.allowslideprev }), p && !m ? e.disable() : !p && m && e.enable(), e.currentbreakpoint = l, e.emit( "_beforebreakpoint", o), h && s && (e.loopdestroy(), e.loopcreate(), e .updateslides(), e.slideto(t - a + e.loopedslides, 0, !1)), e.emit("breakpoint", o) }, getbreakpoint: function(e, t, s) { if (void 0 === t && (t = "window"), !e || "container" === t && !s) return; let a = !1; const i = r(), n = "window" === t ? i.innerheight : s.clientheight, l = object.keys(e).map((e => { if ("string" == typeof e && 0 === e.indexof("@")) { const t = parsefloat(e.substr(1)); return { value: n * t, point: e } } return { value: e, point: e } })); l.sort(((e, t) => parseint(e.value, 10) - parseint(t.value, 10))); for (let e = 0; e < l.length; e += 1) { const { point: r, value: n } = l[e]; "window" === t ? i.matchmedia(`(min-width: ${n}px)`).matches && (a = r) : n <= s .clientwidth && (a = r) } return a || "max" } }, checkoverflow: { checkoverflow: function() { const e = this, { islocked: t, params: s } = e, { slidesoffsetbefore: a } = s; if (a) { const t = e.slides.length - 1, s = e.slidesgrid[t] + e.slidessizesgrid[t] + 2 * a; e.islocked = e.size > s } else e.islocked = 1 === e.snapgrid.length; !0 === s.allowslidenext && (e.allowslidenext = !e.islocked), !0 === s.allowslideprev && (e.allowslideprev = !e.islocked), t && t !== e.islocked && (e.isend = !1), t !== e .islocked && e.emit(e.islocked ? "lock" : "unlock") } }, classes: r, images: { loadimage: function(e, t, s, a, i, n) { const l = r(); let o; function c() { n && n() } d(e).parent("picture")[0] || e.complete && i ? c() : t ? (o = new l.image, o.onload = c, o.onerror = c, a && (o.sizes = a), s && (o.srcset = s), t && (o.src = t)) : c() }, preloadimages: function() { const e = this; function t() { null != e && e && !e.destroyed && (void 0 !== e.imagesloaded && (e.imagesloaded += 1), e.imagesloaded === e.imagestoload.length && (e.params .updateonimagesready && e.update(), e.emit("imagesready"))) } e.imagestoload = e.$el.find("img"); for (let s = 0; s < e.imagestoload.length; s += 1) { const a = e.imagestoload[s]; e.loadimage(a, a.currentsrc || a.getattribute("src"), a.srcset || a.getattribute( "srcset"), a.sizes || a.getattribute("sizes"), !0, t) } } } }, q = {}; class v { constructor() { let e, t; for (var s = arguments.length, a = new array(s), i = 0; i < s; i++) a[i] = arguments[i]; if (1 === a.length && a[0].constructor && "object" === object.prototype.tostring.call(a[0]) .slice(8, -1) ? t = a[0] : [e, t] = a, t || (t = {}), t = g({}, t), e && !t.el && (t.el = e), t.el && d(t.el).length > 1) { const e = []; return d(t.el).each((s => { const a = g({}, t, { el: s }); e.push(new v(a)) })), e } const r = this; r.__swiper__ = !0, r.support = e(), r.device = c({ useragent: t.useragent }), r.browser = t(), r.eventslisteners = {}, r.eventsanylisteners = [], r.modules = [...r .__modules__ ], t.modules && array.isarray(t.modules) && r.modules.push(...t.modules); const n = {}; r.modules.foreach((e => { e({ swiper: r, extendparams: j(t, n), on: r.on.bind(r), once: r.once.bind(r), off: r.off.bind(r), emit: r.emit.bind(r) }) })); const l = g({}, w, n); return r.params = g({}, l, q, t), r.originalparams = g({}, r.params), r.passedparams = g({}, t), r.params && r.params.on && object.keys(r.params.on).foreach((e => { r.on(e, r.params.on[e]) })), r.params && r.params.onany && r.onany(r.params.onany), r.$ = d, object.assign(r, { enabled: r.params.enabled, el: e, classnames: [], slides: d(), slidesgrid: [], snapgrid: [], slidessizesgrid: [], ishorizontal: () => "horizontal" === r.params.direction, isvertical: () => "vertical" === r.params.direction, activeindex: 0, realindex: 0, isbeginning: !0, isend: !1, translate: 0, previoustranslate: 0, progress: 0, velocity: 0, animating: !1, allowslidenext: r.params.allowslidenext, allowslideprev: r.params.allowslideprev, touchevents: function() { const e = ["touchstart", "touchmove", "touchend", "touchcancel"], t = ["pointerdown", "pointermove", "pointerup"]; return r.toucheventstouch = { start: e[0], move: e[1], end: e[2], cancel: e[3] }, r.toucheventsdesktop = { start: t[0], move: t[1], end: t[2] }, r.support.touch || !r.params.simulatetouch ? r.toucheventstouch : r .toucheventsdesktop }(), toucheventsdata: { istouched: void 0, ismoved: void 0, allowtouchcallbacks: void 0, touchstarttime: void 0, isscrolling: void 0, currenttranslate: void 0, starttranslate: void 0, allowthresholdmove: void 0, focusableelements: r.params.focusableelements, lastclicktime: u(), clicktimeout: void 0, velocities: [], allowmomentumbounce: void 0, istouchevent: void 0, startmoving: void 0 }, allowclick: !0, allowtouchmove: r.params.allowtouchmove, touches: { startx: 0, starty: 0, currentx: 0, currenty: 0, diff: 0 }, imagestoload: [], imagesloaded: 0 }), r.emit("_swiper"), r.params.init && r.init(), r } enable() { const e = this; e.enabled || (e.enabled = !0, e.params.grabcursor && e.setgrabcursor(), e.emit("enable")) } disable() { const e = this; e.enabled && (e.enabled = !1, e.params.grabcursor && e.unsetgrabcursor(), e.emit("disable")) } setprogress(e, t) { const s = this; e = math.min(math.max(e, 0), 1); const a = s.mintranslate(), i = (s.maxtranslate() - a) * e + a; s.translateto(i, void 0 === t ? 0 : t), s.updateactiveindex(), s.updateslidesclasses() } emitcontainerclasses() { const e = this; if (!e.params._emitclasses || !e.el) return; const t = e.el.classname.split(" ").filter((t => 0 === t.indexof("swiper") || 0 === t.indexof(e .params.containermodifierclass))); e.emit("_containerclasses", t.join(" ")) } getslideclasses(e) { const t = this; return t.destroyed ? "" : e.classname.split(" ").filter((e => 0 === e.indexof("swiper-slide") || 0 === e.indexof(t.params.slideclass))).join(" ") } emitslidesclasses() { const e = this; if (!e.params._emitclasses || !e.el) return; const t = []; e.slides.each((s => { const a = e.getslideclasses(s); t.push({ slideel: s, classnames: a }), e.emit("_slideclass", s, a) })), e.emit("_slideclasses", t) } slidesperviewdynamic(e, t) { void 0 === e && (e = "current"), void 0 === t && (t = !1); const { params: s, slides: a, slidesgrid: i, slidessizesgrid: r, size: n, activeindex: l } = this; let o = 1; if (s.centeredslides) { let e, t = a[l].swiperslidesize; for (let s = l + 1; s < a.length; s += 1) a[s] && !e && (t += a[s].swiperslidesize, o += 1, t > n && (e = !0)); for (let s = l - 1; s >= 0; s -= 1) a[s] && !e && (t += a[s].swiperslidesize, o += 1, t > n && (e = !0)) } else if ("current" === e) for (let e = l + 1; e < a.length; e += 1) { (t ? i[e] + r[e] - i[l] < n : i[e] - i[l] < n) && (o += 1) } else for (let e = l - 1; e >= 0; e -= 1) { i[l] - i[e] < n && (o += 1) } return o } update() { const e = this; if (!e || e.destroyed) return; const { snapgrid: t, params: s } = e; function a() { const t = e.rtltranslate ? -1 * e.translate : e.translate, s = math.min(math.max(t, e.maxtranslate()), e.mintranslate()); e.settranslate(s), e.updateactiveindex(), e.updateslidesclasses() } let i; s.breakpoints && e.setbreakpoint(), e.updatesize(), e.updateslides(), e.updateprogress(), e .updateslidesclasses(), e.params.freemode && e.params.freemode.enabled ? (a(), e.params .autoheight && e.updateautoheight()) : (i = ("auto" === e.params.slidesperview || e .params.slidesperview > 1) && e.isend && !e.params.centeredslides ? e.slideto(e .slides.length - 1, 0, !1, !0) : e.slideto(e.activeindex, 0, !1, !0), i || a()), s .watchoverflow && t !== e.snapgrid && e.checkoverflow(), e.emit("update") } changedirection(e, t) { void 0 === t && (t = !0); const s = this, a = s.params.direction; return e || (e = "horizontal" === a ? "vertical" : "horizontal"), e === a || "horizontal" !== e && "vertical" !== e || (s.$el.removeclass(`${s.params.containermodifierclass}${a}`) .addclass(`${s.params.containermodifierclass}${e}`), s.emitcontainerclasses(), s.params .direction = e, s.slides.each((t => { "vertical" === e ? t.style.width = "" : t.style.height = "" })), s.emit("changedirection"), t && s.update()), s } changelanguagedirection(e) { const t = this; t.rtl && "rtl" === e || !t.rtl && "ltr" === e || (t.rtl = "rtl" === e, t.rtltranslate = "horizontal" === t.params.direction && t.rtl, t.rtl ? (t.$el.addclass( `${t.params.containermodifierclass}rtl`), t.el.dir = "rtl") : (t.$el.removeclass( `${t.params.containermodifierclass}rtl`), t.el.dir = "ltr"), t.update()) } mount(e) { const t = this; if (t.mounted) return !0; const s = d(e || t.params.el); if (!(e = s[0])) return !1; e.swiper = t; const i = () => `.${(t.params.wrapperclass||"").trim().split(" ").join(".")}`; let r = (() => { if (e && e.shadowroot && e.shadowroot.queryselector) { const t = d(e.shadowroot.queryselector(i())); return t.children = e => s.children(e), t } return s.children ? s.children(i()) : d(s).children(i()) })(); if (0 === r.length && t.params.createelements) { const e = a().createelement("div"); r = d(e), e.classname = t.params.wrapperclass, s.append(e), s.children( `.${t.params.slideclass}`).each((e => { r.append(e) })) } return object.assign(t, { $el: s, el: e, $wrapperel: r, wrapperel: r[0], mounted: !0, rtl: "rtl" === e.dir.tolowercase() || "rtl" === s.css("direction"), rtltranslate: "horizontal" === t.params.direction && ("rtl" === e.dir .tolowercase() || "rtl" === s.css("direction")), wrongrtl: "-webkit-box" === r.css("display") }), !0 } init(e) { const t = this; if (t.initialized) return t; return !1 === t.mount(e) || (t.emit("beforeinit"), t.params.breakpoints && t.setbreakpoint(), t .addclasses(), t.params.loop && t.loopcreate(), t.updatesize(), t.updateslides(), t .params.watchoverflow && t.checkoverflow(), t.params.grabcursor && t.enabled && t .setgrabcursor(), t.params.preloadimages && t.preloadimages(), t.params.loop ? t .slideto(t.params.initialslide + t.loopedslides, 0, t.params.runcallbacksoninit, !1, ! 0) : t.slideto(t.params.initialslide, 0, t.params.runcallbacksoninit, !1, !0), t .attachevents(), t.initialized = !0, t.emit("init"), t.emit("afterinit")), t } destroy(e, t) { void 0 === e && (e = !0), void 0 === t && (t = !0); const s = this, { params: a, $el: i, $wrapperel: r, slides: n } = s; return void 0 === s.params || s.destroyed || (s.emit("beforedestroy"), s.initialized = !1, s .detachevents(), a.loop && s.loopdestroy(), t && (s.removeclasses(), i.removeattr( "style"), r.removeattr("style"), n && n.length && n.removeclass([a .slidevisibleclass, a.slideactiveclass, a.slidenextclass, a.slideprevclass ].join(" ")).removeattr("style").removeattr("data-swiper-slide-index")), s.emit( "destroy"), object.keys(s.eventslisteners).foreach((e => { s.off(e) })), !1 !== e && (s.$el[0].swiper = null, function(e) { const t = e; object.keys(t).foreach((e => { try { t[e] = null } catch (e) {} try { delete t[e] } catch (e) {} })) }(s)), s.destroyed = !0), null } static extenddefaults(e) { g(q, e) } static get extendeddefaults() { return q } static get defaults() { return w } static installmodule(e) { v.prototype.__modules__ || (v.prototype.__modules__ = []); const t = v.prototype.__modules__; "function" == typeof e && t.indexof(e) < 0 && t.push(e) } static use(e) { return array.isarray(e) ? (e.foreach((e => v.installmodule(e))), v) : (v.installmodule(e), v) } } function f(e, t, s, i) { const r = a(); return e.params.createelements && object.keys(i).foreach((a => { if (!s[a] && !0 === s.auto) { let n = e.$el.children(`.${i[a]}`)[0]; n || (n = r.createelement("div"), n.classname = i[a], e.$el.append(n)), s[a] = n, t[ a] = n } })), s } function u(e) { return void 0 === e && (e = ""), `.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}` } function k(e) { const t = this, { $wrapperel: s, params: a } = t; if (a.loop && t.loopdestroy(), "object" == typeof e && "length" in e) for (let t = 0; t < e.length; t += 1) e[t] && s.append(e[t]); else s.append(e); a.loop && t.loopcreate(), a.observer || t.update() } function z(e) { const t = this, { params: s, $wrapperel: a, activeindex: i } = t; s.loop && t.loopdestroy(); let r = i + 1; if ("object" == typeof e && "length" in e) { for (let t = 0; t < e.length; t += 1) e[t] && a.prepend(e[t]); r = i + e.length } else a.prepend(e); s.loop && t.loopcreate(), s.observer || t.update(), t.slideto(r, 0, !1) } function q(e, t) { const s = this, { $wrapperel: a, params: i, activeindex: r } = s; let n = r; i.loop && (n -= s.loopedslides, s.loopdestroy(), s.slides = a.children(`.${i.slideclass}`)); const l = s.slides.length; if (e <= 0) return void s.prependslide(t); if (e >= l) return void s.appendslide(t); let o = n > e ? n + 1 : n; const d = []; for (let t = l - 1; t >= e; t -= 1) { const e = s.slides.eq(t); e.remove(), d.unshift(e) } if ("object" == typeof t && "length" in t) { for (let e = 0; e < t.length; e += 1) t[e] && a.append(t[e]); o = n > e ? n + t.length : n } else a.append(t); for (let e = 0; e < d.length; e += 1) a.append(d[e]); i.loop && s.loopcreate(), i.observer || s.update(), i.loop ? s.slideto(o + s.loopedslides, 0, !1) : s .slideto(o, 0, !1) } function j(e) { const t = this, { params: s, $wrapperel: a, activeindex: i } = t; let r = i; s.loop && (r -= t.loopedslides, t.loopdestroy(), t.slides = a.children(`.${s.slideclass}`)); let n, l = r; if ("object" == typeof e && "length" in e) { for (let s = 0; s < e.length; s += 1) n = e[s], t.slides[n] && t.slides.eq(n).remove(), n < l && ( l -= 1); l = math.max(l, 0) } else n = e, t.slides[n] && t.slides.eq(n).remove(), n < l && (l -= 1), l = math.max(l, 0); s.loop && t.loopcreate(), s.observer || t.update(), s.loop ? t.slideto(l + t.loopedslides, 0, !1) : t .slideto(l, 0, !1) } function ee() { const e = this, t = []; for (let s = 0; s < e.slides.length; s += 1) t.push(s); e.removeslide(t) } function te(e) { const { effect: t, swiper: s, on: a, settranslate: i, settransition: r, overwriteparams: n, perspective: l, recreateshadows: o, geteffectparams: d } = e; let c; a("beforeinit", (() => { if (s.params.effect !== t) return; s.classnames.push(`${s.params.containermodifierclass}${t}`), l && l() && s.classnames .push(`${s.params.containermodifierclass}3d`); const e = n ? n() : {}; object.assign(s.params, e), object.assign(s.originalparams, e) })), a("settranslate", (() => { s.params.effect === t && i() })), a("settransition", ((e, a) => { s.params.effect === t && r(a) })), a("transitionend", (() => { if (s.params.effect === t && o) { if (!d || !d().slideshadows) return; s.slides.each((e => { s.$(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).remove() })), o() } })), a("virtualupdate", (() => { s.params.effect === t && (s.slides.length || (c = !0), requestanimationframe((() => { c && s.slides && s.slides.length && (i(), c = !1) }))) })) } function se(e, t) { return e.transformel ? t.find(e.transformel).css({ "backface-visibility": "hidden", "-webkit-backface-visibility": "hidden" }) : t } function ae(e) { let { swiper: t, duration: s, transformel: a, allslides: i } = e; const { slides: r, activeindex: n, $wrapperel: l } = t; if (t.params.virtualtranslate && 0 !== s) { let e, s = !1; e = i ? a ? r.find(a) : r : a ? r.eq(n).find(a) : r.eq(n), e.transitionend((() => { if (s) return; if (!t || t.destroyed) return; s = !0, t.animating = !1; const e = ["webkittransitionend", "transitionend"]; for (let t = 0; t < e.length; t += 1) l.trigger(e[t]) })) } } function ie(e, t, s) { const a = "swiper-slide-shadow" + (s ? `-${s}` : ""), i = e.transformel ? t.find(e.transformel) : t; let r = i.children(`.${a}`); return r.length || (r = d(`
`), i.append(r)), r } object.keys(_).foreach((e => { object.keys(_[e]).foreach((t => { v.prototype[t] = _[e][t] })) })), v.use([function(e) { let { swiper: t, on: s, emit: a } = e; const i = r(); let n = null, l = null; const o = () => { t && !t.destroyed && t.initialized && (a("beforeresize"), a("resize")) }, d = () => { t && !t.destroyed && t.initialized && a("orientationchange") }; s("init", (() => { t.params.resizeobserver && void 0 !== i.resizeobserver ? t && !t .destroyed && t.initialized && (n = new resizeobserver((e => { l = i.requestanimationframe((() => { const { width: s, height: a } = t; let i = s, r = a; e.foreach((e => { let { contentboxsize: s, contentrect: a, target: n } = e; n && n !== t.el || (i = a ? a.width : ( s[0] || s) .inlinesize, r = a ? a.height : ( s[0] || s) .blocksize) })), i === s && r === a || o() })) })), n.observe(t.el)) : (i.addeventlistener("resize", o), i .addeventlistener("orientationchange", d)) })), s("destroy", (() => { l && i.cancelanimationframe(l), n && n.unobserve && t.el && (n.unobserve(t .el), n = null), i.removeeventlistener("resize", o), i .removeeventlistener("orientationchange", d) })) }, function(e) { let { swiper: t, extendparams: s, on: a, emit: i } = e; const n = [], l = r(), o = function(e, t) { void 0 === t && (t = {}); const s = new(l.mutationobserver || l.webkitmutationobserver)((e => { if (1 === e.length) return void i("observerupdate", e[0]); const t = function() { i("observerupdate", e[0]) }; l.requestanimationframe ? l.requestanimationframe(t) : l.settimeout( t, 0) })); s.observe(e, { attributes: void 0 === t.attributes || t.attributes, childlist: void 0 === t.childlist || t.childlist, characterdata: void 0 === t.characterdata || t.characterdata }), n.push(s) }; s({ observer: !1, observeparents: !1, observeslidechildren: !1 }), a("init", (() => { if (t.params.observer) { if (t.params.observeparents) { const e = t.$el.parents(); for (let t = 0; t < e.length; t += 1) o(e[t]) } o(t.$el[0], { childlist: t.params.observeslidechildren }), o(t.$wrapperel[0], { attributes: !1 }) } })), a("destroy", (() => { n.foreach((e => { e.disconnect() })), n.splice(0, n.length) })) }]); const re = [function(e) { let t, { swiper: s, extendparams: a, on: i, emit: r } = e; function n(e, t) { const a = s.params.virtual; if (a.cache && s.virtual.cache[t]) return s.virtual.cache[t]; const i = a.renderslide ? d(a.renderslide.call(s, e, t)) : d( `
${e}
`); return i.attr("data-swiper-slide-index") || i.attr("data-swiper-slide-index", t), a.cache && (s.virtual.cache[t] = i), i } function l(e) { const { slidesperview: t, slidespergroup: a, centeredslides: i } = s.params, { addslidesbefore: l, addslidesafter: o } = s.params.virtual, { from: d, to: c, slides: p, slidesgrid: u, offset: h } = s.virtual; s.params.cssmode || s.updateactiveindex(); const m = s.activeindex || 0; let f, g, v; f = s.rtltranslate ? "right" : s.ishorizontal() ? "left" : "top", i ? (g = math.floor(t / 2) + a + o, v = math.floor(t / 2) + a + l) : (g = t + (a - 1) + o, v = a + l); const w = math.max((m || 0) - v, 0), b = math.min((m || 0) + g, p.length - 1), x = (s.slidesgrid[w] || 0) - (s.slidesgrid[0] || 0); function y() { s.updateslides(), s.updateprogress(), s.updateslidesclasses(), s.lazy && s.params.lazy .enabled && s.lazy.load(), r("virtualupdate") } if (object.assign(s.virtual, { from: w, to: b, offset: x, slidesgrid: s.slidesgrid }), d === w && c === b && !e) return s.slidesgrid !== u && x !== h && s.slides.css(f, `${x}px`), s.updateprogress(), void r("virtualupdate"); if (s.params.virtual.renderexternal) return s.params.virtual.renderexternal.call(s, { offset: x, from: w, to: b, slides: function() { const e = []; for (let t = w; t <= b; t += 1) e.push(p[t]); return e }() }), void(s.params.virtual.renderexternalupdate ? y() : r("virtualupdate")); const e = [], c = []; if (e) s.$wrapperel.find(`.${s.params.slideclass}`).remove(); else for (let e = d; e <= c; e += 1)(e < w || e > b) && s.$wrapperel.find( `.${s.params.slideclass}[data-swiper-slide-index="${e}"]`).remove(); for (let t = 0; t < p.length; t += 1) t >= w && t <= b && (void 0 === c || e ? c.push(t) : ( t > c && c.push(t), t < d && e.push(t))); c.foreach((e => { s.$wrapperel.append(n(p[e], e)) })), e.sort(((e, t) => t - e)).foreach((e => { s.$wrapperel.prepend(n(p[e], e)) })), s.$wrapperel.children(".swiper-slide").css(f, `${x}px`), y() } a({ virtual: { enabled: !1, slides: [], cache: !0, renderslide: null, renderexternal: null, renderexternalupdate: !0, addslidesbefore: 0, addslidesafter: 0 } }), s.virtual = { cache: {}, from: void 0, to: void 0, slides: [], offset: 0, slidesgrid: [] }, i("beforeinit", (() => { s.params.virtual.enabled && (s.virtual.slides = s.params.virtual.slides, s .classnames.push(`${s.params.containermodifierclass}virtual`), s.params .watchslidesprogress = !0, s.originalparams.watchslidesprogress = !0, s .params.initialslide || l()) })), i("settranslate", (() => { s.params.virtual.enabled && (s.params.cssmode && !s._immediatevirtual ? ( cleartimeout(t), t = settimeout((() => { l() }), 100)) : l()) })), i("init update resize", (() => { s.params.virtual.enabled && s.params.cssmode && v(s.wrapperel, "--swiper-virtual-size", `${s.virtualsize}px`) })), object.assign(s.virtual, { appendslide: function(e) { if ("object" == typeof e && "length" in e) for (let t = 0; t < e.length; t += 1) e[t] && s.virtual.slides.push(e[ t]); else s.virtual.slides.push(e); l(!0) }, prependslide: function(e) { const t = s.activeindex; let a = t + 1, i = 1; if (array.isarray(e)) { for (let t = 0; t < e.length; t += 1) e[t] && s.virtual.slides.unshift( e[t]); a = t + e.length, i = e.length } else s.virtual.slides.unshift(e); if (s.params.virtual.cache) { const e = s.virtual.cache, t = {}; object.keys(e).foreach((s => { const a = e[s], r = a.attr("data-swiper-slide-index"); r && a.attr("data-swiper-slide-index", parseint(r, 10) + i), t[parseint(s, 10) + i] = a })), s.virtual.cache = t } l(!0), s.slideto(a, 0) }, removeslide: function(e) { if (null == e) return; let t = s.activeindex; if (array.isarray(e)) for (let a = e.length - 1; a >= 0; a -= 1) s.virtual.slides.splice(e[a], 1), s.params.virtual.cache && delete s.virtual.cache[e[a]], e[ a] < t && (t -= 1), t = math.max(t, 0); else s.virtual.slides.splice(e, 1), s.params.virtual.cache && delete s .virtual.cache[e], e < t && (t -= 1), t = math.max(t, 0); l(!0), s.slideto(t, 0) }, removeallslides: function() { s.virtual.slides = [], s.params.virtual.cache && (s.virtual.cache = {}), l(! 0), s.slideto(0, 0) }, update: l }) }, function(e) { let { swiper: t, extendparams: s, on: i, emit: n } = e; const l = a(), o = r(); function c(e) { if (!t.enabled) return; const { rtltranslate: s } = t; let a = e; a.originalevent && (a = a.originalevent); const i = a.keycode || a.charcode, r = t.params.keyboard.pageupdown, d = r && 33 === i, c = r && 34 === i, p = 37 === i, u = 39 === i, h = 38 === i, m = 40 === i; if (!t.allowslidenext && (t.ishorizontal() && u || t.isvertical() && m || c)) return !1; if (!t.allowslideprev && (t.ishorizontal() && p || t.isvertical() && h || d)) return !1; if (!(a.shiftkey || a.altkey || a.ctrlkey || a.metakey || l.activeelement && l.activeelement .nodename && ("input" === l.activeelement.nodename.tolowercase() || "textarea" === l .activeelement.nodename.tolowercase()))) { if (t.params.keyboard.onlyinviewport && (d || c || p || u || h || m)) { let e = !1; if (t.$el.parents(`.${t.params.slideclass}`).length > 0 && 0 === t.$el.parents( `.${t.params.slideactiveclass}`).length) return; const a = t.$el, i = a[0].clientwidth, r = a[0].clientheight, n = o.innerwidth, l = o.innerheight, d = t.$el.offset(); s && (d.left -= t.$el[0].scrollleft); const c = [ [d.left, d.top], [d.left + i, d.top], [d.left, d.top + r], [d.left + i, d.top + r] ]; for (let t = 0; t < c.length; t += 1) { const s = c[t]; if (s[0] >= 0 && s[0] <= n && s[1] >= 0 && s[1] <= l) { if (0 === s[0] && 0 === s[1]) continue; e = !0 } } if (!e) return } t.ishorizontal() ? ((d || c || p || u) && (a.preventdefault ? a.preventdefault() : a .returnvalue = !1), ((c || u) && !s || (d || p) && s) && t.slidenext(), (( d || p) && !s || (c || u) && s) && t.slideprev()) : ((d || c || h || m) && (a .preventdefault ? a.preventdefault() : a.returnvalue = !1), (c || m) && t .slidenext(), (d || h) && t.slideprev()), n("keypress", i) } } function p() { t.keyboard.enabled || (d(l).on("keydown", c), t.keyboard.enabled = !0) } function u() { t.keyboard.enabled && (d(l).off("keydown", c), t.keyboard.enabled = !1) } t.keyboard = { enabled: !1 }, s({ keyboard: { enabled: !1, onlyinviewport: !0, pageupdown: !0 } }), i("init", (() => { t.params.keyboard.enabled && p() })), i("destroy", (() => { t.keyboard.enabled && u() })), object.assign(t.keyboard, { enable: p, disable: u }) }, function(e) { let { swiper: t, extendparams: s, on: a, emit: i } = e; const n = r(); let l; s({ mousewheel: { enabled: !1, releaseonedges: !1, invert: !1, forcetoaxis: !1, sensitivity: 1, eventstarget: "container", thresholddelta: null, thresholdtime: null } }), t.mousewheel = { enabled: !1 }; let o, c = u(); const h = []; function m() { t.enabled && (t.mouseentered = !0) } function f() { t.enabled && (t.mouseentered = !1) } function g(e) { return !(t.params.mousewheel.thresholddelta && e.delta < t.params.mousewheel .thresholddelta) && (!(t.params.mousewheel.thresholdtime && u() - c < t.params .mousewheel.thresholdtime) && (e.delta >= 6 && u() - c < 60 || (e.direction < 0 ? t.isend && !t.params.loop || t.animating || (t.slidenext(), i("scroll", e.raw)) : t.isbeginning && !t.params.loop || t.animating || (t .slideprev(), i("scroll", e.raw)), c = (new n.date).gettime(), !1))) } function v(e) { let s = e, a = !0; if (!t.enabled) return; const r = t.params.mousewheel; t.params.cssmode && s.preventdefault(); let n = t.$el; if ("container" !== t.params.mousewheel.eventstarget && (n = d(t.params.mousewheel .eventstarget)), !t.mouseentered && !n[0].contains(s.target) && !r.releaseonedges) return !0; s.originalevent && (s = s.originalevent); let c = 0; const m = t.rtltranslate ? -1 : 1, f = function(e) { let t = 0, s = 0, a = 0, i = 0; return "detail" in e && (s = e.detail), "wheeldelta" in e && (s = -e.wheeldelta / 120), "wheeldeltay" in e && (s = -e.wheeldeltay / 120), "wheeldeltax" in e && (t = -e.wheeldeltax / 120), "axis" in e && e.axis === e.horizontal_axis && (t = s, s = 0), a = 10 * t, i = 10 * s, "deltay" in e && (i = e.deltay), "deltax" in e && (a = e.deltax), e.shiftkey && !a && (a = i, i = 0), (a || i) && e.deltamode && (1 === e.deltamode ? (a *= 40, i *= 40) : (a *= 800, i *= 800)), a && !t && (t = a < 1 ? -1 : 1), i && !s && (s = i < 1 ? -1 : 1), { spinx: t, spiny: s, pixelx: a, pixely: i } }(s); if (r.forcetoaxis) if (t.ishorizontal()) { if (!(math.abs(f.pixelx) > math.abs(f.pixely))) return !0; c = -f.pixelx * m } else { if (!(math.abs(f.pixely) > math.abs(f.pixelx))) return !0; c = -f.pixely } else c = math.abs(f.pixelx) > math.abs(f.pixely) ? -f.pixelx * m : -f.pixely; if (0 === c) return !0; r.invert && (c = -c); let v = t.gettranslate() + c * r.sensitivity; if (v >= t.mintranslate() && (v = t.mintranslate()), v <= t.maxtranslate() && (v = t .maxtranslate()), a = !!t.params.loop || !(v === t.mintranslate() || v === t .maxtranslate()), a && t.params.nested && s.stoppropagation(), t.params.freemode && t.params.freemode.enabled) { const e = { time: u(), delta: math.abs(c), direction: math.sign(c) }, a = o && e.time < o.time + 500 && e.delta <= o.delta && e.direction === o.direction; if (!a) { o = void 0, t.params.loop && t.loopfix(); let n = t.gettranslate() + c * r.sensitivity; const d = t.isbeginning, u = t.isend; if (n >= t.mintranslate() && (n = t.mintranslate()), n <= t.maxtranslate() && (n = t .maxtranslate()), t.settransition(0), t.settranslate(n), t.updateprogress(), t.updateactiveindex(), t.updateslidesclasses(), (!d && t.isbeginning || !u && t .isend) && t.updateslidesclasses(), t.params.freemode.sticky) { cleartimeout(l), l = void 0, h.length >= 15 && h.shift(); const s = h.length ? h[h.length - 1] : void 0, a = h[0]; if (h.push(e), s && (e.delta > s.delta || e.direction !== s.direction)) h .splice(0); else if (h.length >= 15 && e.time - a.time < 500 && a.delta - e.delta >= 1 && e .delta <= 6) { const s = c > 0 ? .8 : .2; o = e, h.splice(0), l = p((() => { t.slidetoclosest(t.params.speed, !0, void 0, s) }), 0) } l || (l = p((() => { o = e, h.splice(0), t.slidetoclosest(t.params.speed, !0, void 0, .5) }), 500)) } if (a || i("scroll", s), t.params.autoplay && t.params .autoplaydisableoninteraction && t.autoplay.stop(), n === t.mintranslate() || n === t.maxtranslate()) return !0 } } else { const s = { time: u(), delta: math.abs(c), direction: math.sign(c), raw: e }; h.length >= 2 && h.shift(); const a = h.length ? h[h.length - 1] : void 0; if (h.push(s), a ? (s.direction !== a.direction || s.delta > a.delta || s.time > a .time + 150) && g(s) : g(s), function(e) { const s = t.params.mousewheel; if (e.direction < 0) { if (t.isend && !t.params.loop && s.releaseonedges) return !0 } else if (t.isbeginning && !t.params.loop && s.releaseonedges) return !0; return !1 }(s)) return !0 } return s.preventdefault ? s.preventdefault() : s.returnvalue = !1, !1 } function w(e) { let s = t.$el; "container" !== t.params.mousewheel.eventstarget && (s = d(t.params.mousewheel .eventstarget)), s[e]("mouseenter", m), s[e]("mouseleave", f), s[e]("wheel", v) } function b() { return t.params.cssmode ? (t.wrapperel.removeeventlistener("wheel", v), !0) : !t.mousewheel .enabled && (w("on"), t.mousewheel.enabled = !0, !0) } function x() { return t.params.cssmode ? (t.wrapperel.addeventlistener(event, v), !0) : !!t.mousewheel .enabled && (w("off"), t.mousewheel.enabled = !1, !0) } a("init", (() => { !t.params.mousewheel.enabled && t.params.cssmode && x(), t.params.mousewheel .enabled && b() })), a("destroy", (() => { t.params.cssmode && b(), t.mousewheel.enabled && x() })), object.assign(t.mousewheel, { enable: b, disable: x }) }, function(e) { let { swiper: t, extendparams: s, on: a, emit: i } = e; function r(e) { let s; return e && (s = d(e), t.params.uniquenavelements && "string" == typeof e && s.length > 1 && 1 === t.$el.find(e).length && (s = t.$el.find(e))), s } function n(e, s) { const a = t.params.navigation; e && e.length > 0 && (e[s ? "addclass" : "removeclass"](a.disabledclass), e[0] && "button" === e[0].tagname && (e[0].disabled = s), t.params.watchoverflow && t .enabled && e[t.islocked ? "addclass" : "removeclass"](a.lockclass)) } function l() { if (t.params.loop) return; const { $nextel: e, $prevel: s } = t.navigation; n(s, t.isbeginning && !t.params.rewind), n(e, t.isend && !t.params.rewind) } function o(e) { e.preventdefault(), (!t.isbeginning || t.params.loop || t.params.rewind) && (t.slideprev(), i("navigationprev")) } function c(e) { e.preventdefault(), (!t.isend || t.params.loop || t.params.rewind) && (t.slidenext(), i( "navigationnext")) } function p() { const e = t.params.navigation; if (t.params.navigation = f(t, t.originalparams.navigation, t.params.navigation, { nextel: "swiper-button-next", prevel: "swiper-button-prev" }), !e.nextel && !e.prevel) return; const s = r(e.nextel), a = r(e.prevel); s && s.length > 0 && s.on("click", c), a && a.length > 0 && a.on("click", o), object.assign( t.navigation, { $nextel: s, nextel: s && s[0], $prevel: a, prevel: a && a[0] }), t.enabled || (s && s.addclass(e.lockclass), a && a.addclass(e.lockclass)) } function u() { const { $nextel: e, $prevel: s } = t.navigation; e && e.length && (e.off("click", c), e.removeclass(t.params.navigation.disabledclass)), s && s.length && (s.off("click", o), s.removeclass(t.params.navigation.disabledclass)) } s({ navigation: { nextel: null, prevel: null, hideonclick: !1, disabledclass: "swiper-button-disabled", hiddenclass: "swiper-button-hidden", lockclass: "swiper-button-lock", navigationdisabledclass: "swiper-navigation-disabled" } }), t.navigation = { nextel: null, $nextel: null, prevel: null, $prevel: null }, a("init", (() => { !1 === t.params.navigation.enabled ? h() : (p(), l()) })), a("toedge fromedge lock unlock", (() => { l() })), a("destroy", (() => { u() })), a("enable disable", (() => { const { $nextel: e, $prevel: s } = t.navigation; e && e[t.enabled ? "removeclass" : "addclass"](t.params.navigation.lockclass), s && s[t.enabled ? "removeclass" : "addclass"](t.params.navigation .lockclass) })), a("click", ((e, s) => { const { $nextel: a, $prevel: r } = t.navigation, n = s.target; if (t.params.navigation.hideonclick && !d(n).is(r) && !d(n).is(a)) { if (t.pagination && t.params.pagination && t.params.pagination.clickable && (t.pagination.el === n || t.pagination.el.contains(n))) return; let e; a ? e = a.hasclass(t.params.navigation.hiddenclass) : r && (e = r.hasclass(t .params.navigation.hiddenclass)), i(!0 === e ? "navigationshow" : "navigationhide"), a && a.toggleclass(t.params.navigation .hiddenclass), r && r.toggleclass(t.params.navigation.hiddenclass) } })); const h = () => { t.$el.addclass(t.params.navigation.navigationdisabledclass), u() }; object.assign(t.navigation, { enable: () => { t.$el.removeclass(t.params.navigation.navigationdisabledclass), p(), l() }, disable: h, update: l, init: p, destroy: u }) }, function(e) { let { swiper: t, extendparams: s, on: a, emit: i } = e; const r = "swiper-pagination"; let n; s({ pagination: { el: null, bulletelement: "span", clickable: !1, hideonclick: !1, renderbullet: null, renderprogressbar: null, renderfraction: null, rendercustom: null, progressbaropposite: !1, type: "bullets", dynamicbullets: !1, dynamicmainbullets: 1, formatfractioncurrent: e => e, formatfractiontotal: e => e, bulletclass: `${r}-bullet`, bulletactiveclass: `${r}-bullet-active`, modifierclass: `${r}-`, currentclass: `${r}-current`, totalclass: `${r}-total`, hiddenclass: `${r}-hidden`, progressbarfillclass: `${r}-progressbar-fill`, progressbaroppositeclass: `${r}-progressbar-opposite`, clickableclass: `${r}-clickable`, lockclass: `${r}-lock`, horizontalclass: `${r}-horizontal`, verticalclass: `${r}-vertical`, paginationdisabledclass: `${r}-disabled` } }), t.pagination = { el: null, $el: null, bullets: [] }; let l = 0; function o() { return !t.params.pagination.el || !t.pagination.el || !t.pagination.$el || 0 === t .pagination.$el.length } function c(e, s) { const { bulletactiveclass: a } = t.params.pagination; e[s]().addclass(`${a}-${s}`)[s]().addclass(`${a}-${s}-${s}`) } function p() { const e = t.rtl, s = t.params.pagination; if (o()) return; const a = t.virtual && t.params.virtual.enabled ? t.virtual.slides.length : t.slides.length, r = t.pagination.$el; let p; const u = t.params.loop ? math.ceil((a - 2 * t.loopedslides) / t.params.slidespergroup) : t .snapgrid.length; if (t.params.loop ? (p = math.ceil((t.activeindex - t.loopedslides) / t.params .slidespergroup), p > a - 1 - 2 * t.loopedslides && (p -= a - 2 * t .loopedslides), p > u - 1 && (p -= u), p < 0 && "bullets" !== t.params .paginationtype && (p = u + p)) : p = void 0 !== t.snapindex ? t.snapindex : t .activeindex || 0, "bullets" === s.type && t.pagination.bullets && t.pagination.bullets .length > 0) { const a = t.pagination.bullets; let i, o, u; if (s.dynamicbullets && (n = a.eq(0)[t.ishorizontal() ? "outerwidth" : "outerheight"](! 0), r.css(t.ishorizontal() ? "width" : "height", n * (s.dynamicmainbullets + 4) + "px"), s.dynamicmainbullets > 1 && void 0 !== t.previousindex && (l += p - (t.previousindex - t.loopedslides || 0), l > s.dynamicmainbullets - 1 ? l = s.dynamicmainbullets - 1 : l < 0 && (l = 0)), i = math.max(p - l, 0), o = i + (math.min(a.length, s.dynamicmainbullets) - 1), u = (o + i) / 2), a .removeclass(["", "-next", "-next-next", "-prev", "-prev-prev", "-main"].map((e => `${s.bulletactiveclass}${e}`)).join(" ")), r.length > 1) a.each((e => { const t = d(e), a = t.index(); a === p && t.addclass(s.bulletactiveclass), s.dynamicbullets && (a >= i && a <= o && t.addclass(`${s.bulletactiveclass}-main`), a === i && c(t, "prev"), a === o && c(t, "next")) })); else { const e = a.eq(p), r = e.index(); if (e.addclass(s.bulletactiveclass), s.dynamicbullets) { const e = a.eq(i), n = a.eq(o); for (let e = i; e <= o; e += 1) a.eq(e).addclass(`${s.bulletactiveclass}-main`); if (t.params.loop) if (r >= a.length) { for (let e = s.dynamicmainbullets; e >= 0; e -= 1) a.eq(a.length - e) .addclass(`${s.bulletactiveclass}-main`); a.eq(a.length - s.dynamicmainbullets - 1).addclass( `${s.bulletactiveclass}-prev`) } else c(e, "prev"), c(n, "next"); else c(e, "prev"), c(n, "next") } } if (s.dynamicbullets) { const i = math.min(a.length, s.dynamicmainbullets + 4), r = (n * i - n) / 2 - u * n, l = e ? "right" : "left"; a.css(t.ishorizontal() ? l : "top", `${r}px`) } } if ("fraction" === s.type && (r.find(u(s.currentclass)).text(s.formatfractioncurrent(p + 1)), r.find(u(s.totalclass)).text(s.formatfractiontotal(u))), "progressbar" === s .type) { let e; e = s.progressbaropposite ? t.ishorizontal() ? "vertical" : "horizontal" : t .ishorizontal() ? "horizontal" : "vertical"; const a = (p + 1) / u; let i = 1, n = 1; "horizontal" === e ? i = a : n = a, r.find(u(s.progressbarfillclass)).transform( `translate3d(0,0,0) scalex(${i}) scaley(${n})`).transition(t.params.speed) } "custom" === s.type && s.rendercustom ? (r.html(s.rendercustom(t, p + 1, u)), i( "paginationrender", r[0])) : i("paginationupdate", r[0]), t.params.watchoverflow && t.enabled && r[t.islocked ? "addclass" : "removeclass"](s.lockclass) } function u() { const e = t.params.pagination; if (o()) return; const s = t.virtual && t.params.virtual.enabled ? t.virtual.slides.length : t.slides.length, a = t.pagination.$el; let r = ""; if ("bullets" === e.type) { let i = t.params.loop ? math.ceil((s - 2 * t.loopedslides) / t.params.slidespergroup) : t.snapgrid.length; t.params.freemode && t.params.freemode.enabled && !t.params.loop && i > s && (i = s); for (let s = 0; s < i; s += 1) e.renderbullet ? r += e.renderbullet.call(t, s, e .bulletclass) : r += `<${e.bulletelement} class="${e.bulletclass}">`; a.html(r), t.pagination.bullets = a.find(u(e.bulletclass)) } "fraction" === e.type && (r = e.renderfraction ? e.renderfraction.call(t, e.currentclass, e .totalclass) : ` / `, a .html(r)), "progressbar" === e.type && (r = e.renderprogressbar ? e .renderprogressbar.call(t, e.progressbarfillclass) : ``, a.html(r)), "custom" !== e .type && i("paginationrender", t.pagination.$el[0]) } function h() { t.params.pagination = f(t, t.originalparams.pagination, t.params.pagination, { el: "swiper-pagination" }); const e = t.params.pagination; if (!e.el) return; let s = d(e.el); 0 !== s.length && (t.params.uniquenavelements && "string" == typeof e.el && s.length > 1 && (s = t.$el.find(e.el), s.length > 1 && (s = s.filter((e => d(e).parents(".swiper")[ 0] === t.el)))), "bullets" === e.type && e.clickable && s.addclass(e .clickableclass), s.addclass(e.modifierclass + e.type), s.addclass(t .ishorizontal() ? e.horizontalclass : e.verticalclass), "bullets" === e.type && e.dynamicbullets && (s.addclass(`${e.modifierclass}${e.type}-dynamic`), l = 0, e .dynamicmainbullets < 1 && (e.dynamicmainbullets = 1)), "progressbar" === e .type && e.progressbaropposite && s.addclass(e.progressbaroppositeclass), e .clickable && s.on("click", u(e.bulletclass), (function(e) { e.preventdefault(); let s = d(this).index() * t.params.slidespergroup; t.params.loop && (s += t.loopedslides), t.slideto(s) })), object.assign(t.pagination, { $el: s, el: s[0] }), t.enabled || s.addclass(e.lockclass)) } function m() { const e = t.params.pagination; if (o()) return; const s = t.pagination.$el; s.removeclass(e.hiddenclass), s.removeclass(e.modifierclass + e.type), s.removeclass(t .ishorizontal() ? e.horizontalclass : e.verticalclass), t.pagination.bullets && t .pagination.bullets.removeclass && t.pagination.bullets.removeclass(e .bulletactiveclass), e.clickable && s.off("click", u(e.bulletclass)) } a("init", (() => { !1 === t.params.pagination.enabled ? f() : (h(), u(), p()) })), a("activeindexchange", (() => { (t.params.loop || void 0 === t.snapindex) && p() })), a("snapindexchange", (() => { t.params.loop || p() })), a("slideslengthchange", (() => { t.params.loop && (u(), p()) })), a("snapgridlengthchange", (() => { t.params.loop || (u(), p()) })), a("destroy", (() => { m() })), a("enable disable", (() => { const { $el: e } = t.pagination; e && e[t.enabled ? "removeclass" : "addclass"](t.params.pagination.lockclass) })), a("lock unlock", (() => { p() })), a("click", ((e, s) => { const a = s.target, { $el: r } = t.pagination; if (t.params.pagination.el && t.params.pagination.hideonclick && r && r.length > 0 && !d(a).hasclass(t.params.pagination.bulletclass)) { if (t.navigation && (t.navigation.nextel && a === t.navigation.nextel || t .navigation.prevel && a === t.navigation.prevel)) return; const e = r.hasclass(t.params.pagination.hiddenclass); i(!0 === e ? "paginationshow" : "paginationhide"), r.toggleclass(t.params .pagination.hiddenclass) } })); const f = () => { t.$el.addclass(t.params.pagination.paginationdisabledclass), t.pagination.$el && t .pagination.$el.addclass(t.params.pagination.paginationdisabledclass), m() }; object.assign(t.pagination, { enable: () => { t.$el.removeclass(t.params.pagination.paginationdisabledclass), t.pagination .$el && t.pagination.$el.removeclass(t.params.pagination .paginationdisabledclass), h(), u(), p() }, disable: f, render: u, update: p, init: h, destroy: m }) }, function(e) { let { swiper: t, extendparams: s, on: i, emit: r } = e; const n = a(); let l, o, c, u, h = !1, m = null, f = null; function g() { if (!t.params.scrollbar.el || !t.scrollbar.el) return; const { scrollbar: e, rtltranslate: s, progress: a } = t, { $dragel: i, $el: r } = e, n = t.params.scrollbar; let l = o, d = (c - o) * a; s ? (d = -d, d > 0 ? (l = o - d, d = 0) : -d + o > c && (l = c + d)) : d < 0 ? (l = o + d, d = 0) : d + o > c && (l = c - d), t.ishorizontal() ? (i.transform( `translate3d(${d}px, 0, 0)`), i[0].style.width = `${l}px`) : (i.transform( `translate3d(0px, ${d}px, 0)`), i[0].style.height = `${l}px`), n.hide && ( cleartimeout(m), r[0].style.opacity = 1, m = settimeout((() => { r[0].style.opacity = 0, r.transition(400) }), 1e3)) } function v() { if (!t.params.scrollbar.el || !t.scrollbar.el) return; const { scrollbar: e } = t, { $dragel: s, $el: a } = e; s[0].style.width = "", s[0].style.height = "", c = t.ishorizontal() ? a[0].offsetwidth : a[ 0].offsetheight, u = t.size / (t.virtualsize + t.params.slidesoffsetbefore - (t .params.centeredslides ? t.snapgrid[0] : 0)), o = "auto" === t.params.scrollbar .dragsize ? c * u : parseint(t.params.scrollbar.dragsize, 10), t.ishorizontal() ? s[0] .style.width = `${o}px` : s[0].style.height = `${o}px`, a[0].style.display = u >= 1 ? "none" : "", t.params.scrollbar.hide && (a[0].style.opacity = 0), t.params .watchoverflow && t.enabled && e.$el[t.islocked ? "addclass" : "removeclass"](t.params .scrollbar.lockclass) } function w(e) { return t.ishorizontal() ? "touchstart" === e.type || "touchmove" === e.type ? e .targettouches[0].clientx : e.clientx : "touchstart" === e.type || "touchmove" === e .type ? e.targettouches[0].clienty : e.clienty } function b(e) { const { scrollbar: s, rtltranslate: a } = t, { $el: i } = s; let r; r = (w(e) - i.offset()[t.ishorizontal() ? "left" : "top"] - (null !== l ? l : o / 2)) / (c - o), r = math.max(math.min(r, 1), 0), a && (r = 1 - r); const n = t.mintranslate() + (t.maxtranslate() - t.mintranslate()) * r; t.updateprogress(n), t.settranslate(n), t.updateactiveindex(), t.updateslidesclasses() } function x(e) { const s = t.params.scrollbar, { scrollbar: a, $wrapperel: i } = t, { $el: n, $dragel: o } = a; h = !0, l = e.target === o[0] || e.target === o ? w(e) - e.target.getboundingclientrect()[t .ishorizontal() ? "left" : "top"] : null, e.preventdefault(), e.stoppropagation(), i .transition(100), o.transition(100), b(e), cleartimeout(f), n.transition(0), s.hide && n .css("opacity", 1), t.params.cssmode && t.$wrapperel.css("scroll-snap-type", "none"), r( "scrollbardragstart", e) } function y(e) { const { scrollbar: s, $wrapperel: a } = t, { $el: i, $dragel: n } = s; h && (e.preventdefault ? e.preventdefault() : e.returnvalue = !1, b(e), a.transition(0), i .transition(0), n.transition(0), r("scrollbardragmove", e)) } function e(e) { const s = t.params.scrollbar, { scrollbar: a, $wrapperel: i } = t, { $el: n } = a; h && (h = !1, t.params.cssmode && (t.$wrapperel.css("scroll-snap-type", ""), i.transition( "")), s.hide && (cleartimeout(f), f = p((() => { n.css("opacity", 0), n.transition(400) }), 1e3)), r("scrollbardragend", e), s.snaponrelease && t.slidetoclosest()) } function c(e) { const { scrollbar: s, toucheventstouch: a, toucheventsdesktop: i, params: r, support: l } = t, o = s.$el; if (!o) return; const d = o[0], c = !(!l.passivelistener || !r.passivelisteners) && { passive: !1, capture: !1 }, p = !(!l.passivelistener || !r.passivelisteners) && { passive: !0, capture: !1 }; if (!d) return; const u = "on" === e ? "addeventlistener" : "removeeventlistener"; l.touch ? (d[u](a.start, x, c), d[u](a.move, y, c), d[u](a.end, e, p)) : (d[u](i.start, x, c), n[u](i.move, y, c), n[u](i.end, e, p)) } function t() { const { scrollbar: e, $el: s } = t; t.params.scrollbar = f(t, t.originalparams.scrollbar, t.params.scrollbar, { el: "swiper-scrollbar" }); const a = t.params.scrollbar; if (!a.el) return; let i = d(a.el); t.params.uniquenavelements && "string" == typeof a.el && i.length > 1 && 1 === s.find(a.el) .length && (i = s.find(a.el)), i.addclass(t.ishorizontal() ? a.horizontalclass : a .verticalclass); let r = i.find(`.${t.params.scrollbar.dragclass}`); 0 === r.length && (r = d(`
`), i.append( r)), object.assign(e, { $el: i, el: i[0], $dragel: r, dragel: r[0] }), a.draggable && t.params.scrollbar.el && t.scrollbar.el && c("on"), i && i[t .enabled ? "removeclass" : "addclass"](t.params.scrollbar.lockclass) } function $() { const e = t.params.scrollbar, s = t.scrollbar.$el; s && s.removeclass(t.ishorizontal() ? e.horizontalclass : e.verticalclass), t.params .scrollbar.el && t.scrollbar.el && c("off") } s({ scrollbar: { el: null, dragsize: "auto", hide: !1, draggable: !1, snaponrelease: !0, lockclass: "swiper-scrollbar-lock", dragclass: "swiper-scrollbar-drag", scrollbardisabledclass: "swiper-scrollbar-disabled", horizontalclass: "swiper-scrollbar-horizontal", verticalclass: "swiper-scrollbar-vertical" } }), t.scrollbar = { el: null, dragel: null, $el: null, $dragel: null }, i("init", (() => { !1 === t.params.scrollbar.enabled ? s() : (t(), v(), g()) })), i("update resize observerupdate lock unlock", (() => { v() })), i("settranslate", (() => { g() })), i("settransition", ((e, s) => { ! function(e) { t.params.scrollbar.el && t.scrollbar.el && t.scrollbar.$dragel.transition(e) }(s) })), i("enable disable", (() => { const { $el: e } = t.scrollbar; e && e[t.enabled ? "removeclass" : "addclass"](t.params.scrollbar.lockclass) })), i("destroy", (() => { $() })); const s = () => { t.$el.addclass(t.params.scrollbar.scrollbardisabledclass), t.scrollbar.$el && t .scrollbar.$el.addclass(t.params.scrollbar.scrollbardisabledclass), $() }; object.assign(t.scrollbar, { enable: () => { t.$el.removeclass(t.params.scrollbar.scrollbardisabledclass), t.scrollbar .$el && t.scrollbar.$el.removeclass(t.params.scrollbar .scrollbardisabledclass), t(), v(), g() }, disable: s, updatesize: v, settranslate: g, init: t, destroy: $ }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ parallax: { enabled: !1 } }); const i = (e, s) => { const { rtl: a } = t, i = d(e), r = a ? -1 : 1, n = i.attr("data-swiper-parallax") || "0"; let l = i.attr("data-swiper-parallax-x"), o = i.attr("data-swiper-parallax-y"); const c = i.attr("data-swiper-parallax-scale"), p = i.attr("data-swiper-parallax-opacity"); if (l || o ? (l = l || "0", o = o || "0") : t.ishorizontal() ? (l = n, o = "0") : (o = n, l = "0"), l = l.indexof("%") >= 0 ? parseint(l, 10) * s * r + "%" : l * s * r + "px", o = o.indexof("%") >= 0 ? parseint(o, 10) * s + "%" : o * s + "px", null != p) { const e = p - (p - 1) * (1 - math.abs(s)); i[0].style.opacity = e } if (null == c) i.transform(`translate3d(${l}, ${o}, 0px)`); else { const e = c - (c - 1) * (1 - math.abs(s)); i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`) } }, r = () => { const { $el: e, slides: s, progress: a, snapgrid: r } = t; e.children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each((e => { i(e, a) })), s.each(((e, s) => { let n = e.progress; t.params.slidespergroup > 1 && "auto" !== t.params.slidesperview && ( n += math.ceil(s / 2) - a * (r.length - 1)), n = math.min(math .max(n, -1), 1), d(e).find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each((e => { i(e, n) })) })) }; a("beforeinit", (() => { t.params.parallax.enabled && (t.params.watchslidesprogress = !0, t .originalparams.watchslidesprogress = !0) })), a("init", (() => { t.params.parallax.enabled && r() })), a("settranslate", (() => { t.params.parallax.enabled && r() })), a("settransition", ((e, s) => { t.params.parallax.enabled && function(e) { void 0 === e && (e = t.params.speed); const { $el: s } = t; s.find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]") .each((t => { const s = d(t); let a = parseint(s.attr( "data-swiper-parallax-duration"), 10) || e; 0 === e && (a = 0), s.transition(a) })) }(s) })) }, function(e) { let { swiper: t, extendparams: s, on: a, emit: i } = e; const n = r(); s({ zoom: { enabled: !1, maxratio: 3, minratio: 1, toggle: !0, containerclass: "swiper-zoom-container", zoomedslideclass: "swiper-slide-zoomed" } }), t.zoom = { enabled: !1 }; let l, o, c, p = 1, u = !1; const m = { $slideel: void 0, slidewidth: void 0, slideheight: void 0, $imageel: void 0, $imagewrapel: void 0, maxratio: 3 }, f = { istouched: void 0, ismoved: void 0, currentx: void 0, currenty: void 0, minx: void 0, miny: void 0, maxx: void 0, maxy: void 0, width: void 0, height: void 0, startx: void 0, starty: void 0, touchesstart: {}, touchescurrent: {} }, g = { x: void 0, y: void 0, prevpositionx: void 0, prevpositiony: void 0, prevtime: void 0 }; let v = 1; function w(e) { if (e.targettouches.length < 2) return 1; const t = e.targettouches[0].pagex, s = e.targettouches[0].pagey, a = e.targettouches[1].pagex, i = e.targettouches[1].pagey; return math.sqrt((a - t) ** 2 + (i - s) ** 2) } function b(e) { const s = t.support, a = t.params.zoom; if (o = !1, c = !1, !s.gestures) { if ("touchstart" !== e.type || "touchstart" === e.type && e.targettouches.length < 2) return; o = !0, m.scalestart = w(e) } m.$slideel && m.$slideel.length || (m.$slideel = d(e.target).closest( `.${t.params.slideclass}`), 0 === m.$slideel.length && (m.$slideel = t.slides .eq(t.activeindex)), m.$imageel = m.$slideel.find(`.${a.containerclass}`).eq(0) .find("picture, img, svg, canvas, .swiper-zoom-target").eq(0), m.$imagewrapel = m .$imageel.parent(`.${a.containerclass}`), m.maxratio = m.$imagewrapel.attr( "data-swiper-zoom") || a.maxratio, 0 !== m.$imagewrapel.length) ? (m.$imageel && m.$imageel.transition(0), u = !0) : m.$imageel = void 0 } function x(e) { const s = t.support, a = t.params.zoom, i = t.zoom; if (!s.gestures) { if ("touchmove" !== e.type || "touchmove" === e.type && e.targettouches.length < 2) return; c = !0, m.scalemove = w(e) } m.$imageel && 0 !== m.$imageel.length ? (s.gestures ? i.scale = e.scale * p : i.scale = m .scalemove / m.scalestart * p, i.scale > m.maxratio && (i.scale = m.maxratio - 1 + ( i.scale - m.maxratio + 1) ** .5), i.scale < a.minratio && (i.scale = a .minratio + 1 - (a.minratio - i.scale + 1) ** .5), m.$imageel.transform( `translate3d(0,0,0) scale(${i.scale})`)) : "gesturechange" === e.type && b(e) } function y(e) { const s = t.device, a = t.support, i = t.params.zoom, r = t.zoom; if (!a.gestures) { if (!o || !c) return; if ("touchend" !== e.type || "touchend" === e.type && e.changedtouches.length < 2 && !s .android) return; o = !1, c = !1 } m.$imageel && 0 !== m.$imageel.length && (r.scale = math.max(math.min(r.scale, m.maxratio), i.minratio), m.$imageel.transition(t.params.speed).transform( `translate3d(0,0,0) scale(${r.scale})`), p = r.scale, u = !1, 1 === r.scale && ( m.$slideel = void 0)) } function e(e) { const s = t.zoom; if (!m.$imageel || 0 === m.$imageel.length) return; if (t.allowclick = !1, !f.istouched || !m.$slideel) return; f.ismoved || (f.width = m.$imageel[0].offsetwidth, f.height = m.$imageel[0].offsetheight, f .startx = h(m.$imagewrapel[0], "x") || 0, f.starty = h(m.$imagewrapel[0], "y") || 0, m.slidewidth = m.$slideel[0].offsetwidth, m.slideheight = m.$slideel[0] .offsetheight, m.$imagewrapel.transition(0)); const a = f.width * s.scale, i = f.height * s.scale; if (!(a < m.slidewidth && i < m.slideheight)) { if (f.minx = math.min(m.slidewidth / 2 - a / 2, 0), f.maxx = -f.minx, f.miny = math.min( m.slideheight / 2 - i / 2, 0), f.maxy = -f.miny, f.touchescurrent.x = "touchmove" === e.type ? e.targettouches[0].pagex : e.pagex, f.touchescurrent.y = "touchmove" === e.type ? e.targettouches[0].pagey : e.pagey, !f.ismoved && !u) { if (t.ishorizontal() && (math.floor(f.minx) === math.floor(f.startx) && f .touchescurrent.x < f.touchesstart.x || math.floor(f.maxx) === math.floor(f .startx) && f.touchescurrent.x > f.touchesstart.x)) return void(f .istouched = !1); if (!t.ishorizontal() && (math.floor(f.miny) === math.floor(f.starty) && f .touchescurrent.y < f.touchesstart.y || math.floor(f.maxy) === math.floor(f .starty) && f.touchescurrent.y > f.touchesstart.y)) return void(f .istouched = !1) } e.cancelable && e.preventdefault(), e.stoppropagation(), f.ismoved = !0, f.currentx = f .touchescurrent.x - f.touchesstart.x + f.startx, f.currenty = f.touchescurrent.y - f .touchesstart.y + f.starty, f.currentx < f.minx && (f.currentx = f.minx + 1 - (f .minx - f.currentx + 1) ** .8), f.currentx > f.maxx && (f.currentx = f.maxx - 1 + (f.currentx - f.maxx + 1) ** .8), f.currenty < f.miny && (f.currenty = f .miny + 1 - (f.miny - f.currenty + 1) ** .8), f.currenty > f.maxy && (f .currenty = f.maxy - 1 + (f.currenty - f.maxy + 1) ** .8), g.prevpositionx || (g .prevpositionx = f.touchescurrent.x), g.prevpositiony || (g.prevpositiony = f .touchescurrent.y), g.prevtime || (g.prevtime = date.now()), g.x = (f .touchescurrent.x - g.prevpositionx) / (date.now() - g.prevtime) / 2, g.y = (f .touchescurrent.y - g.prevpositiony) / (date.now() - g.prevtime) / 2, math.abs(f .touchescurrent.x - g.prevpositionx) < 2 && (g.x = 0), math.abs(f.touchescurrent .y - g.prevpositiony) < 2 && (g.y = 0), g.prevpositionx = f.touchescurrent.x, g .prevpositiony = f.touchescurrent.y, g.prevtime = date.now(), m.$imagewrapel .transform(`translate3d(${f.currentx}px, ${f.currenty}px,0)`) } } function c() { const e = t.zoom; m.$slideel && t.previousindex !== t.activeindex && (m.$imageel && m.$imageel.transform( "translate3d(0,0,0) scale(1)"), m.$imagewrapel && m.$imagewrapel.transform( "translate3d(0,0,0)"), e.scale = 1, p = 1, m.$slideel = void 0, m.$imageel = void 0, m.$imagewrapel = void 0) } function t(e) { const s = t.zoom, a = t.params.zoom; if (m.$slideel || (e && e.target && (m.$slideel = d(e.target).closest( `.${t.params.slideclass}`)), m.$slideel || (t.params.virtual && t.params.virtual .enabled && t.virtual ? m.$slideel = t.$wrapperel.children( `.${t.params.slideactiveclass}`) : m.$slideel = t.slides.eq(t.activeindex)), m.$imageel = m.$slideel.find(`.${a.containerclass}`).eq(0).find( "picture, img, svg, canvas, .swiper-zoom-target").eq(0), m.$imagewrapel = m .$imageel.parent(`.${a.containerclass}`)), !m.$imageel || 0 === m.$imageel.length || !m.$imagewrapel || 0 === m.$imagewrapel.length) return; let i, r, l, o, c, u, h, g, v, w, b, x, y, e, c, t, $, s; t.params.cssmode && (t.wrapperel.style.overflow = "hidden", t.wrapperel.style.touchaction = "none"), m.$slideel.addclass(`${a.zoomedslideclass}`), void 0 === f.touchesstart .x && e ? (i = "touchend" === e.type ? e.changedtouches[0].pagex : e.pagex, r = "touchend" === e.type ? e.changedtouches[0].pagey : e.pagey) : (i = f.touchesstart .x, r = f.touchesstart.y), s.scale = m.$imagewrapel.attr("data-swiper-zoom") || a .maxratio, p = m.$imagewrapel.attr("data-swiper-zoom") || a.maxratio, e ? ($ = m .$slideel[0].offsetwidth, s = m.$slideel[0].offsetheight, l = m.$slideel.offset() .left + n.scrollx, o = m.$slideel.offset().top + n.scrolly, c = l + $ / 2 - i, u = o + s / 2 - r, v = m.$imageel[0].offsetwidth, w = m.$imageel[0].offsetheight, b = v * s.scale, x = w * s.scale, y = math.min($ / 2 - b / 2, 0), e = math.min(s / 2 - x / 2, 0), c = -y, t = -e, h = c * s.scale, g = u * s.scale, h < y && (h = y), h > c && (h = c), g < e && (g = e), g > t && (g = t)) : (h = 0, g = 0), m .$imagewrapel.transition(300).transform(`translate3d(${h}px, ${g}px,0)`), m.$imageel .transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`) } function $() { const e = t.zoom, s = t.params.zoom; m.$slideel || (t.params.virtual && t.params.virtual.enabled && t.virtual ? m.$slideel = t .$wrapperel.children(`.${t.params.slideactiveclass}`) : m.$slideel = t.slides.eq(t .activeindex), m.$imageel = m.$slideel.find(`.${s.containerclass}`).eq(0).find( "picture, img, svg, canvas, .swiper-zoom-target").eq(0), m.$imagewrapel = m .$imageel.parent(`.${s.containerclass}`)), m.$imageel && 0 !== m.$imageel.length && m.$imagewrapel && 0 !== m.$imagewrapel.length && (t.params.cssmode && (t.wrapperel.style .overflow = "", t.wrapperel.style.touchaction = ""), e.scale = 1, p = 1, m .$imagewrapel.transition(300).transform("translate3d(0,0,0)"), m.$imageel .transition(300).transform("translate3d(0,0,0) scale(1)"), m.$slideel.removeclass( `${s.zoomedslideclass}`), m.$slideel = void 0) } function s(e) { const s = t.zoom; s.scale && 1 !== s.scale ? $() : t(e) } function m() { const e = t.support; return { passivelistener: !("touchstart" !== t.touchevents.start || !e.passivelistener || !t .params.passivelisteners) && { passive: !0, capture: !1 }, activelistenerwithcapture: !e.passivelistener || { passive: !1, capture: !0 } } } function p() { return `.${t.params.slideclass}` } function k(e) { const { passivelistener: s } = m(), a = p(); t.$wrapperel[e]("gesturestart", a, b, s), t.$wrapperel[e]("gesturechange", a, x, s), t .$wrapperel[e]("gestureend", a, y, s) } function z() { l || (l = !0, k("on")) } function l() { l && (l = !1, k("off")) } function o() { const e = t.zoom; if (e.enabled) return; e.enabled = !0; const s = t.support, { passivelistener: a, activelistenerwithcapture: i } = m(), r = p(); s.gestures ? (t.$wrapperel.on(t.touchevents.start, z, a), t.$wrapperel.on(t.touchevents.end, l, a)) : "touchstart" === t.touchevents.start && (t.$wrapperel.on(t.touchevents .start, r, b, a), t.$wrapperel.on(t.touchevents.move, r, x, i), t.$wrapperel.on( t.touchevents.end, r, y, a), t.touchevents.cancel && t.$wrapperel.on(t .touchevents.cancel, r, y, a)), t.$wrapperel.on(t.touchevents.move, `.${t.params.zoom.containerclass}`, e, i) } function i() { const e = t.zoom; if (!e.enabled) return; const s = t.support; e.enabled = !1; const { passivelistener: a, activelistenerwithcapture: i } = m(), r = p(); s.gestures ? (t.$wrapperel.off(t.touchevents.start, z, a), t.$wrapperel.off(t.touchevents .end, l, a)) : "touchstart" === t.touchevents.start && (t.$wrapperel.off(t .touchevents.start, r, b, a), t.$wrapperel.off(t.touchevents.move, r, x, i), t .$wrapperel.off(t.touchevents.end, r, y, a), t.touchevents.cancel && t.$wrapperel .off(t.touchevents.cancel, r, y, a)), t.$wrapperel.off(t.touchevents.move, `.${t.params.zoom.containerclass}`, e, i) } object.defineproperty(t.zoom, "scale", { get: () => v, set(e) { if (v !== e) { const t = m.$imageel ? m.$imageel[0] : void 0, s = m.$slideel ? m.$slideel[0] : void 0; i("zoomchange", e, t, s) } v = e } }), a("init", (() => { t.params.zoom.enabled && o() })), a("destroy", (() => { i() })), a("touchstart", ((e, s) => { t.zoom.enabled && function(e) { const s = t.device; m.$imageel && 0 !== m.$imageel.length && (f.istouched || (s.android && e .cancelable && e.preventdefault(), f.istouched = !0, f .touchesstart.x = "touchstart" === e.type ? e.targettouches[ 0].pagex : e.pagex, f.touchesstart.y = "touchstart" === e.type ? e.targettouches[0].pagey : e.pagey)) }(s) })), a("touchend", ((e, s) => { t.zoom.enabled && function() { const e = t.zoom; if (!m.$imageel || 0 === m.$imageel.length) return; if (!f.istouched || !f.ismoved) return f.istouched = !1, void(f .ismoved = !1); f.istouched = !1, f.ismoved = !1; let s = 300, a = 300; const i = g.x * s, r = f.currentx + i, n = g.y * a, l = f.currenty + n; 0 !== g.x && (s = math.abs((r - f.currentx) / g.x)), 0 !== g.y && (a = math.abs((l - f.currenty) / g.y)); const o = math.max(s, a); f.currentx = r, f.currenty = l; const d = f.width * e.scale, c = f.height * e.scale; f.minx = math.min(m.slidewidth / 2 - d / 2, 0), f.maxx = -f.minx, f .miny = math.min(m.slideheight / 2 - c / 2, 0), f.maxy = -f.miny, f .currentx = math.max(math.min(f.currentx, f.maxx), f.minx), f .currenty = math.max(math.min(f.currenty, f.maxy), f.miny), m .$imagewrapel.transition(o).transform( `translate3d(${f.currentx}px, ${f.currenty}px,0)`) }() })), a("doubletap", ((e, s) => { !t.animating && t.params.zoom.enabled && t.zoom.enabled && t.params.zoom .toggle && s(s) })), a("transitionend", (() => { t.zoom.enabled && t.params.zoom.enabled && c() })), a("slidechange", (() => { t.zoom.enabled && t.params.zoom.enabled && t.params.cssmode && c() })), object.assign(t.zoom, { enable: o, disable: i, in: t, out: $, toggle: s }) }, function(e) { let { swiper: t, extendparams: s, on: a, emit: i } = e; s({ lazy: { checkinview: !1, enabled: !1, loadprevnext: !1, loadprevnextamount: 1, loadontransitionstart: !1, scrollingelement: "", elementclass: "swiper-lazy", loadingclass: "swiper-lazy-loading", loadedclass: "swiper-lazy-loaded", preloaderclass: "swiper-lazy-preloader" } }), t.lazy = {}; let n = !1, l = !1; function o(e, s) { void 0 === s && (s = !0); const a = t.params.lazy; if (void 0 === e) return; if (0 === t.slides.length) return; const r = t.virtual && t.params.virtual.enabled ? t.$wrapperel.children( `.${t.params.slideclass}[data-swiper-slide-index="${e}"]`) : t.slides.eq(e), n = r.find(`.${a.elementclass}:not(.${a.loadedclass}):not(.${a.loadingclass})`); !r.hasclass(a.elementclass) || r.hasclass(a.loadedclass) || r.hasclass(a.loadingclass) || n .push(r[0]), 0 !== n.length && n.each((e => { const n = d(e); n.addclass(a.loadingclass); const l = n.attr("data-background"), c = n.attr("data-src"), p = n.attr("data-srcset"), u = n.attr("data-sizes"), h = n.parent("picture"); t.loadimage(n[0], c || l, p, u, !1, (() => { if (null != t && t && (!t || t.params) && !t.destroyed) { if (l ? (n.css("background-image", `url("${l}")`), n .removeattr("data-background")) : (p && (n.attr( "srcset", p), n.removeattr( "data-srcset")), u && (n.attr("sizes", u), n .removeattr("data-sizes")), h.length && h .children("source").each((e => { const t = d(e); t.attr("data-srcset") && (t.attr( "srcset", t.attr( "data-srcset")), t .removeattr("data-srcset")) })), c && (n.attr("src", c), n.removeattr( "data-src"))), n.addclass(a.loadedclass) .removeclass(a.loadingclass), r.find( `.${a.preloaderclass}`).remove(), t.params .loop && s) { const e = r.attr("data-swiper-slide-index"); if (r.hasclass(t.params.slideduplicateclass)) { o(t.$wrapperel.children( `[data-swiper-slide-index="${e}"]:not(.${t.params.slideduplicateclass})` ).index(), !1) } else { o(t.$wrapperel.children( `.${t.params.slideduplicateclass}[data-swiper-slide-index="${e}"]` ).index(), !1) } } i("lazyimageready", r[0], n[0]), t.params.autoheight && t.updateautoheight() } })), i("lazyimageload", r[0], n[0]) })) } function c() { const { $wrapperel: e, params: s, slides: a, activeindex: i } = t, r = t.virtual && s.virtual.enabled, n = s.lazy; let c = s.slidesperview; function p(t) { if (r) { if (e.children(`.${s.slideclass}[data-swiper-slide-index="${t}"]`).length) return !0 } else if (a[t]) return !0; return !1 } function u(e) { return r ? d(e).attr("data-swiper-slide-index") : d(e).index() } if ("auto" === c && (c = 0), l || (l = !0), t.params.watchslidesprogress) e.children( `.${s.slidevisibleclass}`).each((e => { o(r ? d(e).attr("data-swiper-slide-index") : d(e).index()) })); else if (c > 1) for (let e = i; e < i + c; e += 1) p(e) && o(e); else o(i); if (n.loadprevnext) if (c > 1 || n.loadprevnextamount && n.loadprevnextamount > 1) { const e = n.loadprevnextamount, t = math.ceil(c), s = math.min(i + t + math.max(e, t), a.length), r = math.max(i - math.max(t, e), 0); for (let e = i + t; e < s; e += 1) p(e) && o(e); for (let e = r; e < i; e += 1) p(e) && o(e) } else { const t = e.children(`.${s.slidenextclass}`); t.length > 0 && o(u(t)); const a = e.children(`.${s.slideprevclass}`); a.length > 0 && o(u(a)) } } function p() { const e = r(); if (!t || t.destroyed) return; const s = t.params.lazy.scrollingelement ? d(t.params.lazy.scrollingelement) : d(e), a = s[0] === e, i = a ? e.innerwidth : s[0].offsetwidth, l = a ? e.innerheight : s[0].offsetheight, o = t.$el.offset(), { rtltranslate: u } = t; let h = !1; u && (o.left -= t.$el[0].scrollleft); const m = [ [o.left, o.top], [o.left + t.width, o.top], [o.left, o.top + t.height], [o.left + t.width, o.top + t.height] ]; for (let e = 0; e < m.length; e += 1) { const t = m[e]; if (t[0] >= 0 && t[0] <= i && t[1] >= 0 && t[1] <= l) { if (0 === t[0] && 0 === t[1]) continue; h = !0 } } const f = !("touchstart" !== t.touchevents.start || !t.support.passivelistener || !t.params .passivelisteners) && { passive: !0, capture: !1 }; h ? (c(), s.off("scroll", p, f)) : n || (n = !0, s.on("scroll", p, f)) } a("beforeinit", (() => { t.params.lazy.enabled && t.params.preloadimages && (t.params.preloadimages = !1) })), a("init", (() => { t.params.lazy.enabled && (t.params.lazy.checkinview ? p() : c()) })), a("scroll", (() => { t.params.freemode && t.params.freemode.enabled && !t.params.freemode.sticky && c() })), a("scrollbardragmove resize _freemodenomomentumrelease", (() => { t.params.lazy.enabled && (t.params.lazy.checkinview ? p() : c()) })), a("transitionstart", (() => { t.params.lazy.enabled && (t.params.lazy.loadontransitionstart || !t.params.lazy .loadontransitionstart && !l) && (t.params.lazy.checkinview ? p() : c()) })), a("transitionend", (() => { t.params.lazy.enabled && !t.params.lazy.loadontransitionstart && (t.params.lazy .checkinview ? p() : c()) })), a("slidechange", (() => { const { lazy: e, cssmode: s, watchslidesprogress: a, touchreleaseonedges: i, resistanceratio: r } = t.params; e.enabled && (s || a && (i || 0 === r)) && c() })), a("destroy", (() => { t.$el && t.$el.find(`.${t.params.lazy.loadingclass}`).removeclass(t.params.lazy .loadingclass) })), object.assign(t.lazy, { load: c, loadinslide: o }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; function i(e, t) { const s = function() { let e, t, s; return (a, i) => { for (t = -1, e = a.length; e - t > 1;) s = e + t >> 1, a[s] <= i ? t = s : e = s; return e } }(); let a, i; return this.x = e, this.y = t, this.lastindex = e.length - 1, this.interpolate = function( e) { return e ? (i = s(this.x, e), a = i - 1, (e - this.x[a]) * (this.y[i] - this.y[a]) / (this.x[i] - this.x[a]) + this.y[a]) : 0 }, this } function r() { t.controller.control && t.controller.spline && (t.controller.spline = void 0, delete t .controller.spline) } s({ controller: { control: void 0, inverse: !1, by: "slide" } }), t.controller = { control: void 0 }, a("beforeinit", (() => { t.controller.control = t.params.controller.control })), a("update", (() => { r() })), a("resize", (() => { r() })), a("observerupdate", (() => { r() })), a("settranslate", ((e, s, a) => { t.controller.control && t.controller.settranslate(s, a) })), a("settransition", ((e, s, a) => { t.controller.control && t.controller.settransition(s, a) })), object.assign(t.controller, { settranslate: function(e, s) { const a = t.controller.control; let r, n; const l = t.constructor; function o(e) { const s = t.rtltranslate ? -t.translate : t.translate; "slide" === t.params.controller.by && (! function(e) { t.controller.spline || (t.controller.spline = t.params .loop ? new i(t.slidesgrid, e.slidesgrid) : new i(t .snapgrid, e.snapgrid)) }(e), n = -t.controller.spline.interpolate(-s)), n && "container" !== t.params.controller.by || (r = (e.maxtranslate() - e .mintranslate()) / (t.maxtranslate() - t.mintranslate()), n = (s - t.mintranslate()) * r + e.mintranslate()), t.params .controller.inverse && (n = e.maxtranslate() - n), e.updateprogress( n), e.settranslate(n, t), e.updateactiveindex(), e .updateslidesclasses() } if (array.isarray(a)) for (let e = 0; e < a.length; e += 1) a[e] !== s && a[e] instanceof l && o(a[e]); else a instanceof l && s !== a && o(a) }, settransition: function(e, s) { const a = t.constructor, i = t.controller.control; let r; function n(s) { s.settransition(e, t), 0 !== e && (s.transitionstart(), s.params .autoheight && p((() => { s.updateautoheight() })), s.$wrapperel.transitionend((() => { i && (s.params.loop && "slide" === t.params .controller.by && s.loopfix(), s .transitionend()) }))) } if (array.isarray(i)) for (r = 0; r < i.length; r += 1) i[r] !== s && i[r] instanceof a && n( i[r]); else i instanceof a && s !== i && n(i) } }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ a11y: { enabled: !0, notificationclass: "swiper-notification", prevslidemessage: "previous slide", nextslidemessage: "next slide", firstslidemessage: "this is the first slide", lastslidemessage: "this is the last slide", paginationbulletmessage: "go to slide {{index}}", slidelabelmessage: "{{index}} / {{slideslength}}", containermessage: null, containerroledescriptionmessage: null, itemroledescriptionmessage: null, sliderole: "group", id: null } }); let i = null; function r(e) { const t = i; 0 !== t.length && (t.html(""), t.html(e)) } function n(e) { e.attr("tabindex", "0") } function l(e) { e.attr("tabindex", "-1") } function o(e, t) { e.attr("role", t) } function c(e, t) { e.attr("aria-roledescription", t) } function p(e, t) { e.attr("aria-label", t) } function u(e) { e.attr("aria-disabled", !0) } function h(e) { e.attr("aria-disabled", !1) } function m(e) { if (13 !== e.keycode && 32 !== e.keycode) return; const s = t.params.a11y, a = d(e.target); t.navigation && t.navigation.$nextel && a.is(t.navigation.$nextel) && (t.isend && !t.params .loop || t.slidenext(), t.isend ? r(s.lastslidemessage) : r(s.nextslidemessage)), t .navigation && t.navigation.$prevel && a.is(t.navigation.$prevel) && (t.isbeginning && ! t.params.loop || t.slideprev(), t.isbeginning ? r(s.firstslidemessage) : r(s .prevslidemessage)), t.pagination && a.is(u(t.params.pagination.bulletclass)) && a[0].click() } function f() { return t.pagination && t.pagination.bullets && t.pagination.bullets.length } function g() { return f() && t.params.pagination.clickable } const v = (e, t, s) => { n(e), "button" !== e[0].tagname && (o(e, "button"), e.on("keydown", m)), p(e, s), function(e, t) { e.attr("aria-controls", t) }(e, t) }, w = e => { const s = e.target.closest(`.${t.params.slideclass}`); if (!s || !t.slides.includes(s)) return; const a = t.slides.indexof(s) === t.activeindex, i = t.params.watchslidesprogress && t.visibleslides && t.visibleslides.includes(s); a || i || t.slideto(t.slides.indexof(s), 0) }, b = () => { const e = t.params.a11y; e.itemroledescriptionmessage && c(d(t.slides), e.itemroledescriptionmessage), e .sliderole && o(d(t.slides), e.sliderole); const s = t.params.loop ? t.slides.filter((e => !e.classlist.contains(t.params .slideduplicateclass))).length : t.slides.length; e.slidelabelmessage && t.slides.each(((a, i) => { const r = d(a), n = t.params.loop ? parseint(r.attr("data-swiper-slide-index"), 10) : i; p(r, e.slidelabelmessage.replace(/\{\{index\}\}/, n + 1).replace( /\{\{slideslength\}\}/, s)) })) }, x = () => { const e = t.params.a11y; t.$el.append(i); const s = t.$el; e.containerroledescriptionmessage && c(s, e.containerroledescriptionmessage), e .containermessage && p(s, e.containermessage); const a = t.$wrapperel, r = e.id || a.attr("id") || `swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>math.round(16*math.random()).tostring(16)))}`; var n; const l = t.params.autoplay && t.params.autoplay.enabled ? "off" : "polite"; var o; let d, u; o = r, a.attr("id", o), function(e, t) { e.attr("aria-live", t) }(a, l), b(), t.navigation && t.navigation.$nextel && (d = t.navigation.$nextel), t .navigation && t.navigation.$prevel && (u = t.navigation.$prevel), d && d.length && v(d, r, e.nextslidemessage), u && u.length && v(u, r, e.prevslidemessage), g() && t .pagination.$el.on("keydown", u(t.params.pagination.bulletclass), m), t.$el.on( "focus", w, !0) }; a("beforeinit", (() => { i = d( ``) })), a("afterinit", (() => { t.params.a11y.enabled && x() })), a("slideslengthchange snapgridlengthchange slidesgridlengthchange", (() => { t.params.a11y.enabled && b() })), a("fromedge toedge afterinit lock unlock", (() => { t.params.a11y.enabled && function() { if (t.params.loop || t.params.rewind || !t.navigation) return; const { $nextel: e, $prevel: s } = t.navigation; s && s.length > 0 && (t.isbeginning ? (u(s), l(s)) : (h(s), n(s))), e && e.length > 0 && (t.isend ? (u(e), l(e)) : (h(e), n(e))) }() })), a("paginationupdate", (() => { t.params.a11y.enabled && function() { const e = t.params.a11y; f() && t.pagination.bullets.each((s => { const a = d(s); t.params.pagination.clickable && (n(a), t.params .pagination.renderbullet || (o(a, "button"), p( a, e.paginationbulletmessage.replace( /\{\{index\}\}/, a.index() + 1)))), a .is(`.${t.params.pagination.bulletactiveclass}`) ? a .attr("aria-current", "true") : a.removeattr( "aria-current") })) }() })), a("destroy", (() => { t.params.a11y.enabled && function() { let e, s; i && i.length > 0 && i.remove(), t.navigation && t.navigation.$nextel && (e = t.navigation.$nextel), t.navigation && t.navigation.$prevel && (s = t.navigation.$prevel), e && e.off("keydown", m), s && s.off( "keydown", m), g() && t.pagination.$el.off("keydown", u(t.params .pagination.bulletclass), m), t.$el.off("focus", w, !0) }() })) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ history: { enabled: !1, root: "", replacestate: !1, key: "slides", keepquery: !1 } }); let i = !1, n = {}; const l = e => e.tostring().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-") .replace(/^-+/, "").replace(/-+$/, ""), o = e => { const t = r(); let s; s = e ? new url(e) : t.location; const a = s.pathname.slice(1).split("/").filter((e => "" !== e)), i = a.length; return { key: a[i - 2], value: a[i - 1] } }, d = (e, s) => { const a = r(); if (!i || !t.params.history.enabled) return; let n; n = t.params.url ? new url(t.params.url) : a.location; const o = t.slides.eq(s); let d = l(o.attr("data-history")); if (t.params.history.root.length > 0) { let s = t.params.history.root; "/" === s[s.length - 1] && (s = s.slice(0, s.length - 1)), d = `${s}/${e}/${d}` } else n.pathname.includes(e) || (d = `${e}/${d}`); t.params.history.keepquery && (d += n.search); const c = a.history.state; c && c.value === d || (t.params.history.replacestate ? a.history.replacestate({ value: d }, null, d) : a.history.pushstate({ value: d }, null, d)) }, c = (e, s, a) => { if (s) for (let i = 0, r = t.slides.length; i < r; i += 1) { const r = t.slides.eq(i); if (l(r.attr("data-history")) === s && !r.hasclass(t.params .slideduplicateclass)) { const s = r.index(); t.slideto(s, e, a) } } else t.slideto(0, e, a) }, p = () => { n = o(t.params.url), c(t.params.speed, n.value, !1) }; a("init", (() => { t.params.history.enabled && (() => { const e = r(); if (t.params.history) { if (!e.history || !e.history.pushstate) return t.params.history .enabled = !1, void(t.params.hashnavigation.enabled = ! 0); i = !0, n = o(t.params.url), (n.key || n.value) && (c(0, n .value, t.params.runcallbacksoninit), t.params .history.replacestate || e.addeventlistener("popstate", p)) } })() })), a("destroy", (() => { t.params.history.enabled && (() => { const e = r(); t.params.history.replacestate || e.removeeventlistener("popstate", p) })() })), a("transitionend _freemodenomomentumrelease", (() => { i && d(t.params.history.key, t.activeindex) })), a("slidechange", (() => { i && t.params.cssmode && d(t.params.history.key, t.activeindex) })) }, function(e) { let { swiper: t, extendparams: s, emit: i, on: n } = e, l = !1; const o = a(), c = r(); s({ hashnavigation: { enabled: !1, replacestate: !1, watchstate: !1 } }); const p = () => { i("hashchange"); const e = o.location.hash.replace("#", ""); if (e !== t.slides.eq(t.activeindex).attr("data-hash")) { const s = t.$wrapperel.children(`.${t.params.slideclass}[data-hash="${e}"]`) .index(); if (void 0 === s) return; t.slideto(s) } }, u = () => { if (l && t.params.hashnavigation.enabled) if (t.params.hashnavigation.replacestate && c.history && c.history.replacestate) c .history.replacestate(null, null, `#${t.slides.eq(t.activeindex).attr("data-hash")}` || ""), i("hashset"); else { const e = t.slides.eq(t.activeindex), s = e.attr("data-hash") || e.attr("data-history"); o.location.hash = s || "", i("hashset") } }; n("init", (() => { t.params.hashnavigation.enabled && (() => { if (!t.params.hashnavigation.enabled || t.params.history && t.params .history.enabled) return; l = !0; const e = o.location.hash.replace("#", ""); if (e) { const s = 0; for (let a = 0, i = t.slides.length; a < i; a += 1) { const i = t.slides.eq(a); if ((i.attr("data-hash") || i.attr("data-history")) === e && !i.hasclass(t.params.slideduplicateclass)) { const e = i.index(); t.slideto(e, s, t.params.runcallbacksoninit, !0) } } } t.params.hashnavigation.watchstate && d(c).on("hashchange", p) })() })), n("destroy", (() => { t.params.hashnavigation.enabled && t.params.hashnavigation.watchstate && d(c) .off("hashchange", p) })), n("transitionend _freemodenomomentumrelease", (() => { l && u() })), n("slidechange", (() => { l && t.params.cssmode && u() })) }, function(e) { let t, { swiper: s, extendparams: i, on: r, emit: n } = e; function l() { const e = s.slides.eq(s.activeindex); let a = s.params.autoplay.delay; e.attr("data-swiper-autoplay") && (a = e.attr("data-swiper-autoplay") || s.params.autoplay .delay), cleartimeout(t), t = p((() => { let e; s.params.autoplay.reversedirection ? s.params.loop ? (s.loopfix(), e = s .slideprev(s.params.speed, !0, !0), n("autoplay")) : s.isbeginning ? s.params.autoplay.stoponlastslide ? d() : (e = s.slideto(s.slides .length - 1, s.params.speed, !0, !0), n("autoplay")) : (e = s .slideprev(s.params.speed, !0, !0), n("autoplay")) : s.params.loop ? (s.loopfix(), e = s.slidenext(s.params.speed, !0, !0), n("autoplay")) : s.isend ? s.params.autoplay.stoponlastslide ? d() : (e = s.slideto(0, s .params.speed, !0, !0), n("autoplay")) : (e = s.slidenext(s.params .speed, !0, !0), n("autoplay")), (s.params.cssmode && s.autoplay .running || !1 === e) && l() }), a) } function o() { return void 0 === t && (!s.autoplay.running && (s.autoplay.running = !0, n("autoplaystart"), l(), !0)) } function d() { return !!s.autoplay.running && (void 0 !== t && (t && (cleartimeout(t), t = void 0), s .autoplay.running = !1, n("autoplaystop"), !0)) } function c(e) { s.autoplay.running && (s.autoplay.paused || (t && cleartimeout(t), s.autoplay.paused = !0, 0 !== e && s.params.autoplay.waitfortransition ? ["transitionend", "webkittransitionend" ].foreach((e => { s.$wrapperel[0].addeventlistener(e, h) })) : (s.autoplay.paused = !1, l()))) } function u() { const e = a(); "hidden" === e.visibilitystate && s.autoplay.running && c(), "visible" === e .visibilitystate && s.autoplay.paused && (l(), s.autoplay.paused = !1) } function h(e) { s && !s.destroyed && s.$wrapperel && e.target === s.$wrapperel[0] && (["transitionend", "webkittransitionend" ].foreach((e => { s.$wrapperel[0].removeeventlistener(e, h) })), s.autoplay.paused = !1, s.autoplay.running ? l() : d()) } function m() { s.params.autoplay.disableoninteraction ? d() : (n("autoplaypause"), c()), ["transitionend", "webkittransitionend" ].foreach((e => { s.$wrapperel[0].removeeventlistener(e, h) })) } function f() { s.params.autoplay.disableoninteraction || (s.autoplay.paused = !1, n("autoplayresume"), l()) } s.autoplay = { running: !1, paused: !1 }, i({ autoplay: { enabled: !1, delay: 3e3, waitfortransition: !0, disableoninteraction: !0, stoponlastslide: !1, reversedirection: !1, pauseonmouseenter: !1 } }), r("init", (() => { if (s.params.autoplay.enabled) { o(); a().addeventlistener("visibilitychange", u), s.params.autoplay .pauseonmouseenter && (s.$el.on("mouseenter", m), s.$el.on("mouseleave", f)) } })), r("beforetransitionstart", ((e, t, a) => { s.autoplay.running && (a || !s.params.autoplay.disableoninteraction ? s.autoplay .pause(t) : d()) })), r("sliderfirstmove", (() => { s.autoplay.running && (s.params.autoplay.disableoninteraction ? d() : c()) })), r("touchend", (() => { s.params.cssmode && s.autoplay.paused && !s.params.autoplay .disableoninteraction && l() })), r("destroy", (() => { s.$el.off("mouseenter", m), s.$el.off("mouseleave", f), s.autoplay.running && d(); a().removeeventlistener("visibilitychange", u) })), object.assign(s.autoplay, { pause: c, run: l, start: o, stop: d }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ thumbs: { swiper: null, multipleactivethumbs: !0, autoscrolloffset: 0, slidethumbactiveclass: "swiper-slide-thumb-active", thumbscontainerclass: "swiper-thumbs" } }); let i = !1, r = !1; function n() { const e = t.thumbs.swiper; if (!e || e.destroyed) return; const s = e.clickedindex, a = e.clickedslide; if (a && d(a).hasclass(t.params.thumbs.slidethumbactiveclass)) return; if (null == s) return; let i; if (i = e.params.loop ? parseint(d(e.clickedslide).attr("data-swiper-slide-index"), 10) : s, t.params.loop) { let e = t.activeindex; t.slides.eq(e).hasclass(t.params.slideduplicateclass) && (t.loopfix(), t._clientleft = t .$wrapperel[0].clientleft, e = t.activeindex); const s = t.slides.eq(e).prevall(`[data-swiper-slide-index="${i}"]`).eq(0).index(), a = t.slides.eq(e).nextall(`[data-swiper-slide-index="${i}"]`).eq(0).index(); i = void 0 === s ? a : void 0 === a ? s : a - e < e - s ? a : s } t.slideto(i) } function l() { const { thumbs: e } = t.params; if (i) return !1; i = !0; const s = t.constructor; if (e.swiper instanceof s) t.thumbs.swiper = e.swiper, object.assign(t.thumbs.swiper .originalparams, { watchslidesprogress: !0, slidetoclickedslide: !1 }), object.assign(t.thumbs.swiper.params, { watchslidesprogress: !0, slidetoclickedslide: !1 }); else if (m(e.swiper)) { const a = object.assign({}, e.swiper); object.assign(a, { watchslidesprogress: !0, slidetoclickedslide: !1 }), t.thumbs.swiper = new s(a), r = !0 } return t.thumbs.swiper.$el.addclass(t.params.thumbs.thumbscontainerclass), t.thumbs.swiper .on("tap", n), !0 } function o(e) { const s = t.thumbs.swiper; if (!s || s.destroyed) return; const a = "auto" === s.params.slidesperview ? s.slidesperviewdynamic() : s.params .slidesperview; let i = 1; const r = t.params.thumbs.slidethumbactiveclass; if (t.params.slidesperview > 1 && !t.params.centeredslides && (i = t.params.slidesperview), t.params.thumbs.multipleactivethumbs || (i = 1), i = math.floor(i), s.slides .removeclass(r), s.params.loop || s.params.virtual && s.params.virtual.enabled) for (let e = 0; e < i; e += 1) s.$wrapperel.children( `[data-swiper-slide-index="${t.realindex+e}"]`).addclass(r); else for (let e = 0; e < i; e += 1) s.slides.eq(t.realindex + e).addclass(r); const n = t.params.thumbs.autoscrolloffset, l = n && !s.params.loop; if (t.realindex !== s.realindex || l) { let i, r, o = s.activeindex; if (s.params.loop) { s.slides.eq(o).hasclass(s.params.slideduplicateclass) && (s.loopfix(), s ._clientleft = s.$wrapperel[0].clientleft, o = s.activeindex); const e = s.slides.eq(o).prevall(`[data-swiper-slide-index="${t.realindex}"]`).eq(0) .index(), a = s.slides.eq(o).nextall(`[data-swiper-slide-index="${t.realindex}"]`).eq(0) .index(); i = void 0 === e ? a : void 0 === a ? e : a - o == o - e ? s.params.slidespergroup > 1 ? a : o : a - o < o - e ? a : e, r = t.activeindex > t.previousindex ? "next" : "prev" } else i = t.realindex, r = i > t.previousindex ? "next" : "prev"; l && (i += "next" === r ? n : -1 * n), s.visibleslidesindexes && s.visibleslidesindexes .indexof(i) < 0 && (s.params.centeredslides ? i = i > o ? i - math.floor(a / 2) + 1 : i + math.floor(a / 2) - 1 : i > o && s.params.slidespergroup, s.slideto(i, e ? 0 : void 0)) } } t.thumbs = { swiper: null }, a("beforeinit", (() => { const { thumbs: e } = t.params; e && e.swiper && (l(), o(!0)) })), a("slidechange update resize observerupdate", (() => { o() })), a("settransition", ((e, s) => { const a = t.thumbs.swiper; a && !a.destroyed && a.settransition(s) })), a("beforedestroy", (() => { const e = t.thumbs.swiper; e && !e.destroyed && r && e.destroy() })), object.assign(t.thumbs, { init: l, update: o }) }, function(e) { let { swiper: t, extendparams: s, emit: a, once: i } = e; s({ freemode: { enabled: !1, momentum: !0, momentumratio: 1, momentumbounce: !0, momentumbounceratio: 1, momentumvelocityratio: 1, sticky: !1, minimumvelocity: .02 } }), object.assign(t, { freemode: { ontouchstart: function() { const e = t.gettranslate(); t.settranslate(e), t.settransition(0), t.toucheventsdata.velocities .length = 0, t.freemode.ontouchend({ currentpos: t.rtl ? t.translate : -t.translate }) }, ontouchmove: function() { const { toucheventsdata: e, touches: s } = t; 0 === e.velocities.length && e.velocities.push({ position: s[t.ishorizontal() ? "startx" : "starty"], time: e.touchstarttime }), e.velocities.push({ position: s[t.ishorizontal() ? "currentx" : "currenty"], time: u() }) }, ontouchend: function(e) { let { currentpos: s } = e; const { params: r, $wrapperel: n, rtltranslate: l, snapgrid: o, toucheventsdata: d } = t, c = u() - d.touchstarttime; if (s < -t.mintranslate()) t.slideto(t.activeindex); else if (s > -t.maxtranslate()) t.slides.length < o.length ? t.slideto(o .length - 1) : t.slideto(t.slides.length - 1); else { if (r.freemode.momentum) { if (d.velocities.length > 1) { const e = d.velocities.pop(), s = d.velocities.pop(), a = e.position - s.position, i = e.time - s.time; t.velocity = a / i, t.velocity /= 2, math.abs(t.velocity) < r.freemode.minimumvelocity && (t.velocity = 0), (i > 150 || u() - e.time > 300) && (t.velocity = 0) } else t.velocity = 0; t.velocity *= r.freemode.momentumvelocityratio, d.velocities .length = 0; let e = 1e3 * r.freemode.momentumratio; const s = t.velocity * e; let c = t.translate + s; l && (c = -c); let p, h = !1; const m = 20 * math.abs(t.velocity) * r.freemode .momentumbounceratio; let f; if (c < t.maxtranslate()) r.freemode.momentumbounce ? (c + t .maxtranslate() < -m && (c = t.maxtranslate() - m), p = t.maxtranslate(), h = !0, d.allowmomentumbounce = !0) : c = t.maxtranslate(), r.loop && r.centeredslides && (f = ! 0); else if (c > t.mintranslate()) r.freemode.momentumbounce ? (c - t.mintranslate() > m && (c = t.mintranslate() + m), p = t.mintranslate(), h = !0, d.allowmomentumbounce = !0) : c = t.mintranslate(), r.loop && r.centeredslides && (f = ! 0); else if (r.freemode.sticky) { let e; for (let t = 0; t < o.length; t += 1) if (o[t] > -c) { e = t; break } c = math.abs(o[e] - c) < math.abs(o[e - 1] - c) || "next" === t.swipedirection ? o[e] : o[e - 1], c = -c } if (f && i("transitionend", (() => { t.loopfix() })), 0 !== t.velocity) { if (e = l ? math.abs((-c - t.translate) / t.velocity) : math .abs((c - t.translate) / t.velocity), r.freemode.sticky ) { const s = math.abs((l ? -c : c) - t.translate), a = t.slidessizesgrid[t.activeindex]; e = s < a ? r.speed : s < 2 * a ? 1.5 * r.speed : 2.5 * r.speed } } else if (r.freemode.sticky) return void t.slidetoclosest(); r.freemode.momentumbounce && h ? (t.updateprogress(p), t .settransition(e), t.settranslate(c), t.transitionstart( !0, t.swipedirection), t.animating = !0, n .transitionend((() => { t && !t.destroyed && d .allowmomentumbounce && (a( "momentumbounce"), t .settransition(r.speed), settimeout( (() => { t.settranslate(p), n .transitionend(( () => { t && !t .destroyed && t .transitionend() })) }), 0)) }))) : t.velocity ? (a("_freemodenomomentumrelease"), t .updateprogress(c), t.settransition(e), t.settranslate( c), t.transitionstart(!0, t.swipedirection), t .animating || (t.animating = !0, n.transitionend(( () => { t && !t.destroyed && t.transitionend() })))) : t.updateprogress(c), t.updateactiveindex(), t .updateslidesclasses() } else { if (r.freemode.sticky) return void t.slidetoclosest(); r.freemode && a("_freemodenomomentumrelease") }(!r.freemode.momentum || c >= r.longswipesms) && (t .updateprogress(), t.updateactiveindex(), t .updateslidesclasses()) } } } }) }, function(e) { let t, s, a, { swiper: i, extendparams: r } = e; r({ grid: { rows: 1, fill: "column" } }), i.grid = { initslides: e => { const { slidesperview: r } = i.params, { rows: n, fill: l } = i.params.grid; s = t / n, a = math.floor(e / n), t = math.floor(e / n) === e / n ? e : math .ceil(e / n) * n, "auto" !== r && "row" === l && (t = math.max(t, r * n)) }, updateslide: (e, r, n, l) => { const { slidespergroup: o, spacebetween: d } = i.params, { rows: c, fill: p } = i.params.grid; let u, h, m; if ("row" === p && o > 1) { const s = math.floor(e / (o * c)), a = e - c * o * s, i = 0 === s ? o : math.min(math.ceil((n - s * c * o) / c), o); m = math.floor(a / i), h = a - m * i + s * o, u = h + m * t / c, r.css({ "-webkit-order": u, order: u }) } else "column" === p ? (h = math.floor(e / c), m = e - h * c, (h > a || h === a && m === c - 1) && (m += 1, m >= c && (m = 0, h += 1))) : (m = math .floor(e / s), h = e - m * s); r.css(l("margin-top"), 0 !== m ? d && `${d}px` : "") }, updatewrappersize: (e, s, a) => { const { spacebetween: r, centeredslides: n, roundlengths: l } = i.params, { rows: o } = i.params.grid; if (i.virtualsize = (e + r) * t, i.virtualsize = math.ceil(i.virtualsize / o) - r, i.$wrapperel.css({ [a("width")]: `${i.virtualsize+r}px` }), n) { s.splice(0, s.length); const e = []; for (let t = 0; t < s.length; t += 1) { let a = s[t]; l && (a = math.floor(a)), s[t] < i.virtualsize + s[0] && e.push(a) } s.push(...e) } } } }, function(e) { let { swiper: t } = e; object.assign(t, { appendslide: k.bind(t), prependslide: z.bind(t), addslide: q.bind(t), removeslide: j.bind(t), removeallslides: ee.bind(t) }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ fadeeffect: { crossfade: !1, transformel: null } }), te({ effect: "fade", swiper: t, on: a, settranslate: () => { const { slides: e } = t, s = t.params.fadeeffect; for (let a = 0; a < e.length; a += 1) { const e = t.slides.eq(a); let i = -e[0].swiperslideoffset; t.params.virtualtranslate || (i -= t.translate); let r = 0; t.ishorizontal() || (r = i, i = 0); const n = t.params.fadeeffect.crossfade ? math.max(1 - math.abs(e[0] .progress), 0) : 1 + math.min(math.max(e[0].progress, -1), 0); se(s, e).css({ opacity: n }).transform(`translate3d(${i}px, ${r}px, 0px)`) } }, settransition: e => { const { transformel: s } = t.params.fadeeffect; (s ? t.slides.find(s) : t.slides).transition(e), ae({ swiper: t, duration: e, transformel: s, allslides: !0 }) }, overwriteparams: () => ({ slidesperview: 1, slidespergroup: 1, watchslidesprogress: !0, spacebetween: 0, virtualtranslate: !t.params.cssmode }) }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ cubeeffect: { slideshadows: !0, shadow: !0, shadowoffset: 20, shadowscale: .94 } }); const i = (e, t, s) => { let a = s ? e.find(".swiper-slide-shadow-left") : e.find(".swiper-slide-shadow-top"), i = s ? e.find(".swiper-slide-shadow-right") : e.find( ".swiper-slide-shadow-bottom"); 0 === a.length && (a = d(`
`), e .append(a)), 0 === i.length && (i = d( `
`), e.append( i)), a.length && (a[0].style.opacity = math.max(-t, 0)), i.length && (i[0].style .opacity = math.max(t, 0)) }; te({ effect: "cube", swiper: t, on: a, settranslate: () => { const { $el: e, $wrapperel: s, slides: a, width: r, height: n, rtltranslate: l, size: o, browser: c } = t, p = t.params.cubeeffect, u = t.ishorizontal(), h = t.virtual && t .params.virtual.enabled; let m, f = 0; p.shadow && (u ? (m = s.find(".swiper-cube-shadow"), 0 === m.length && (m = d('
'), s.append(m)), m .css({ height: `${r}px` })) : (m = e.find(".swiper-cube-shadow"), 0 === m.length && (m = d('
'), e.append(m)))); for (let e = 0; e < a.length; e += 1) { const t = a.eq(e); let s = e; h && (s = parseint(t.attr("data-swiper-slide-index"), 10)); let r = 90 * s, n = math.floor(r / 360); l && (r = -r, n = math.floor(-r / 360)); const d = math.max(math.min(t[0].progress, 1), -1); let c = 0, m = 0, g = 0; s % 4 == 0 ? (c = 4 * -n * o, g = 0) : (s - 1) % 4 == 0 ? (c = 0, g = 4 * -n * o) : (s - 2) % 4 == 0 ? (c = o + 4 * n * o, g = o) : ( s - 3) % 4 == 0 && (c = -o, g = 3 * o + 4 * o * n), l && (c = - c), u || (m = c, c = 0); const v = `rotatex(${u?0:-r}deg) rotatey(${u?r:0}deg) translate3d(${c}px, ${m}px, ${g}px)`; d <= 1 && d > -1 && (f = 90 * s + 90 * d, l && (f = 90 * -s - 90 * d)), t.transform(v), p.slideshadows && i(t, d, u) } if (s.css({ "-webkit-transform-origin": `50% 50% -${o/2}px`, "transform-origin": `50% 50% -${o/2}px` }), p.shadow) if (u) m.transform( `translate3d(0px, ${r/2+p.shadowoffset}px, ${-r/2}px) rotatex(90deg) rotatez(0deg) scale(${p.shadowscale})` ); else { const e = math.abs(f) - 90 * math.floor(math.abs(f) / 90), t = 1.5 - (math.sin(2 * e * math.pi / 360) / 2 + math.cos(2 * e * math.pi / 360) / 2), s = p.shadowscale, a = p.shadowscale / t, i = p.shadowoffset; m.transform( `scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotatex(-90deg)` ) } const g = c.issafari || c.iswebview ? -o / 2 : 0; s.transform( `translate3d(0px,0,${g}px) rotatex(${t.ishorizontal()?0:f}deg) rotatey(${t.ishorizontal()?-f:0}deg)` ), s[0].style.setproperty("--swiper-cube-translate-z", `${g}px`) }, settransition: e => { const { $el: s, slides: a } = t; a.transition(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).transition(e), t.params.cubeeffect.shadow && !t.ishorizontal() && s.find(".swiper-cube-shadow").transition(e) }, recreateshadows: () => { const e = t.ishorizontal(); t.slides.each((t => { const s = math.max(math.min(t.progress, 1), -1); i(d(t), s, e) })) }, geteffectparams: () => t.params.cubeeffect, perspective: () => !0, overwriteparams: () => ({ slidesperview: 1, slidespergroup: 1, watchslidesprogress: !0, resistanceratio: 0, spacebetween: 0, centeredslides: !1, virtualtranslate: !0 }) }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ flipeffect: { slideshadows: !0, limitrotation: !0, transformel: null } }); const i = (e, s, a) => { let i = t.ishorizontal() ? e.find(".swiper-slide-shadow-left") : e.find( ".swiper-slide-shadow-top"), r = t.ishorizontal() ? e.find(".swiper-slide-shadow-right") : e.find( ".swiper-slide-shadow-bottom"); 0 === i.length && (i = ie(a, e, t.ishorizontal() ? "left" : "top")), 0 === r.length && ( r = ie(a, e, t.ishorizontal() ? "right" : "bottom")), i.length && (i[0].style .opacity = math.max(-s, 0)), r.length && (r[0].style.opacity = math.max(s, 0)) }; te({ effect: "flip", swiper: t, on: a, settranslate: () => { const { slides: e, rtltranslate: s } = t, a = t.params.flipeffect; for (let r = 0; r < e.length; r += 1) { const n = e.eq(r); let l = n[0].progress; t.params.flipeffect.limitrotation && (l = math.max(math.min(n[0] .progress, 1), -1)); const o = n[0].swiperslideoffset; let d = -180 * l, c = 0, p = t.params.cssmode ? -o - t.translate : -o, u = 0; t.ishorizontal() ? s && (d = -d) : (u = p, p = 0, c = -d, d = 0), n[0] .style.zindex = -math.abs(math.round(l)) + e.length, a .slideshadows && i(n, l, a); const h = `translate3d(${p}px, ${u}px, 0px) rotatex(${c}deg) rotatey(${d}deg)`; se(a, n).transform(h) } }, settransition: e => { const { transformel: s } = t.params.flipeffect; (s ? t.slides.find(s) : t.slides).transition(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).transition(e), ae({ swiper: t, duration: e, transformel: s }) }, recreateshadows: () => { const e = t.params.flipeffect; t.slides.each((s => { const a = d(s); let r = a[0].progress; t.params.flipeffect.limitrotation && (r = math.max(math.min( s.progress, 1), -1)), i(a, r, e) })) }, geteffectparams: () => t.params.flipeffect, perspective: () => !0, overwriteparams: () => ({ slidesperview: 1, slidespergroup: 1, watchslidesprogress: !0, spacebetween: 0, virtualtranslate: !t.params.cssmode }) }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ coverfloweffect: { rotate: 50, stretch: 0, depth: 100, scale: 1, modifier: 1, slideshadows: !0, transformel: null } }), te({ effect: "coverflow", swiper: t, on: a, settranslate: () => { const { width: e, height: s, slides: a, slidessizesgrid: i } = t, r = t.params.coverfloweffect, n = t.ishorizontal(), l = t.translate, o = n ? e / 2 - l : s / 2 - l, d = n ? r.rotate : -r.rotate, c = r .depth; for (let e = 0, t = a.length; e < t; e += 1) { const t = a.eq(e), s = i[e], l = (o - t[0].swiperslideoffset - s / 2) / s, p = "function" == typeof r.modifier ? r.modifier(l) : l * r .modifier; let u = n ? d * p : 0, h = n ? 0 : d * p, m = -c * math.abs(p), f = r.stretch; "string" == typeof f && -1 !== f.indexof("%") && (f = parsefloat(r .stretch) / 100 * s); let g = n ? 0 : f * p, v = n ? f * p : 0, w = 1 - (1 - r.scale) * math.abs(p); math.abs(v) < .001 && (v = 0), math.abs(g) < .001 && (g = 0), math.abs( m) < .001 && (m = 0), math.abs(u) < .001 && (u = 0), math.abs( h) < .001 && (h = 0), math.abs(w) < .001 && (w = 0); const b = `translate3d(${v}px,${g}px,${m}px) rotatex(${h}deg) rotatey(${u}deg) scale(${w})`; if (se(r, t).transform(b), t[0].style.zindex = 1 - math.abs(math.round( p)), r.slideshadows) { let e = n ? t.find(".swiper-slide-shadow-left") : t.find( ".swiper-slide-shadow-top"), s = n ? t.find(".swiper-slide-shadow-right") : t.find( ".swiper-slide-shadow-bottom"); 0 === e.length && (e = ie(r, t, n ? "left" : "top")), 0 === s .length && (s = ie(r, t, n ? "right" : "bottom")), e.length && ( e[0].style.opacity = p > 0 ? p : 0), s.length && (s[0].style .opacity = -p > 0 ? -p : 0) } } }, settransition: e => { const { transformel: s } = t.params.coverfloweffect; (s ? t.slides.find(s) : t.slides).transition(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).transition(e) }, perspective: () => !0, overwriteparams: () => ({ watchslidesprogress: !0 }) }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ creativeeffect: { transformel: null, limitprogress: 1, shadowperprogress: !1, progressmultiplier: 1, perspective: !0, prev: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1 }, next: { translate: [0, 0, 0], rotate: [0, 0, 0], opacity: 1, scale: 1 } } }); const i = e => "string" == typeof e ? e : `${e}px`; te({ effect: "creative", swiper: t, on: a, settranslate: () => { const { slides: e, $wrapperel: s, slidessizesgrid: a } = t, r = t.params.creativeeffect, { progressmultiplier: n } = r, l = t.params.centeredslides; if (l) { const e = a[0] / 2 - t.params.slidesoffsetbefore || 0; s.transform(`translatex(calc(50% - ${e}px))`) } for (let s = 0; s < e.length; s += 1) { const a = e.eq(s), o = a[0].progress, d = math.min(math.max(a[0].progress, -r.limitprogress), r .limitprogress); let c = d; l || (c = math.min(math.max(a[0].originalprogress, -r.limitprogress), r .limitprogress)); const p = a[0].swiperslideoffset, u = [t.params.cssmode ? -p - t.translate : -p, 0, 0], h = [0, 0, 0]; let m = !1; t.ishorizontal() || (u[1] = u[0], u[0] = 0); let f = { translate: [0, 0, 0], rotate: [0, 0, 0], scale: 1, opacity: 1 }; d < 0 ? (f = r.next, m = !0) : d > 0 && (f = r.prev, m = !0), u.foreach( ((e, t) => { u[t] = `calc(${e}px + (${i(f.translate[t])} * ${math.abs(d*n)}))` })), h.foreach(((e, t) => { h[t] = f.rotate[t] * math.abs(d * n) })), a[0].style.zindex = -math.abs(math.round(o)) + e.length; const g = u.join(", "), v = `rotatex(${h[0]}deg) rotatey(${h[1]}deg) rotatez(${h[2]}deg)`, w = c < 0 ? `scale(${1+(1-f.scale)*c*n})` : `scale(${1-(1-f.scale)*c*n})`, b = c < 0 ? 1 + (1 - f.opacity) * c * n : 1 - (1 - f.opacity) * c * n, x = `translate3d(${g}) ${v} ${w}`; if (m && f.shadow || !m) { let e = a.children(".swiper-slide-shadow"); if (0 === e.length && f.shadow && (e = ie(r, a)), e.length) { const t = r.shadowperprogress ? d * (1 / r.limitprogress) : d; e[0].style.opacity = math.min(math.max(math.abs(t), 0), 1) } } const y = se(r, a); y.transform(x).css({ opacity: b }), f.origin && y.css("transform-origin", f.origin) } }, settransition: e => { const { transformel: s } = t.params.creativeeffect; (s ? t.slides.find(s) : t.slides).transition(e).find(".swiper-slide-shadow") .transition(e), ae({ swiper: t, duration: e, transformel: s, allslides: !0 }) }, perspective: () => t.params.creativeeffect.perspective, overwriteparams: () => ({ watchslidesprogress: !0, virtualtranslate: !t.params.cssmode }) }) }, function(e) { let { swiper: t, extendparams: s, on: a } = e; s({ cardseffect: { slideshadows: !0, transformel: null, rotate: !0 } }), te({ effect: "cards", swiper: t, on: a, settranslate: () => { const { slides: e, activeindex: s } = t, a = t.params.cardseffect, { starttranslate: i, istouched: r } = t.toucheventsdata, n = t.translate; for (let l = 0; l < e.length; l += 1) { const o = e.eq(l), d = o[0].progress, c = math.min(math.max(d, -4), 4); let p = o[0].swiperslideoffset; t.params.centeredslides && !t.params.cssmode && t.$wrapperel.transform( `translatex(${t.mintranslate()}px)`), t.params.centeredslides && t.params.cssmode && (p -= e[0].swiperslideoffset); let u = t.params.cssmode ? -p - t.translate : -p, h = 0; const m = -100 * math.abs(c); let f = 1, g = -2 * c, v = 8 - .75 * math.abs(c); const w = t.virtual && t.params.virtual.enabled ? t.virtual.from + l : l, b = (w === s || w === s - 1) && c > 0 && c < 1 && (r || t.params .cssmode) && n < i, x = (w === s || w === s + 1) && c < 0 && c > -1 && (r || t.params .cssmode) && n > i; if (b || x) { const e = (1 - math.abs((math.abs(c) - .5) / .5)) ** .5; g += -28 * c * e, f += -.5 * e, v += 96 * e, h = -25 * e * math.abs( c) + "%" } if (u = c < 0 ? `calc(${u}px + (${v*math.abs(c)}%))` : c > 0 ? `calc(${u}px + (-${v*math.abs(c)}%))` : `${u}px`, !t.ishorizontal() ) { const e = h; h = u, u = e } const y = c < 0 ? "" + (1 + (1 - f) * c) : "" + (1 - (1 - f) * c), e = `\n translate3d(${u}, ${h}, ${m}px)\n rotatez(${a.rotate?g:0}deg)\n scale(${y})\n `; if (a.slideshadows) { let e = o.find(".swiper-slide-shadow"); 0 === e.length && (e = ie(a, o)), e.length && (e[0].style.opacity = math.min(math.max((math.abs(c) - .5) / .5, 0), 1)) } o[0].style.zindex = -math.abs(math.round(d)) + e.length; se(a, o).transform(e) } }, settransition: e => { const { transformel: s } = t.params.cardseffect; (s ? t.slides.find(s) : t.slides).transition(e).find(".swiper-slide-shadow") .transition(e), ae({ swiper: t, duration: e, transformel: s }) }, perspective: () => !0, overwriteparams: () => ({ watchslidesprogress: !0, virtualtranslate: !t.params.cssmode }) }) }]; return v.use(re), v })); //# sourcemappingurl=swiper-bundle.min.js.map