PageSourceSearch

https://www.aladin.co.kr/ucl_editor/js/swiper.min.js

js aladin.co.kr collected 2026-09-24 08:28:01 UTC 241,463 bytes, 5,388 lines download raw bytes

vendor: 30,424 bytes, lines 1-838
1/**
2 * Swiper 5.4.1
3 * Most modern mobile touch slider and framework with hardware accelerated transitions
4 * http://swiperjs.com
5 *
6 * Copyright 2014-2020 Vladimir Kharlampidi
7 *
8 * Released under the MIT License
9 *
10 * Released on: May 20, 2020
11 */
12
13 !function(e, t) {
14    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = e || self).Swiper = t()
15}(this, (function() {
16    "use strict";
17    function e(e) {
18        return null !== e && "object" == typeof e && "constructor"in e && e.constructor === Object
19    }
20    function t(i, s) {
21        void 0 === i && (i = {}),
22        void 0 === s && (s = {}),
23        Object.keys(s).forEach((function(a) {
24            void 0 === i[a] ? i[a] = s[a] : e(s[a]) && e(i[a]) && Object.keys(s[a]).length > 0 && t(i[a], s[a])
25        }
26        ))
27    }
28    var i = "undefined" != typeof document ? document : {}
29      , s = {
30        body: {},
31        addEventListener: function() {},
32        removeEventListener: function() {},
33        activeElement: {
34            blur: function() {},
35            nodeName: ""
36        },
37        querySelector: function() {
38            return null
39        },
40        querySelectorAll: function() {
41            return []
42        },
43        getElementById: function() {
44            return null
45        },
46        createEvent: function() {
47            return {
48                initEvent: function() {}
49            }
50        },
51        createElement: function() {
52            return {
53                children: [],
54                childNodes: [],
55                style: {},
56                setAttribute: function() {},
57                getElementsByTagName: function() {
58                    return []
59                }
60            }
61        },
62        createElementNS: function() {
63            return {}
64        },
65        importNode: function() {
66            return null
67        },
68        location: {
69            hash: "",
70            host: "",
71            hostname: "",
72            href: "",
73            origin: "",
74            pathname: "",
75            protocol: "",
76            search: ""
77        }
78    };
79    t(i, s);
80    var a = "undefined" != typeof window ? window : {};
81    t(a, {
82        document: s,
83        navigator: {
84            userAgent: ""
85        },
86        location: {
87            hash: "",
88            host: "",
89            hostname: "",
90            href: "",
91            origin: "",
92            pathname: "",
93            protocol: "",
94            search: ""
95        },
96        history: {
97            replaceState: function() {},
98            pushState: function() {},
99            go: function() {},
100            back: function() {}
101        },
102        CustomEvent: function() {
103            return this
104        },
105        addEventListener: function() {},
106        removeEventListener: function() {},
107        getComputedStyle: function() {
108            return {
109                getPropertyValue: function() {
110                    return ""
111                }
112            }
113        },
114        Image: function() {},
115        Date: function() {},
116        screen: {},
117        setTimeout: function() {},
118        clearTimeout: function() {},
119        matchMedia: function() {
120            return {}
121        }
122    });
123    var r = function(e) {
124        for (var t = 0; t < e.length; t += 1)
125            this[t] = e[t];
126        return this.length = e.length,
127        this
128    };
129    function n(e, t) {
130        var s = []
131          , n = 0;
132        if (e && !t && e instanceof r)
133            return e;
134        if (e)
135            if ("string" == typeof e) {
136                var o, l, d = e.trim();
137                if (d.indexOf("<") >= 0 && d.indexOf(">") >= 0) {
138                    var h = "div";
139                    for (0 === d.indexOf("<li") && (h = "ul"),
140                    0 === d.indexOf("<tr") && (h = "tbody"),
141                    0 !== d.indexOf("<td") && 0 !== d.indexOf("<th") || (h = "tr"),
142                    0 === d.indexOf("<tbody") && (h = "table"),
143                    0 === d.indexOf("<option") && (h = "select"),
144                    (l = i.createElement(h)).innerHTML = d,
145                    n = 0; n < l.childNodes.length; n += 1)
146                        s.push(l.childNodes[n])
147                } else
148                    for (o = t || "#" !== e[0] || e.match(/[ .<>:~]/) ? (t || i).querySelectorAll(e.trim()) : [i.getElementById(e.trim().split("#")[1])],
149                    n = 0; n < o.length; n += 1)
150                        o[n] && s.push(o[n])
151            } else if (e.nodeType || e === a || e === i)
152                s.push(e);
153            else if (e.length > 0 && e[0].nodeType)
154                for (n = 0; n < e.length; n += 1)
155                    s.push(e[n]);
156        return new r(s)
157    }
158    function o(e) {
159        for (var t = [], i = 0; i < e.length; i += 1)
160            -1 === t.indexOf(e[i]) && t.push(e[i]);
161        return t
162    }
163    n.fn = r.prototype,
164    n.Class = r,
165    n.Dom7 = r;
166    var l = {
167        addClass: function(e) {
168            if (void 0 === e)
169                return this;
170            for (var t = e.split(" "), i = 0; i < t.length; i += 1)
171                for (var s = 0; s < this.length; s += 1)
172                    void 0 !== this[s] && void 0 !== this[s].classList && this[s].classList.add(t[i]);
173            return this
174        },
175        removeClass: function(e) {
176            for (var t = e.split(" "), i = 0; i < t.length; i += 1)
177                for (var s = 0; s < this.length; s += 1)
178                    void 0 !== this[s] && void 0 !== this[s].classList && this[s].classList.remove(t[i]);
179            return this
180        },
181        hasClass: function(e) {
182            return !!this[0] && this[0].classList.contains(e)
183        },
184        toggleClass: function(e) {
185            for (var t = e.split(" "), i = 0; i < t.length; i += 1)
186                for (var s = 0; s < this.length; s += 1)
187                    void 0 !== this[s] && void 0 !== this[s].classList && this[s].classList.toggle(t[i]);
188            return this
189        },
190        attr: function(e, t) {
191            var i = arguments;
192            if (1 === arguments.length && "string" == typeof e)
193                return this[0] ? this[0].getAttribute(e) : void 0;
194            for (var s = 0; s < this.length; s += 1)
195                if (2 === i.length)
196                    this[s].setAttribute(e, t);
197                else
198                    for (var a in e)
199                        this[s][a] = e[a],
200                        this[s].setAttribute(a, e[a]);
201            return this
202        },
203        removeAttr: function(e) {
204            for (var t = 0; t < this.length; t += 1)
205                this[t].removeAttribute(e);
206            return this
207        },
208        data: function(e, t) {
209            var i;
210            if (void 0 !== t) {
211                for (var s = 0; s < this.length; s += 1)
212                    (i = this[s]).dom7ElementDataStorage || (i.dom7ElementDataStorage = {}),
213                    i.dom7ElementDataStorage[e] = t;
214                return this
215            }
216            if (i = this[0]) {
217                if (i.dom7ElementDataStorage && e in i.dom7ElementDataStorage)
218                    return i.dom7ElementDataStorage[e];
219                var a = i.getAttribute("data-" + e);
220                return a || void 0
221            }
222        },
223        transform: function(e) {
224            for (var t = 0; t < this.length; t += 1) {
225                var i = this[t].style;
226                i.webkitTransform = e,
227                i.transform = e
228            }
229            return this
230        },
231        transition: function(e) {
232            "string" != typeof e && (e += "ms");
233            for (var t = 0; t < this.length; t += 1) {
234                var i = this[t].style;
235                i.webkitTransitionDuration = e,
236                i.transitionDuration = e
237            }
238            return this
239        },
240        on: function() {
241            for (var e, t = [], i = arguments.length; i--; )
242                t[i] = arguments[i];
243            var s = t[0]
244              , a = t[1]
245              , r = t[2]
246              , o = t[3];
247            function l(e) {
248                var t = e.target;
249                if (t) {
250                    var i = e.target.dom7EventData || [];
251                    if (i.indexOf(e) < 0 && i.unshift(e),
252                    n(t).is(a))
253                        r.apply(t, i);
254                    else
255                        for (var s = n(t).parents(), o = 0; o < s.length; o += 1)
256                            n(s[o]).is(a) && r.apply(s[o], i)
257                }
258            }
259            function d(e) {
260                var t = e && e.target && e.target.dom7EventData || [];
261                t.indexOf(e) < 0 && t.unshift(e),
262                r.apply(this, t)
263            }
264            "function" == typeof t[1] && (s = (e = t)[0],
265            r = e[1],
266            o = e[2],
267            a = void 0),
268            o || (o = !1);
269            for (var h, p = s.split(" "), c = 0; c < this.length; c += 1) {
270                var u = this[c];
271                if (a)
272                    for (h = 0; h < p.length; h += 1) {
273                        var v = p[h];
274                        u.dom7LiveListeners || (u.dom7LiveListeners = {}),
275                        u.dom7LiveListeners[v] || (u.dom7LiveListeners[v] = []),
276                        u.dom7LiveListeners[v].push({
277                            listener: r,
278                            proxyListener: l
279                        }),
280                        u.addEventListener(v, l, o)
281                    }
282                else
283                    for (h = 0; h < p.length; h += 1) {
284                        var f = p[h];
285                        u.dom7Listeners || (u.dom7Listeners = {}),
286                        u.dom7Listeners[f] || (u.dom7Listeners[f] = []),
287                        u.dom7Listeners[f].push({
288                            listener: r,
289                            proxyListener: d
290                        }),
291                        u.addEventListener(f, d, o)
292                    }
293            }
294            return this
295        },
296        off: function() {
297            for (var e, t = [], i = arguments.length; i--; )
298                t[i] = arguments[i];
299            var s = t[0]
300              , a = t[1]
301              , r = t[2]
302              , n = t[3];
303            "function" == typeof t[1] && (s = (e = t)[0],
304            r = e[1],
305            n = e[2],
306            a = void 0),
307            n || (n = !1);
308            for (var o = s.split(" "), l = 0; l < o.length; l += 1)
309                for (var d = o[l], h = 0; h < this.length; h += 1) {
310                    var p = this[h]
311                      , c = void 0;
312                    if (!a && p.dom7Listeners ? c = p.dom7Listeners[d] : a && p.dom7LiveListeners && (c = p.dom7LiveListeners[d]),
313                    c && c.length)
314                        for (var u = c.length - 1; u >= 0; u -= 1) {
315                            var v = c[u];
316                            r && v.listener === r || r && v.listener && v.listener.dom7proxy && v.listener.dom7proxy === r ? (p.removeEventListener(d, v.proxyListener, n),
317                            c.splice(u, 1)) : r || (p.removeEventListener(d, v.proxyListener, n),
318                            c.splice(u, 1))
319                        }
320                }
321            return this
322        },
323        trigger: function() {
324            for (var e = [], t = arguments.length; t--; )
325                e[t] = arguments[t];
326            for (var s = e[0].split(" "), r = e[1], n = 0; n < s.length; n += 1)
327                for (var o = s[n], l = 0; l < this.length; l += 1) {
328                    var d = this[l]
329                      , h = void 0;
330                    try {
331                        h = new a.CustomEvent(o,{
332                            detail: r,
333                            bubbles: !0,
334                            cancelable: !0
335                        })
336                    } catch (e) {
337                        (h = i.createEvent("Event")).initEvent(o, !0, !0),
338                        h.detail = r
339                    }
340                    d.dom7EventData = e.filter((function(e, t) {
341                        return t > 0
342                    }
343                    )),
344                    d.dispatchEvent(h),
345                    d.dom7EventData = [],
346                    delete d.dom7EventData
347                }
348            return this
349        },
350        transitionEnd: function(e) {
351            var t, i = ["webkitTransitionEnd", "transitionend"], s = this;
352            function a(r) {
353                if (r.target === this)
354                    for (e.call(this, r),
355                    t = 0; t < i.length; t += 1)
356                        s.off(i[t], a)
357            }
358            if (e)
359                for (t = 0; t < i.length; t += 1)
360                    s.on(i[t], a);
361            return this
362        },
363        outerWidth: function(e) {
364            if (this.length > 0) {
365                if (e) {
366                    var t = this.styles();
367                    return this[0].offsetWidth + parseFloat(t.getPropertyValue("margin-right")) + parseFloat(t.getPropertyValue("margin-left"))
368                }
369                return this[0].offsetWidth
370            }
371            return null
372        },
373        outerHeight: function(e) {
374            if (this.length > 0) {
375                if (e) {
376                    var t = this.styles();
377                    return this[0].offsetHeight + parseFloat(t.getPropertyValue("margin-top")) + parseFloat(t.getPropertyValue("margin-bottom"))
378                }
379                return this[0].offsetHeight
380            }
381            return null
382        },
383        offset: function() {
384            if (this.length > 0) {
385                var e = this[0]
386                  , t = e.getBoundingClientRect()
387                  , s = i.body
388                  , r = e.clientTop || s.clientTop || 0
389                  , n = e.clientLeft || s.clientLeft || 0
390                  , o = e === a ? a.scrollY : e.scrollTop
391                  , l = e === a ? a.scrollX : e.scrollLeft;
392                return {
393                    top: t.top + o - r,
394                    left: t.left + l - n
395                }
396            }
397            return null
398        },
399        css: function(e, t) {
400            var i;
401            if (1 === arguments.length) {
402                if ("string" != typeof e) {
403                    for (i = 0; i < this.length; i += 1)
404                        for (var s in e)
405                            this[i].style[s] = e[s];
406                    return this
407                }
408                if (this[0])
409                    return a.getComputedStyle(this[0], null).getPropertyValue(e)
410            }
411            if (2 === arguments.length && "string" == typeof e) {
412                for (i = 0; i < this.length; i += 1)
413                    this[i].style[e] = t;
414                return this
415            }
416            return this
417        },
418        each: function(e) {
419            if (!e)
420                return this;
421            for (var t = 0; t < this.length; t += 1)
422                if (!1 === e.call(this[t], t, this[t]))
423                    return this;
424            return this
425        },
426        html: function(e) {
427            if (void 0 === e)
428                return this[0] ? this[0].innerHTML : void 0;
429            for (var t = 0; t < this.length; t += 1)
430                this[t].innerHTML = e;
431            return this
432        },
433        text: function(e) {
434            if (void 0 === e)
435                return this[0] ? this[0].textContent.trim() : null;
436            for (var t = 0; t < this.length; t += 1)
437                this[t].textContent = e;
438            return this
439        },
440        is: function(e) {
441            var t, s, o = this[0];
442            if (!o || void 0 === e)
443                return !1;
444            if ("string" == typeof e) {
445                if (o.matches)
446                    return o.matches(e);
447                if (o.webkitMatchesSelector)
448                    return o.webkitMatchesSelector(e);
449                if (o.msMatchesSelector)
450                    return o.msMatchesSelector(e);
451                for (t = n(e),
452                s = 0; s < t.length; s += 1)
453                    if (t[s] === o)
454                        return !0;
455                return !1
456            }
457            if (e === i)
458                return o === i;
459            if (e === a)
460                return o === a;
461            if (e.nodeType || e instanceof r) {
462                for (t = e.nodeType ? [e] : e,
463                s = 0; s < t.length; s += 1)
464                    if (t[s] === o)
465                        return !0;
466                return !1
467            }
468            return !1
469        },
470        index: function() {
471            var e, t = this[0];
472            if (t) {
473                for (e = 0; null !== (t = t.previousSibling); )
474                    1 === t.nodeType && (e += 1);
475                return e
476            }
477        },
478        eq: function(e) {
479            if (void 0 === e)
480                return this;
481            var t, i = this.length;
482            return new r(e > i - 1 ? [] : e < 0 ? (t = i + e) < 0 ? [] : [this[t]] : [this[e]])
483        },
484        append: function() {
485            for (var e, t = [], s = arguments.length; s--; )
486                t[s] = arguments[s];
487            for (var a = 0; a < t.length; a += 1) {
488                e = t[a];
489                for (var n = 0; n < this.length; n += 1)
490                    if ("string" == typeof e) {
491                        var o = i.createElement("div");
492                        for (o.innerHTML = e; o.firstChild; )
493                            this[n].appendChild(o.firstChild)
494                    } else if (e instanceof r)
495                        for (var l = 0; l < e.length; l += 1)
496                            this[n].appendChild(e[l]);
497                    else
498                        this[n].appendChild(e)
499            }
500            return this
501        },
502        prepend: function(e) {
503            var t, s;
504            for (t = 0; t < this.length; t += 1)
505                if ("string" == typeof e) {
506                    var a = i.createElement("div");
507                    for (a.innerHTML = e,
508                    s = a.childNodes.length - 1; s >= 0; s -= 1)
509                        this[t].insertBefore(a.childNodes[s], this[t].childNodes[0])
510                } else if (e instanceof r)
511                    for (s = 0; s < e.length; s += 1)
512                        this[t].insertBefore(e[s], this[t].childNodes[0]);
513                else
514                    this[t].insertBefore(e, this[t].childNodes[0]);
515            return this
516        },
517        next: function(e) {
518            return this.length > 0 ? e ? this[0].nextElementSibling && n(this[0].nextElementSibling).is(e) ? new r([this[0].nextElementSibling]) : new r([]) : this[0].nextElementSibling ? new r([this[0].nextElementSibling]) : new r([]) : new r([])
519        },
520        nextAll: function(e) {
521            var t = []
522              , i = this[0];
523            if (!i)
524                return new r([]);
525            for (; i.nextElementSibling; ) {
526                var s = i.nextElementSibling;
527                e ? n(s).is(e) && t.push(s) : t.push(s),
528                i = s
529            }
530            return new r(t)
531        },
532        prev: function(e) {
533            if (this.length > 0) {
534                var t = this[0];
535                return e ? t.previousElementSibling && n(t.previousElementSibling).is(e) ? new r([t.previousElementSibling]) : new r([]) : t.previousElementSibling ? new r([t.previousElementSibling]) : new r([])
536            }
537            return new r([])
538        },
539        prevAll: function(e) {
540            var t = []
541              , i = this[0];
542            if (!i)
543                return new r([]);
544            for (; i.previousElementSibling; ) {
545                var s = i.previousElementSibling;
546                e ? n(s).is(e) && t.push(s) : t.push(s),
547                i = s
548            }
549            return new r(t)
550        },
551        parent: function(e) {
552            for (var t = [], i = 0; i < this.length; i += 1)
553                null !== this[i].parentNode && (e ? n(this[i].parentNode).is(e) && t.push(this[i].parentNode) : t.push(this[i].parentNode));
554            return n(o(t))
555        },
556        parents: function(e) {
557            for (var t = [], i = 0; i < this.length; i += 1)
558                for (var s = this[i].parentNode; s; )
559                    e ? n(s).is(e) && t.push(s) : t.push(s),
560                    s = s.parentNode;
561            return n(o(t))
562        },
563        closest: function(e) {
564            var t = this;
565            return void 0 === e ? new r([]) : (t.is(e) || (t = t.parents(e).eq(0)),
566            t)
567        },
568        find: function(e) {
569            for (var t = [], i = 0; i < this.length; i += 1)
570                for (var s = this[i].querySelectorAll(e), a = 0; a < s.length; a += 1)
571                    t.push(s[a]);
572            return new r(t)
573        },
574        children: function(e) {
575            for (var t = [], i = 0; i < this.length; i += 1)
576                for (var s = this[i].childNodes, a = 0; a < s.length; a += 1)
577                    e ? 1 === s[a].nodeType && n(s[a]).is(e) && t.push(s[a]) : 1 === s[a].nodeType && t.push(s[a]);
578            return new r(o(t))
579        },
580        filter: function(e) {
581            for (var t = [], i = 0; i < this.length; i += 1)
582                e.call(this[i], i, this[i]) && t.push(this[i]);
583            return new r(t)
584        },
585        remove: function() {
586            for (var e = 0; e < this.length; e += 1)
587                this[e].parentNode && this[e].parentNode.removeChild(this[e]);
588            return this
589        },
590        add: function() {
591            for (var e = [], t = arguments.length; t--; )
592                e[t] = arguments[t];
593            var i, s, a = this;
594            for (i = 0; i < e.length; i += 1) {
595                var r = n(e[i]);
596                for (s = 0; s < r.length; s += 1)
597                    a[a.length] = r[s],
598                    a.length += 1
599            }
600            return a
601        },
602        styles: function() {
603            return this[0] ? a.getComputedStyle(this[0], null) : {}
604        }
605    };
606    Object.keys(l).forEach((function(e) {
607        n.fn[e] = n.fn[e] || l[e]
608    }
609    ));
610    var d = {
611        deleteProps: function(e) {
612            var t = e;
613            Object.keys(t).forEach((function(e) {
614                try {
615                    t[e] = null
616                } catch (e) {}
617                try {
618                    delete t[e]
619                } catch (e) {}
620            }
621            ))
622        },
623        nextTick: function(e, t) {
624            return void 0 === t && (t = 0),
625            setTimeout(e, t)
626        },
627        now: function() {
628            return Date.now()
629        },
630        getTranslate: function(e, t) {
631            var i, s, r;
632            void 0 === t && (t = "x");
633            var n = a.getComputedStyle(e, null);
634            return a.WebKitCSSMatrix ? ((s = n.transform || n.webkitTransform).split(",").length > 6 && (s = s.split(", ").map((function(e) {
635                return e.replace(",", ".")
636            }
637            )).join(", ")),
638            r = new a.WebKitCSSMatrix("none" === s ? "" : s)) : i = (r = n.MozTransform || n.OTransform || n.MsTransform || n.msTransform || n.transform || n.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,")).toString().split(","),
639            "x" === t && (s = a.WebKitCSSMatrix ? r.m41 : 16 === i.length ? parseFloat(i[12]) : parseFloat(i[4])),
640            "y" === t && (s = a.WebKitCSSMatrix ? r.m42 : 16 === i.length ? parseFloat(i[13]) : parseFloat(i[5])),
641            s || 0
642        },
643        parseUrlQuery: function(e) {
644            var t, i, s, r, n = {}, o = e || a.location.href;
645            if ("string" == typeof o && o.length)
646                for (r = (i = (o = o.indexOf("?") > -1 ? o.replace(/\S*\?/, "") : "").split("&").filter((function(e) {
647                    return "" !== e
648                }
649                ))).length,
650                t = 0; t < r; t += 1)
651                    s = i[t].replace(/#\S+/g, "").split("="),
652                    n[decodeURIComponent(s[0])] = void 0 === s[1] ? void 0 : decodeURIComponent(s[1]) || "";
653            return n
654        },
655        isObject: function(e) {
656            return "object" == typeof e && null !== e && e.constructor && e.constructor === Object
657        },
658        extend: function() {
659            for (var e = [], t = arguments.length; t--; )
660                e[t] = arguments[t];
661            for (var i = Object(e[0]), s = 1; s < e.length; s += 1) {
662                var a = e[s];
663                if (null != a)
664                    for (var r = Object.keys(Object(a)), n = 0, o = r.length; n < o; n += 1) {
665                        var l = r[n]
666                          , h = Object.getOwnPropertyDescriptor(a, l);
667                        void 0 !== h && h.enumerable && (d.isObject(i[l]) && d.isObject(a[l]) ? d.extend(i[l], a[l]) : !d.isObject(i[l]) && d.isObject(a[l]) ? (i[l] = {},
668                        d.extend(i[l], a[l])) : i[l] = a[l])
669                    }
670            }
671            return i
672        }
673    }
674      , h = {
675        touch: !!("ontouchstart"in a || a.DocumentTouch && i instanceof a.DocumentTouch),
676        pointerEvents: !!a.PointerEvent && "maxTouchPoints"in a.navigator && a.navigator.maxTouchPoints >= 0,
677        observer: "MutationObserver"in a || "WebkitMutationObserver"in a,
678        passiveListener: function() {
679            var e = !1;
680            try {
681                var t = Object.defineProperty({}, "passive", {
682                    get: function() {
683                        e = !0
684                    }
685                });
686                a.addEventListener("testPassiveListener", null, t)
687            } catch (e) {}
688            return e
689        }(),
690        gestures: "ongesturestart"in a
691    }
692      , p = function(e) {
693        void 0 === e && (e = {});
694        var t = this;
695        t.params = e,
696        t.eventsListeners = {},
697        t.params && t.params.on && Object.keys(t.params.on).forEach((function(e) {
698            t.on(e, t.params.on[e])
699        }
700        ))
701    }
702      , c = {
703        components: {
704            configurable: !0
705        }
706    };
707    p.prototype.on = function(e, t, i) {
708        var s = this;
709        if ("function" != typeof t)
710            return s;
711        var a = i ? "unshift" : "push";
712        return e.split(" ").forEach((function(e) {
713            s.eventsListeners[e] || (s.eventsListeners[e] = []),
714            s.eventsListeners[e][a](t)
715        }
716        )),
717        s
718    }
719    ,
720    p.prototype.once = function(e, t, i) {
721        var s = this;
722        if ("function" != typeof t)
723            return s;
724        function a() {
725            for (var i = [], r = arguments.length; r--; )
726                i[r] = arguments[r];
727            s.off(e, a),
728            a.f7proxy && delete a.f7proxy,
729            t.apply(s, i)
730        }
731        return a.f7proxy = t,
732        s.on(e, a, i)
733    }
734    ,
735    p.prototype.off = function(e, t) {
736        var i = this;
737        return i.eventsListeners ? (e.split(" ").forEach((function(e) {
738            void 0 === t ? i.eventsListeners[e] = [] : i.eventsListeners[e] && i.eventsListeners[e].length && i.eventsListeners[e].forEach((function(s, a) {
739                (s === t || s.f7proxy && s.f7proxy === t) && i.eventsListeners[e].splice(a, 1)
740            }
741            ))
742        }
743        )),
744        i) : i
745    }
746    ,
747    p.prototype.emit = function() {
748        for (var e = [], t = arguments.length; t--; )
749            e[t] = arguments[t];
750        var i, s, a, r = this;
751        if (!r.eventsListeners)
752            return r;
753        "string" == typeof e[0] || Array.isArray(e[0]) ? (i = e[0],
754        s = e.slice(1, e.length),
755        a = r) : (i = e[0].events,
756        s = e[0].data,
757        a = e[0].context || r);
758        var n = Array.isArray(i) ? i : i.split(" ");
759        return n.forEach((function(e) {
760            if (r.eventsListeners && r.eventsListeners[e]) {
761                var t = [];
762                r.eventsListeners[e].forEach((function(e) {
763                    t.push(e)
764                }
765                )),
766                t.forEach((function(e) {
767                    e.apply(a, s)
768                }
769                ))
770            }
771        }
772        )),
773        r
774    }
775    ,
776    p.prototype.useModulesParams = function(e) {
777        var t = this;
778        t.modules && Object.keys(t.modules).forEach((function(i) {
779            var s = t.modules[i];
780            s.params && d.extend(e, s.params)
781        }
782        ))
783    }
784    ,
785    p.prototype.useModules = function(e) {
786        void 0 === e && (e = {});
787        var t = this;
788        t.modules && Object.keys(t.modules).forEach((function(i) {
789            var s = t.modules[i]
790              , a = e[i] || {};
791            s.instance && Object.keys(s.instance).forEach((function(e) {
792                var i = s.instance[e];
793                t[e] = "function" == typeof i ? i.bind(t) : i
794            }
795            )),
796            s.on && t.on && Object.keys(s.on).forEach((function(e) {
797                t.on(e, s.on[e])
798            }
799            )),
800            s.create && s.create.bind(t)(a)
801        }
802        ))
803    }
804    ,
805    c.components.set = function(e) {
806        this.use && this.use(e)
807    }
808    ,
809    p.installModule = function(e) {
810        for (var t = [], i = arguments.length - 1; i-- > 0; )
811            t[i] = arguments[i + 1];
812        var s = this;
813        s.prototype.modules || (s.prototype.modules = {});
814        var a = e.name || Object.keys(s.prototype.modules).length + "_" + d.now();
815        return s.prototype.modules[a] = e,
816        e.proto && Object.keys(e.proto).forEach((function(t) {
817            s.prototype[t] = e.proto[t]
818        }
819        )),
820        e.static && Object.keys(e.static).forEach((function(t) {
821            s[t] = e.static[t]
822        }
823        )),
824        e.install && e.install.apply(s, t),
825        s
826    }
827    ,
828    p.use = function(e) {
829        for (var t = [], i = arguments.length - 1; i-- > 0; )
830            t[i] = arguments[i + 1];
831        var s = this;
832        return Array.isArray(e) ? (e.forEach((function(e) {
833            return s.installModule(e)
834        }
835        )),
836        s) : s.installModule.apply(s, [e].concat(t))
837    }
838    ,
839    Object.defineProperties(p, c);
840    var u = {
841        updateSize: function() {
842            var e, t, i = this.$el;
843            e = void 0 !== this.params.width ? this.params.width : i[0].clientWidth,
844            t = void 0 !== this.params.height ? this.params.height : i[0].clientHeight,
845            0 === e && this.isHorizontal() || 0 === t && this.isVertical() || (e = e - parseInt(i.css("padding-left"), 10) - parseInt(i.css("padding-right"), 10),
846            t = t - parseInt(i.css("padding-top"), 10) - parseInt(i.css("padding-bottom"), 10),
847            d.extend(this, {
848                width: e,
849                height: t,
850                size: this.isHorizontal() ? e : t
851            }))
852        },
853        updateSlides: function() {
854            var e = this.params
855              , t = this.$wrapperEl
856              , i = this.size
857              , s = this.rtlTranslate
858              , r = this.wrongRTL
859              , n = this.virtual && e.virtual.enabled
860              , o = n ? this.virtual.slides.length : this.slides.length
861              , l = t.children("." + this.params.slideClass)
862              , h = n ? this.virtual.slides.length : l.length
863              , p = []
864              , c = []
865              , u = [];
866            function v(t) {
867                return !e.cssMode || t !== l.length - 1
868            }
869            var f = e.slidesOffsetBefore;
870            "function" == typeof f && (f = e.slidesOffsetBefore.call(this));
871            var m = e.slidesOffsetAfter;
872            "function" == typeof m && (m = e.slidesOffsetAfter.call(this));
873            var g = this.snapGrid.length
874              , b = this.snapGrid.length
875              , w = e.spaceBetween
876              , y = -f
877              , x = 0
878              , E = 0;
879            if (void 0 !== i) {
880                var T, S;
881                "string" == typeof w && w.indexOf("%") >= 0 && (w = parseFloat(w.replace("%", "")) / 100 * i),
882                this.virtualSize = -w,
883                s ? l.css({
884                    marginLeft: "",
885                    marginTop: ""
886                }) : l.css({
887                    marginRight: "",
888                    marginBottom: ""
889                }),
890                e.slidesPerColumn > 1 && (T = Math.floor(h / e.slidesPerColumn) === h / this.params.slidesPerColumn ? h : Math.ceil(h / e.slidesPerColumn) * e.slidesPerColumn,
891                "auto" !== e.slidesPerView && "row" === e.slidesPerColumnFill && (T = Math.max(T, e.slidesPerView * e.slidesPerColumn)));
892                for (var C, M = e.slidesPerColumn, P = T / M, z = Math.floor(h / e.slidesPerColumn), k = 0; k < h; k += 1) {
893                    S = 0;
894                    var $ = l.eq(k);
895                    if (e.slidesPerColumn > 1) {
896                        var L = void 0
897                          , I = void 0
898                          , O = void 0;
899                        if ("row" === e.slidesPerColumnFill && e.slidesPerGroup > 1) {
900                            var D = Math.floor(k / (e.slidesPerGroup * e.slidesPerColumn))
901                              , A = k - e.slidesPerColumn * e.slidesPerGroup * D
902                              , G = 0 === D ? e.slidesPerGroup : Math.min(Math.ceil((h - D * M * e.slidesPerGroup) / M), e.slidesPerGroup);
903                            L = (I = A - (O = Math.floor(A / G)) * G + D * e.slidesPerGroup) + O * T / M,
904                            $.css({
905                                "-webkit-box-ordinal-group": L,
906                                "-moz-box-ordinal-group": L,
907                                "-ms-flex-order": L,
908                                "-webkit-order": L,
909                                order: L
910                            })
911                        } else
912                            "column" === e.slidesPerColumnFill ? (O = k - (I = Math.floor(k / M)) * M,
913                            (I > z || I === z && O === M - 1) && (O += 1) >= M && (O = 0,
914                            I += 1)) : I = k - (O = Math.floor(k / P)) * P;
915                        $.css("margin-" + (this.isHorizontal() ? "top" : "left"), 0 !== O && e.spaceBetween && e.spaceBetween + "px")
916                    }
917                    if ("none" !== $.css("display")) {
918                        if ("auto" === e.slidesPerView) {
919                            var H = a.getComputedStyle($[0], null)
920                              , B = $[0].style.transform
921                              , N = $[0].style.webkitTransform;
922                            if (B && ($[0].style.transform = "none"),
923                            N && ($[0].style.webkitTransform = "none"),
924                            e.roundLengths)
925                                S = this.isHorizontal() ? $.outerWidth(!0) : $.outerHeight(!0);
926                            else if (this.isHorizontal()) {
927                                var X = parseFloat(H.getPropertyValue("width"))
928                                  , V = parseFloat(H.getPropertyValue("padding-left"))
929                                  , Y = parseFloat(H.getPropertyValue("padding-right"))
930                                  , F = parseFloat(H.getPropertyValue("margin-left"))
931                                  , W = parseFloat(H.getPropertyValue("margin-right"))
932                                  , R = H.getPropertyValue("box-sizing");
933                                S = R && "border-box" === R ? X + F + W : X + V + Y + F + W
934                            } else {
935                                var q = parseFloat(H.getPropertyValue("height"))
936                                  , j = parseFloat(H.getPropertyValue("padding-top"))
937                                  , K = parseFloat(H.getPropertyValue("padding-bottom"))
938                                  , U = parseFloat(H.getPropertyValue("margin-top"))
939                                  , _ = parseFloat(H.getPropertyValue("margin-bottom"))
940                                  , Z = H.getPropertyValue("box-sizing");
941                                S = Z && "border-box" === Z ? q + U + _ : q + j + K + U + _
942                            }
943                            B && ($[0].style.transform = B),
944                            N && ($[0].style.webkitTransform = N),
945                            e.roundLengths && (S = Math.floor(S))
946                        } else
947                            S = (i - (e.slidesPerView - 1) * w) / e.slidesPerView,
948                            e.roundLengths && (S = Math.floor(S)),
949                            l[k] && (this.isHorizontal() ? l[k].style.width = S + "px" : l[k].style.height = S + "px");
950                        l[k] && (l[k].swiperSlideSize = S),
951                        u.push(S),
952                        e.centeredSlides ? (y = y + S / 2 + x / 2 + w,
953                        0 === x && 0 !== k && (y = y - i / 2 - w),
954                        0 === k && (y = y - i / 2 - w),
955                        Math.abs(y) < .001 && (y = 0),
956                        e.roundLengths && (y = Math.floor(y)),
957                        E % e.slidesPerGroup == 0 && p.push(y),
958                        c.push(y)) : (e.roundLengths && (y = Math.floor(y)),
959                        (E - Math.min(this.params.slidesPerGroupSkip, E)) % this.params.slidesPerGroup == 0 && p.push(y),
960                        c.push(y),
961                        y = y + S + w),
962                        this.virtualSize += S + w,
963                        x = S,
964                        E += 1
965                    }
966                }
967                if (this.virtualSize = Math.max(this.virtualSize, i) + m,
968                s && r && ("slide" === e.effect || "coverflow" === e.effect) && t.css({
969                    width: this.virtualSize + e.spaceBetween + "px"
970                }),
971                e.setWrapperSize && (this.isHorizontal() ? t.css({
972                    width: this.virtualSize + e.spaceBetween + "px"
973                }) : t.css({
974                    height: this.virtualSize + e.spaceBetween + "px"
975                })),
976                e.slidesPerColumn > 1 && (this.virtualSize = (S + e.spaceBetween) * T,
977                this.virtualSize = Math.ceil(this.virtualSize / e.slidesPerColumn) - e.spaceBetween,
978                this.isHorizontal() ? t.css({
979                    width: this.virtualSize + e.spaceBetween + "px"
980                }) : t.css({
981                    height: this.virtualSize + e.spaceBetween + "px"
982                }),
983                e.centeredSlides)) {
984                    C = [];
985                    for (var Q = 0; Q < p.length; Q += 1) {
986                        var J = p[Q];
987                        e.roundLengths && (J = Math.floor(J)),
988                        p[Q] < this.virtualSize + p[0] && C.push(J)
989                    }
990                    p = C
991                }
992                if (!e.centeredSlides) {
993                    C = [];
994                    for (var ee = 0; ee < p.length; ee += 1) {
995                        var te = p[ee];
996                        e.roundLengths && (te = Math.floor(te)),
997                        p[ee] <= this.virtualSize - i && C.push(te)
998                    }
999                    p = C,
1000                    Math.floor(this.virtualSize - i) - Math.floor(p[p.length - 1]) > 1 && p.push(this.virtualSize - i)
1001                }
1002                if (0 === p.length && (p = [0]),
1003                0 !== e.spaceBetween && (this.isHorizontal() ? s ? l.filter(v).css({
1004                    marginLeft: w + "px"
1005                }) : l.filter(v).css({
1006                    marginRight: w + "px"
1007                }) : l.filter(v).css({
1008                    marginBottom: w + "px"
1009                })),
1010                e.centeredSlides && e.centeredSlidesBounds) {
1011                    var ie = 0;
1012                    u.forEach((function(t) {
1013                        ie += t + (e.spaceBetween ? e.spaceBetween : 0)
1014                    }
1015                    ));
1016                    var se = (ie -= e.spaceBetween) - i;
1017                    p = p.map((function(e) {
1018                        return e < 0 ? -f : e > se ? se + m : e
1019                    }
1020                    ))
1021                }
1022                if (e.centerInsufficientSlides) {
1023                    var ae = 0;
1024                    if (u.forEach((function(t) {
1025                        ae += t + (e.spaceBetween ? e.spaceBetween : 0)
1026                    }
1027                    )),
1028                    (ae -= e.spaceBetween) < i) {
1029                        var re = (i - ae) / 2;
1030                        p.forEach((function(e, t) {
1031                            p[t] = e - re
1032                        }
1033                        )),
1034                        c.forEach((function(e, t) {
1035                            c[t] = e + re
1036                        }
1037                        ))
1038                    }
1039                }
1040                d.extend(this, {
1041                    slides: l,
1042                    snapGrid: p,
1043                    slidesGrid: c,
1044                    slidesSizesGrid: u
1045                }),
1046                h !== o && this.emit("slidesLengthChange"),
1047                p.length !== g && (this.params.watchOverflow && this.checkOverflow(),
1048                this.emit("snapGridLengthChange")),
1049                c.length !== b && this.emit("slidesGridLengthChange"),
1050                (e.watchSlidesProgress || e.watchSlidesVisibility) && this.updateSlidesOffset()
1051            }
1052        },
1053        updateAutoHeight: function(e) {
1054            var t, i = [], s = 0;
1055            if ("number" == typeof e ? this.setTransition(e) : !0 === e && this.setTransition(this.params.speed),
1056            "auto" !== this.params.slidesPerView && this.params.slidesPerView > 1)
1057                if (this.params.centeredSlides)
1058                    this.visibleSlides.each((function(e, t) {
1059                        i.push(t)
1060                    }
1061                    ));
1062                else
1063                    for (t = 0; t < Math.ceil(this.params.slidesPerView); t += 1) {
1064                        var a = this.activeIndex + t;
1065                        if (a > this.slides.length)
1066                            break;
1067                        i.push(this.slides.eq(a)[0])
1068                    }
1069            else
1070                i.push(this.slides.eq(this.activeIndex)[0]);
1071            for (t = 0; t < i.length; t += 1)
1072                if (void 0 !== i[t]) {
1073                    var r = i[t].offsetHeight;
1074                    s = r > s ? r : s
1075                }
1076            s && this.$wrapperEl.css("height", s + "px")
1077        },
1078        updateSlidesOffset: function() {
1079            for (var e = this.slides, t = 0; t < e.length; t += 1)
1080                e[t].swiperSlideOffset = this.isHorizontal() ? e[t].offsetLeft : e[t].offsetTop
1081        },
1082        updateSlidesProgress: function(e) {
1083            void 0 === e && (e = this && this.translate || 0);
1084            var t = this.params
1085              , i = this.slides
1086              , s = this.rtlTranslate;
1087            if (0 !== i.length) {
1088                void 0 === i[0].swiperSlideOffset && this.updateSlidesOffset();
1089                var a = -e;
1090                s && (a = e),
1091                i.removeClass(t.slideVisibleClass),
1092                this.visibleSlidesIndexes = [],
1093                this.visibleSlides = [];
1094                for (var r = 0; r < i.length; r += 1) {
1095                    var o = i[r]
1096                      , l = (a + (t.centeredSlides ? this.minTranslate() : 0) - o.swiperSlideOffset) / (o.swiperSlideSize + t.spaceBetween);
1097                    if (t.watchSlidesVisibility || t.centeredSlides && t.autoHeight) {
1098                        var d = -(a - o.swiperSlideOffset)
1099                          , h = d + this.slidesSizesGrid[r];
1100                        (d >= 0 && d < this.size - 1 || h > 1 && h <= this.size || d <= 0 && h >= this.size) && (this.visibleSlides.push(o),
1101                        this.visibleSlidesIndexes.push(r),
1102                        i.eq(r).addClass(t.slideVisibleClass))
1103                    }
1104                    o.progress = s ? -l : l
1105                }
1106                this.visibleSlides = n(this.visibleSlides)
1107            }
1108        },
1109        updateProgress: function(e) {
1110            if (void 0 === e) {
1111                var t = this.rtlTranslate ? -1 : 1;
1112                e = this && this.translate && this.translate * t || 0
1113            }
1114            var i = this.params
1115              , s = this.maxTranslate() - this.minTranslate()
1116              , a = this.progress
1117              , r = this.isBeginning
1118              , n = this.isEnd
1119              , o = r
1120              , l = n;
1121            0 === s ? (a = 0,
1122            r = !0,
1123            n = !0) : (r = (a = (e - this.minTranslate()) / s) <= 0,
1124            n = a >= 1),
1125            d.extend(this, {
1126                progress: a,
1127                isBeginning: r,
1128                isEnd: n
1129            }),
1130            (i.watchSlidesProgress || i.watchSlidesVisibility || i.centeredSlides && i.autoHeight) && this.updateSlidesProgress(e),
1131            r && !o && this.emit("reachBeginning toEdge"),
1132            n && !l && this.emit("reachEnd toEdge"),
1133            (o && !r || l && !n) && this.emit("fromEdge"),
1134            this.emit("progress", a)
1135        },
1136        updateSlidesClasses: function() {
1137            var e, t = this.slides, i = this.params, s = this.$wrapperEl, a = this.activeIndex, r = this.realIndex, n = this.virtual && i.virtual.enabled;
1138            t.removeClass(i.slideActiveClass + " " + i.slideNextClass + " " + i.slidePrevClass + " " + i.slideDuplicateActiveClass + " " + i.slideDuplicateNextClass + " " + i.slideDuplicatePrevClass),
1139            (e = n ? this.$wrapperEl.find("." + i.slideClass + '[data-swiper-slide-index="' + a + '"]') : t.eq(a)).addClass(i.slideActiveClass),
1140            i.loop && (e.hasClass(i.slideDuplicateClass) ? s.children("." + i.slideClass + ":not(." + i.slideDuplicateClass + ')[data-swiper-slide-index="' + r + '"]').addClass(i.slideDuplicateActiveClass) : s.children("." + i.slideClass + "." + i.slideDuplicateClass + '[data-swiper-slide-index="' + r + '"]').addClass(i.slideDuplicateActiveClass));
1141            var o = e.nextAll("." + i.slideClass).eq(0).addClass(i.slideNextClass);
1142            i.loop && 0 === o.length && (o = t.eq(0)).addClass(i.slideNextClass);
1143            var l = e.prevAll("." + i.slideClass).eq(0).addClass(i.slidePrevClass);
1144            i.loop && 0 === l.length && (l = t.eq(-1)).addClass(i.slidePrevClass),
1145            i.loop && (o.hasClass(i.slideDuplicateClass) ? s.children("." + i.slideClass + ":not(." + i.slideDuplicateClass + ')[data-swiper-slide-index="' + o.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicateNextClass) : s.children("." + i.slideClass + "." + i.slideDuplicateClass + '[data-swiper-slide-index="' + o.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicateNextClass),
1146            l.hasClass(i.slideDuplicateClass) ? s.children("." + i.slideClass + ":not(." + i.slideDuplicateClass + ')[data-swiper-slide-index="' + l.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicatePrevClass) : s.children("." + i.slideClass + "." + i.slideDuplicateClass + '[data-swiper-slide-index="' + l.attr("data-swiper-slide-index") + '"]').addClass(i.slideDuplicatePrevClass))
1147        },
1148        updateActiveIndex: function(e) {
1149            var t, i = this.rtlTranslate ? this.translate : -this.translate, s = this.slidesGrid, a = this.snapGrid, r = this.params, n = this.activeIndex, o = this.realIndex, l = this.snapIndex, h = e;
1150            if (void 0 === h) {
1151                for (var p = 0; p < s.length; p += 1)
1152                    void 0 !== s[p + 1] ? i >= s[p] && i < s[p + 1] - (s[p + 1] - s[p]) / 2 ? h = p : i >= s[p] && i < s[p + 1] && (h = p + 1) : i >= s[p] && (h = p);
1153                r.normalizeSlideIndex && (h < 0 || void 0 === h) && (h = 0)
1154            }
1155            if (a.indexOf(i) >= 0)
1156                t = a.indexOf(i);
1157            else {
1158                var c = Math.min(r.slidesPerGroupSkip, h);
1159                t = c + Math.floor((h - c) / r.slidesPerGroup)
1160            }
1161            if (t >= a.length && (t = a.length - 1),
1162            h !== n) {
1163                var u = parseInt(this.slides.eq(h).attr("data-swiper-slide-index") || h, 10);
1164                d.extend(this, {
1165                    snapIndex: t,
1166                    realIndex: u,
1167                    previousIndex: n,
1168                    activeIndex: h
1169                }),
1170                this.emit("activeIndexChange"),
1171                this.emit("snapIndexChange"),
1172                o !== u && this.emit("realIndexChange"),
1173                (this.initialized || this.params.runCallbacksOnInit) && this.emit("slideChange")
1174            } else
1175                t !== l && (this.snapIndex = t,
1176                this.emit("snapIndexChange"))
1177        },
1178        updateClickedSlide: function(e) {
1179            var t = this.params
1180              , i = n(e.target).closest("." + t.slideClass)[0]
1181              , s = !1;
1182            if (i)
1183                for (var a = 0; a < this.slides.length; a += 1)
1184                    this.slides[a] === i && (s = !0);
1185            if (!i || !s)
1186                return this.clickedSlide = void 0,
1187                void (this.clickedIndex = void 0);
1188            this.clickedSlide = i,
1189            this.virtual && this.params.virtual.enabled ? this.clickedIndex = parseInt(n(i).attr("data-swiper-slide-index"), 10) : this.clickedIndex = n(i).index(),
1190            t.slideToClickedSlide && void 0 !== this.clickedIndex && this.clickedIndex !== this.activeIndex && this.slideToClickedSlide()
1191        }
1192    };
1193    var v = {
1194        getTranslate: function(e) {
1195            void 0 === e && (e = this.isHorizontal() ? "x" : "y");
1196            var t = this.params
1197              , i = this.rtlTranslate
1198              , s = this.translate
1199              , a = this.$wrapperEl;
1200            if (t.virtualTranslate)
1201                return i ? -s : s;
1202            if (t.cssMode)
1203                return s;
1204            var r = d.getTranslate(a[0], e);
1205            return i && (r = -r),
1206            r || 0
1207        },
1208        setTranslate: function(e, t) {
1209            var i = this.rtlTranslate
1210              , s = this.params
1211              , a = this.$wrapperEl
1212              , r = this.wrapperEl
1213              , n = this.progress
1214              , o = 0
1215              , l = 0;
1216            this.isHorizontal() ? o = i ? -e : e : l = e,
1217            s.roundLengths && (o = Math.floor(o),
1218            l = Math.floor(l)),
1219            s.cssMode ? r[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = this.isHorizontal() ? -o : -l : s.virtualTranslate || a.transform("translate3d(" + o + "px, " + l + "px, 0px)"),
1220            this.previousTranslate = this.translate,
1221            this.translate = this.isHorizontal() ? o : l;
1222            var d = this.maxTranslate() - this.minTranslate();
1223            (0 === d ? 0 : (e - this.minTranslate()) / d) !== n && this.updateProgress(e),
1224            this.emit("setTranslate", this.translate, t)
1225        },
1226        minTranslate: function() {
1227            return -this.snapGrid[0]
1228        },
1229        maxTranslate: function() {
1230            return -this.snapGrid[this.snapGrid.length - 1]
1231        },
1232        translateTo: function(e, t, i, s, a) {
1233            var r;
1234            void 0 === e && (e = 0),
1235            void 0 === t && (t = this.params.speed),
1236            void 0 === i && (i = !0),
1237            void 0 === s && (s = !0);
1238            var n = this
1239              , o = n.params
1240              , l = n.wrapperEl;
1241            if (n.animating && o.preventInteractionOnTransition)
1242                return !1;
1243            var d, h = n.minTranslate(), p = n.maxTranslate();
1244            if (d = s && e > h ? h : s && e < p ? p : e,
1245            n.updateProgress(d),
1246            o.cssMode) {
1247                var c = n.isHorizontal();
1248                return 0 === t ? l[c ? "scrollLeft" : "scrollTop"] = -d : l.scrollTo ? l.scrollTo(((r = {})[c ? "left" : "top"] = -d,
1249                r.behavior = "smooth",
1250                r)) : l[c ? "scrollLeft" : "scrollTop"] = -d,
1251                !0
1252            }
1253            return 0 === t ? (n.setTransition(0),
1254            n.setTranslate(d),
1255            i && (n.emit("beforeTransitionStart", t, a),
1256            n.emit("transitionEnd"))) : (n.setTransition(t),
1257            n.setTranslate(d),
1258            i && (n.emit("beforeTransitionStart", t, a),
1259            n.emit("transitionStart")),
1260            n.animating || (n.animating = !0,
1261            n.onTranslateToWrapperTransitionEnd || (n.onTranslateToWrapperTransitionEnd = function(e) {
1262                n && !n.destroyed && e.target === this && (n.$wrapperEl[0].removeEventListener("transitionend", n.onTranslateToWrapperTransitionEnd),
1263                n.$wrapperEl[0].removeEventListener("webkitTransitionEnd", n.onTranslateToWrapperTransitionEnd),
1264                n.onTranslateToWrapperTransitionEnd = null,
1265                delete n.onTranslateToWrapperTransitionEnd,
1266                i && n.emit("transitionEnd"))
1267            }
1268            ),
1269            n.$wrapperEl[0].addEventListener("transitionend", n.onTranslateToWrapperTransitionEnd),
1270            n.$wrapperEl[0].addEventListener("webkitTransitionEnd", n.onTranslateToWrapperTransitionEnd))),
1271            !0
1272        }
1273    };
1274    var f = {
1275        setTransition: function(e, t) {
1276            this.params.cssMode || this.$wrapperEl.transition(e),
1277            this.emit("setTransition", e, t)
1278        },
1279        transitionStart: function(e, t) {
1280            void 0 === e && (e = !0);
1281            var i = this.activeIndex
1282              , s = this.params
1283              , a = this.previousIndex;
1284            if (!s.cssMode) {
1285                s.autoHeight && this.updateAutoHeight();
1286                var r = t;
1287                if (r || (r = i > a ? "next" : i < a ? "prev" : "reset"),
1288                this.emit("transitionStart"),
1289                e && i !== a) {
1290                    if ("reset" === r)
1291                        return void this.emit("slideResetTransitionStart");
1292                    this.emit("slideChangeTransitionStart"),
1293                    "next" === r ? this.emit("slideNextTransitionStart") : this.emit("slidePrevTransitionStart")
1294                }
1295            }
1296        },
1297        transitionEnd: function(e, t) {
1298            void 0 === e && (e = !0);
1299            var i = this.activeIndex
1300              , s = this.previousIndex
1301              , a = this.params;
1302            if (this.animating = !1,
1303            !a.cssMode) {
1304                this.setTransition(0);
1305                var r = t;
1306                if (r || (r = i > s ? "next" : i < s ? "prev" : "reset"),
1307                this.emit("transitionEnd"),
1308                e && i !== s) {
1309                    if ("reset" === r)
1310                        return void this.emit("slideResetTransitionEnd");
1311                    this.emit("slideChangeTransitionEnd"),
1312                    "next" === r ? this.emit("slideNextTransitionEnd") : this.emit("slidePrevTransitionEnd")
1313                }
1314            }
1315        }
1316    };
1317    var m = {
1318        slideTo: function(e, t, i, s) {
1319            var a;
1320            void 0 === e && (e = 0),
1321            void 0 === t && (t = this.params.speed),
1322            void 0 === i && (i = !0);
1323            var r = this
1324              , n = e;
1325            n < 0 && (n = 0);
1326            var o = r.params
1327              , l = r.snapGrid
1328              , d = r.slidesGrid
1329              , h = r.previousIndex
1330              , p = r.activeIndex
1331              , c = r.rtlTranslate
1332              , u = r.wrapperEl;
1333            if (r.animating && o.preventInteractionOnTransition)
1334                return !1;
1335            var v = Math.min(r.params.slidesPerGroupSkip, n)
1336              , f = v + Math.floor((n - v) / r.params.slidesPerGroup);
1337            f >= l.length && (f = l.length - 1),
1338            (p || o.initialSlide || 0) === (h || 0) && i && r.emit("beforeSlideChangeStart");
1339            var m, g = -l[f];
1340            if (r.updateProgress(g),
1341            o.normalizeSlideIndex)
1342                for (var b = 0; b < d.length; b += 1)
1343                    -Math.floor(100 * g) >= Math.floor(100 * d[b]) && (n = b);
1344            if (r.initialized && n !== p) {
1345                if (!r.allowSlideNext && g < r.translate && g < r.minTranslate())
1346                    return !1;
1347                if (!r.allowSlidePrev && g > r.translate && g > r.maxTranslate() && (p || 0) !== n)
1348                    return !1
1349            }
1350            if (m = n > p ? "next" : n < p ? "prev" : "reset",
1351            c && -g === r.translate || !c && g === r.translate)
1352                return r.updateActiveIndex(n),
1353                o.autoHeight && r.updateAutoHeight(),
1354                r.updateSlidesClasses(),
1355                "slide" !== o.effect && r.setTranslate(g),
1356                "reset" !== m && (r.transitionStart(i, m),
1357                r.transitionEnd(i, m)),
1358                !1;
1359            if (o.cssMode) {
1360                var w = r.isHorizontal()
1361                  , y = -g;
1362                return c && (y = u.scrollWidth - u.offsetWidth - y),
1363                0 === t ? u[w ? "scrollLeft" : "scrollTop"] = y : u.scrollTo ? u.scrollTo(((a = {})[w ? "left" : "top"] = y,
1364                a.behavior = "smooth",
1365                a)) : u[w ? "scrollLeft" : "scrollTop"] = y,
1366                !0
1367            }
1368            return 0 === t ? (r.setTransition(0),
1369            r.setTranslate(g),
1370            r.updateActiveIndex(n),
1371            r.updateSlidesClasses(),
1372            r.emit("beforeTransitionStart", t, s),
1373            r.transitionStart(i, m),
1374            r.transitionEnd(i, m)) : (r.setTransition(t),
1375            r.setTranslate(g),
1376            r.updateActiveIndex(n),
1377            r.updateSlidesClasses(),
1378            r.emit("beforeTransitionStart", t, s),
1379            r.transitionStart(i, m),
1380            r.animating || (r.animating = !0,
1381            r.onSlideToWrapperTransitionEnd || (r.onSlideToWrapperTransitionEnd = function(e) {
1382                r && !r.destroyed && e.target === this && (r.$wrapperEl[0].removeEventListener("transitionend", r.onSlideToWrapperTransitionEnd),
1383                r.$wrapperEl[0].removeEventListener("webkitTransitionEnd", r.onSlideToWrapperTransitionEnd),
1384                r.onSlideToWrapperTransitionEnd = null,
1385                delete r.onSlideToWrapperTransitionEnd,
1386                r.transitionEnd(i, m))
1387            }
1388            ),
1389            r.$wrapperEl[0].addEventListener("transitionend", r.onSlideToWrapperTransitionEnd),
1390            r.$wrapperEl[0].addEventListener("webkitTransitionEnd", r.onSlideToWrapperTransitionEnd))),
1391            !0
1392        },
1393        slideToLoop: function(e, t, i, s) {
1394            void 0 === e && (e = 0),
1395            void 0 === t && (t = this.params.speed),
1396            void 0 === i && (i = !0);
1397            var a = e;
1398            return this.params.loop && (a += this.loopedSlides),
1399            this.slideTo(a, t, i, s)
1400        },
1401        slideNext: function(e, t, i) {
1402            void 0 === e && (e = this.params.speed),
1403            void 0 === t && (t = !0);
1404            var s = this.params
1405              , a = this.animating
1406              , r = this.activeIndex < s.slidesPerGroupSkip ? 1 : s.slidesPerGroup;
1407            if (s.loop) {
1408                if (a)
1409                    return !1;
1410                this.loopFix(),
1411                this._clientLeft = this.$wrapperEl[0].clientLeft
1412            }
1413            return this.slideTo(this.activeIndex + r, e, t, i)
1414        },
1415        slidePrev: function(e, t, i) {
1416            void 0 === e && (e = this.params.speed),
1417            void 0 === t && (t = !0);
1418            var s = this.params
1419              , a = this.animating
1420              , r = this.snapGrid
1421              , n = this.slidesGrid
1422              , o = this.rtlTranslate;
1423            if (s.loop) {
1424                if (a)
1425                    return !1;
1426                this.loopFix(),
1427                this._clientLeft = this.$wrapperEl[0].clientLeft
1428            }
1429            function l(e) {
1430                return e < 0 ? -Math.floor(Math.abs(e)) : Math.floor(e)
1431            }
1432            var d, h = l(o ? this.translate : -this.translate), p = r.map((function(e) {
1433                return l(e)
1434            }
1435            )), c = (n.map((function(e) {
1436                return l(e)
1437            }
1438            )),
1439            r[p.indexOf(h)],
1440            r[p.indexOf(h) - 1]);
1441            return void 0 === c && s.cssMode && r.forEach((function(e) {
1442                !c && h >= e && (c = e)
1443            }
1444            )),
1445            void 0 !== c && (d = n.indexOf(c)) < 0 && (d = this.activeIndex - 1),
1446            this.slideTo(d, e, t, i)
1447        },
1448        slideReset: function(e, t, i) {
1449            return void 0 === e && (e = this.params.speed),
1450            void 0 === t && (t = !0),
1451            this.slideTo(this.activeIndex, e, t, i)
1452        },
1453        slideToClosest: function(e, t, i, s) {
1454            void 0 === e && (e = this.params.speed),
1455            void 0 === t && (t = !0),
1456            void 0 === s && (s = .5);
1457            var a = this.activeIndex
1458              , r = Math.min(this.params.slidesPerGroupSkip, a)
1459              , n = r + Math.floor((a - r) / this.params.slidesPerGroup)
1460              , o = this.rtlTranslate ? this.translate : -this.translate;
1461            if (o >= this.snapGrid[n]) {
1462                var l = this.snapGrid[n];
1463                o - l > (this.snapGrid[n + 1] - l) * s && (a += this.params.slidesPerGroup)
1464            } else {
1465                var d = this.snapGrid[n - 1];
1466                o - d <= (this.snapGrid[n] - d) * s && (a -= this.params.slidesPerGroup)
1467            }
1468            return a = Math.max(a, 0),
1469            a = Math.min(a, this.slidesGrid.length - 1),
1470            this.slideTo(a, e, t, i)
1471        },
1472        slideToClickedSlide: function() {
1473            var e, t = this, i = t.params, s = t.$wrapperEl, a = "auto" === i.slidesPerView ? t.slidesPerViewDynamic() : i.slidesPerView, r = t.clickedIndex;
1474            if (i.loop) {
1475                if (t.animating)
1476                    return;
1477                e = parseInt(n(t.clickedSlide).attr("data-swiper-slide-index"), 10),
1478                i.centeredSlides ? r < t.loopedSlides - a / 2 || r > t.slides.length - t.loopedSlides + a / 2 ? (t.loopFix(),
1479                r = s.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + i.slideDuplicateClass + ")").eq(0).index(),
1480                d.nextTick((function() {
1481                    t.slideTo(r)
1482                }
1483                ))) : t.slideTo(r) : r > t.slides.length - a ? (t.loopFix(),
1484                r = s.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + i.slideDuplicateClass + ")").eq(0).index(),
1485                d.nextTick((function() {
1486                    t.slideTo(r)
1487                }
1488                ))) : t.slideTo(r)
1489            } else
1490                t.slideTo(r)
1491        }
1492    };
1493    var g = {
1494        loopCreate: function() {
1495            var e = this
1496              , t = e.params
1497              , s = e.$wrapperEl;
1498            s.children("." + t.slideClass + "." + t.slideDuplicateClass).remove();
1499            var a = s.children("." + t.slideClass);
1500            if (t.loopFillGroupWithBlank) {
1501                var r = t.slidesPerGroup - a.length % t.slidesPerGroup;
1502                if (r !== t.slidesPerGroup) {
1503                    for (var o = 0; o < r; o += 1) {
1504                        var l = n(i.createElement("div")).addClass(t.slideClass + " " + t.slideBlankClass);
1505                        s.append(l)
1506                    }
1507                    a = s.children("." + t.slideClass)
1508                }
1509            }
1510            "auto" !== t.slidesPerView || t.loopedSlides || (t.loopedSlides = a.length),
1511            e.loopedSlides = Math.ceil(parseFloat(t.loopedSlides || t.slidesPerView, 10)),
1512            e.loopedSlides += t.loopAdditionalSlides,
1513            e.loopedSlides > a.length && (e.loopedSlides = a.length);
1514            var d = []
1515              , h = [];
1516            a.each((function(t, i) {
1517                var s = n(i);
1518                t < e.loopedSlides && h.push(i),
1519                t < a.length && t >= a.length - e.loopedSlides && d.push(i),
1520                s.attr("data-swiper-slide-index", t)
1521            }
1522            ));
1523            for (var p = 0; p < h.length; p += 1)
1524                s.append(n(h[p].cloneNode(!0)).addClass(t.slideDuplicateClass));
1525            for (var c = d.length - 1; c >= 0; c -= 1)
1526                s.prepend(n(d[c].cloneNode(!0)).addClass(t.slideDuplicateClass))
1527        },
1528        loopFix: function() {
1529            this.emit("beforeLoopFix");
1530            var e, t = this.activeIndex, i = this.slides, s = this.loopedSlides, a = this.allowSlidePrev, r = this.allowSlideNext, n = this.snapGrid, o = this.rtlTranslate;
1531            this.allowSlidePrev = !0,
1532            this.allowSlideNext = !0;
1533            var l = -n[t] - this.getTranslate();
1534            if (t < s)
1535                e = i.length - 3 * s + t,
1536                e += s,
1537                this.slideTo(e, 0, !1, !0) && 0 !== l && this.setTranslate((o ? -this.translate : this.translate) - l);
1538            else if (t >= i.length - s) {
1539                e = -i.length + t + s,
1540                e += s,
1541                this.slideTo(e, 0, !1, !0) && 0 !== l && this.setTranslate((o ? -this.translate : this.translate) - l)
1542            }
1543            this.allowSlidePrev = a,
1544            this.allowSlideNext = r,
1545            this.emit("loopFix")
1546        },
1547        loopDestroy: function() {
1548            var e = this.$wrapperEl
1549              , t = this.params
1550              , i = this.slides;
1551            e.children("." + t.slideClass + "." + t.slideDuplicateClass + ",." + t.slideClass + "." + t.slideBlankClass).remove(),
1552            i.removeAttr("data-swiper-slide-index")
1553        }
1554    };
1555    var b = {
1556        setGrabCursor: function(e) {
1557            if (!(h.touch || !this.params.simulateTouch || this.params.watchOverflow && this.isLocked || this.params.cssMode)) {
1558                var t = this.el;
1559                t.style.cursor = "move",
1560                t.style.cursor = e ? "-webkit-grabbing" : "-webkit-grab",
1561                t.style.cursor = e ? "-moz-grabbin" : "-moz-grab",
1562                t.style.cursor = e ? "grabbing" : "grab"
1563            }
1564        },
1565        unsetGrabCursor: function() {
1566            h.touch || this.params.watchOverflow && this.isLocked || this.params.cssMode || (this.el.style.cursor = "")
1567        }
1568    };
1569    var w, y, x, E, T, S, C, M, P, z, k, $, L, I, O, D = {
1570        appendSlide: function(e) {
1571            var t = this.$wrapperEl
1572              , i = this.params;
1573            if (i.loop && this.loopDestroy(),
1574            "object" == typeof e && "length"in e)
1575                for (var s = 0; s < e.length; s += 1)
1576                    e[s] && t.append(e[s]);
1577            else
1578                t.append(e);
1579            i.loop && this.loopCreate(),
1580            i.observer && h.observer || this.update()
1581        },
1582        prependSlide: function(e) {
1583            var t = this.params
1584              , i = this.$wrapperEl
1585              , s = this.activeIndex;
1586            t.loop && this.loopDestroy();
1587            var a = s + 1;
1588            if ("object" == typeof e && "length"in e) {
1589                for (var r = 0; r < e.length; r += 1)
1590                    e[r] && i.prepend(e[r]);
1591                a = s + e.length
1592            } else
1593                i.prepend(e);
1594            t.loop && this.loopCreate(),
1595            t.observer && h.observer || this.update(),
1596            this.slideTo(a, 0, !1)
1597        },
1598        addSlide: function(e, t) {
1599            var i = this.$wrapperEl
1600              , s = this.params
1601              , a = this.activeIndex;
1602            s.loop && (a -= this.loopedSlides,
1603            this.loopDestroy(),
1604            this.slides = i.children("." + s.slideClass));
1605            var r = this.slides.length;
1606            if (e <= 0)
1607                this.prependSlide(t);
1608            else if (e >= r)
1609                this.appendSlide(t);
1610            else {
1611                for (var n = a > e ? a + 1 : a, o = [], l = r - 1; l >= e; l -= 1) {
1612                    var d = this.slides.eq(l);
1613                    d.remove(),
1614                    o.unshift(d)
1615                }
1616                if ("object" == typeof t && "length"in t) {
1617                    for (var p = 0; p < t.length; p += 1)
1618                        t[p] && i.append(t[p]);
1619                    n = a > e ? a + t.length : a
1620                } else
1621                    i.append(t);
1622                for (var c = 0; c < o.length; c += 1)
1623                    i.append(o[c]);
1624                s.loop && this.loopCreate(),
1625                s.observer && h.observer || this.update(),
1626                s.loop ? this.slideTo(n + this.loopedSlides, 0, !1) : this.slideTo(n, 0, !1)
1627            }
1628        },
1629        removeSlide: function(e) {
1630            var t = this.params
1631              , i = this.$wrapperEl
1632              , s = this.activeIndex;
1633            t.loop && (s -= this.loopedSlides,
1634            this.loopDestroy(),
1635            this.slides = i.children("." + t.slideClass));
1636            var a, r = s;
1637            if ("object" == typeof e && "length"in e) {
1638                for (var n = 0; n < e.length; n += 1)
1639                    a = e[n],
1640                    this.slides[a] && this.slides.eq(a).remove(),
1641                    a < r && (r -= 1);
1642                r = Math.max(r, 0)
1643            } else
1644                a = e,
1645                this.slides[a] && this.slides.eq(a).remove(),
1646                a < r && (r -= 1),
1647                r = Math.max(r, 0);
1648            t.loop && this.loopCreate(),
1649            t.observer && h.observer || this.update(),
1650            t.loop ? this.slideTo(r + this.loopedSlides, 0, !1) : this.slideTo(r, 0, !1)
1651        },
1652        removeAllSlides: function() {
1653            for (var e = [], t = 0; t < this.slides.length; t += 1)
1654                e.push(t);
1655            this.removeSlide(e)
1656        }
1657    }, A = (w = a.navigator.platform,
1658    y = a.navigator.userAgent,
1659    x = {
1660        ios: !1,
1661        android: !1,
1662        androidChrome: !1,
1663        desktop: !1,
1664        iphone: !1,
1665        ipod: !1,
1666        ipad: !1,
1667        edge: !1,
1668        ie: !1,
1669        firefox: !1,
1670        macos: !1,
1671        windows: !1,
1672        cordova: !(!a.cordova && !a.phonegap),
1673        phonegap: !(!a.cordova && !a.phonegap),
1674        electron: !1
1675    },
1676    E = a.screen.width,
1677    T = a.screen.height,
1678    S = y.match(/(Android);?[\s\/]+([\d.]+)?/),
1679    C = y.match(/(iPad).*OS\s([\d_]+)/),
1680    M = y.match(/(iPod)(.*OS\s([\d_]+))?/),
1681    P = !C && y.match(/(iPhone\sOS|iOS)\s([\d_]+)/),
1682    z = y.indexOf("MSIE ") >= 0 || y.indexOf("Trident/") >= 0,
1683    k = y.indexOf("Edge/") >= 0,
1684    $ = y.indexOf("Gecko/") >= 0 && y.indexOf("Firefox/") >= 0,
1685    L = "Win32" === w,
1686    I = y.toLowerCase().indexOf("electron") >= 0,
1687    O = "MacIntel" === w,
1688    !C && O && h.touch && (1024 === E && 1366 === T || 834 === E && 1194 === T || 834 === E && 1112 === T || 768 === E && 1024 === T) && (C = y.match(/(Version)\/([\d.]+)/),
1689    O = !1),
1690    x.ie = z,
1691    x.edge = k,
1692    x.firefox = $,
1693    S && !L && (x.os = "android",
1694    x.osVersion = S[2],
1695    x.android = !0,
1696    x.androidChrome = y.toLowerCase().indexOf("chrome") >= 0),
1697    (C || P || M) && (x.os = "ios",
1698    x.ios = !0),
1699    P && !M && (x.osVersion = P[2].replace(/_/g, "."),
1700    x.iphone = !0),
1701    C && (x.osVersion = C[2].replace(/_/g, "."),
1702    x.ipad = !0),
1703    M && (x.osVersion = M[3] ? M[3].replace(/_/g, ".") : null,
1704    x.ipod = !0),
1705    x.ios && x.osVersion && y.indexOf("Version/") >= 0 && "10" === x.osVersion.split(".")[0] && (x.osVersion = y.toLowerCase().split("version/")[1].split(" ")[0]),
1706    x.webView = !(!(P || C || M) || !y.match(/.*AppleWebKit(?!.*Safari)/i) && !a.navigator.standalone) || a.matchMedia && a.matchMedia("(display-mode: standalone)").matches,
1707    x.webview = x.webView,
1708    x.standalone = x.webView,
1709    x.desktop = !(x.ios || x.android) || I,
1710    x.desktop && (x.electron = I,
1711    x.macos = O,
1712    x.windows = L,
1713    x.macos && (x.os = "macos"),
1714    x.windows && (x.os = "windows")),
1715    x.pixelRatio = a.devicePixelRatio || 1,
1716    x);
1717    function G(e) {
1718        var t = this.touchEventsData
1719          , s = this.params
1720          , r = this.touches;
1721        if (!this.animating || !s.preventInteractionOnTransition) {
1722            var o = e;
1723            o.originalEvent && (o = o.originalEvent);
1724            var l = n(o.target);
1725            if (("wrapper" !== s.touchEventsTarget || l.closest(this.wrapperEl).length) && (t.isTouchEvent = "touchstart" === o.type,
1726            (t.isTouchEvent || !("which"in o) || 3 !== o.which) && !(!t.isTouchEvent && "button"in o && o.button > 0 || t.isTouched && t.isMoved)))
1727                if (s.noSwiping && l.closest(s.noSwipingSelector ? s.noSwipingSelector : "." + s.noSwipingClass)[0])
1728                    this.allowClick = !0;
1729                else if (!s.swipeHandler || l.closest(s.swipeHandler)[0]) {
1730                    r.currentX = "touchstart" === o.type ? o.targetTouches[0].pageX : o.pageX,
1731                    r.currentY = "touchstart" === o.type ? o.targetTouches[0].pageY : o.pageY;
1732                    var h = r.currentX
1733                      , p = r.currentY
1734                      , c = s.edgeSwipeDetection || s.iOSEdgeSwipeDetection
1735                      , u = s.edgeSwipeThreshold || s.iOSEdgeSwipeThreshold;
1736                    if (!c || !(h <= u || h >= a.screen.width - u)) {
1737                        if (d.extend(t, {
1738                            isTouched: !0,
1739                            isMoved: !1,
1740                            allowTouchCallbacks: !0,
1741                            isScrolling: void 0,
1742                            startMoving: void 0
1743                        }),
1744                        r.startX = h,
1745                        r.startY = p,
1746                        t.touchStartTime = d.now(),
1747                        this.allowClick = !0,
1748                        this.updateSize(),
1749                        this.swipeDirection = void 0,
1750                        s.threshold > 0 && (t.allowThresholdMove = !1),
1751                        "touchstart" !== o.type) {
1752                            var v = !0;
1753                            l.is(t.formElements) && (v = !1),
1754                            i.activeElement && n(i.activeElement).is(t.formElements) && i.activeElement !== l[0] && i.activeElement.blur();
1755                            var f = v && this.allowTouchMove && s.touchStartPreventDefault;
1756                            (s.touchStartForcePreventDefault || f) && o.preventDefault()
1757                        }
1758                        this.emit("touchStart", o)
1759                    }
1760                }
1761        }
1762    }
1763    function H(e) {
1764        var t = this.touchEventsData
1765          , s = this.params
1766          , a = this.touches
1767          , r = this.rtlTranslate
1768          , o = e;
1769        if (o.originalEvent && (o = o.originalEvent),
1770        t.isTouched) {
1771            if (!t.isTouchEvent || "touchmove" === o.type) {
1772                var l = "touchmove" === o.type && o.targetTouches && (o.targetTouches[0] || o.changedTouches[0])
1773                  , h = "touchmove" === o.type ? l.pageX : o.pageX
1774                  , p = "touchmove" === o.type ? l.pageY : o.pageY;
1775                if (o.preventedByNestedSwiper)
1776                    return a.startX = h,
1777                    void (a.startY = p);
1778                if (!this.allowTouchMove)
1779                    return this.allowClick = !1,
1780                    void (t.isTouched && (d.extend(a, {
1781                        startX: h,
1782                        startY: p,
1783                        currentX: h,
1784                        currentY: p
1785                    }),
1786                    t.touchStartTime = d.now()));
1787                if (t.isTouchEvent && s.touchReleaseOnEdges && !s.loop)
1788                    if (this.isVertical()) {
1789                        if (p < a.startY && this.translate <= this.maxTranslate() || p > a.startY && this.translate >= this.minTranslate())
1790                            return t.isTouched = !1,
1791                            void (t.isMoved = !1)
1792                    } else if (h < a.startX && this.translate <= this.maxTranslate() || h > a.startX && this.translate >= this.minTranslate())
1793                        return;
1794                if (t.isTouchEvent && i.activeElement && o.target === i.activeElement && n(o.target).is(t.formElements))
1795                    return t.isMoved = !0,
1796                    void (this.allowClick = !1);
1797                if (t.allowTouchCallbacks && this.emit("touchMove", o),
1798                !(o.targetTouches && o.targetTouches.length > 1)) {
1799                    a.currentX = h,
1800                    a.currentY = p;
1801                    var c = a.currentX - a.startX
1802                      , u = a.currentY - a.startY;
1803                    if (!(this.params.threshold && Math.sqrt(Math.pow(c, 2) + Math.pow(u, 2)) < this.params.threshold)) {
1804                        var v;
1805                        if (void 0 === t.isScrolling)
1806                            this.isHorizontal() && a.currentY === a.startY || this.isVertical() && a.currentX === a.startX ? t.isScrolling = !1 : c * c + u * u >= 25 && (v = 180 * Math.atan2(Math.abs(u), Math.abs(c)) / Math.PI,
1807                            t.isScrolling = this.isHorizontal() ? v > s.touchAngle : 90 - v > s.touchAngle);
1808                        if (t.isScrolling && this.emit("touchMoveOpposite", o),
1809                        void 0 === t.startMoving && (a.currentX === a.startX && a.currentY === a.startY || (t.startMoving = !0)),
1810                        t.isScrolling)
1811                            t.isTouched = !1;
1812                        else if (t.startMoving) {
1813                            this.allowClick = !1,
1814                            !s.cssMode && o.cancelable && o.preventDefault(),
1815                            s.touchMoveStopPropagation && !s.nested && o.stopPropagation(),
1816                            t.isMoved || (s.loop && this.loopFix(),
1817                            t.startTranslate = this.getTranslate(),
1818                            this.setTransition(0),
1819                            this.animating && this.$wrapperEl.trigger("webkitTransitionEnd transitionend"),
1820                            t.allowMomentumBounce = !1,
1821                            !s.grabCursor || !0 !== this.allowSlideNext && !0 !== this.allowSlidePrev || this.setGrabCursor(!0),
1822                            this.emit("sliderFirstMove", o)),
1823                            this.emit("sliderMove", o),
1824                            t.isMoved = !0;
1825                            var f = this.isHorizontal() ? c : u;
1826                            a.diff = f,
1827                            f *= s.touchRatio,
1828                            r && (f = -f),
1829                            this.swipeDirection = f > 0 ? "prev" : "next",
1830                            t.currentTranslate = f + t.startTranslate;
1831                            var m = !0
1832                              , g = s.resistanceRatio;
1833                            if (s.touchReleaseOnEdges && (g = 0),
1834                            f > 0 && t.currentTranslate > this.minTranslate() ? (m = !1,
1835                            s.resistance && (t.currentTranslate = this.minTranslate() - 1 + Math.pow(-this.minTranslate() + t.startTranslate + f, g))) : f < 0 && t.currentTranslate < this.maxTranslate() && (m = !1,
1836                            s.resistance && (t.currentTranslate = this.maxTranslate() + 1 - Math.pow(this.maxTranslate() - t.startTranslate - f, g))),
1837                            m && (o.preventedByNestedSwiper = !0),
1838                            !this.allowSlideNext && "next" === this.swipeDirection && t.currentTranslate < t.startTranslate && (t.currentTranslate = t.startTranslate),
1839                            !this.allowSlidePrev && "prev" === this.swipeDirection && t.currentTranslate > t.startTranslate && (t.currentTranslate = t.startTranslate),
1840                            s.threshold > 0) {
1841                                if (!(Math.abs(f) > s.threshold || t.allowThresholdMove))
1842                                    return void (t.currentTranslate = t.startTranslate);
1843                                if (!t.allowThresholdMove)
1844                                    return t.allowThresholdMove = !0,
1845                                    a.startX = a.currentX,
1846                                    a.startY = a.currentY,
1847                                    t.currentTranslate = t.startTranslate,
1848                                    void (a.diff = this.isHorizontal() ? a.currentX - a.startX : a.currentY - a.startY)
1849                            }
1850                            s.followFinger && !s.cssMode && ((s.freeMode || s.watchSlidesProgress || s.watchSlidesVisibility) && (this.updateActiveIndex(),
1851                            this.updateSlidesClasses()),
1852                            s.freeMode && (0 === t.velocities.length && t.velocities.push({
1853                                position: a[this.isHorizontal() ? "startX" : "startY"],
1854                                time: t.touchStartTime
1855                            }),
1856                            t.velocities.push({
1857                                position: a[this.isHorizontal() ? "currentX" : "currentY"],
1858                                time: d.now()
1859                            })),
1860                            this.updateProgress(t.currentTranslate),
1861                            this.setTranslate(t.currentTranslate))
1862                        }
1863                    }
1864                }
1865            }
1866        } else
vendor: 9,525 bytes, lines 1867-2051
1867            t.startMoving && t.isScrolling && this.emit("touchMoveOpposite", o)
1868    }
1869    function B(e) {
1870        var t = this
1871          , i = t.touchEventsData
1872          , s = t.params
1873          , a = t.touches
1874          , r = t.rtlTranslate
1875          , n = t.$wrapperEl
1876          , o = t.slidesGrid
1877          , l = t.snapGrid
1878          , h = e;
1879        if (h.originalEvent && (h = h.originalEvent),
1880        i.allowTouchCallbacks && t.emit("touchEnd", h),
1881        i.allowTouchCallbacks = !1,
1882        !i.isTouched)
1883            return i.isMoved && s.grabCursor && t.setGrabCursor(!1),
1884            i.isMoved = !1,
1885            void (i.startMoving = !1);
1886        s.grabCursor && i.isMoved && i.isTouched && (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) && t.setGrabCursor(!1);
1887        var p, c = d.now(), u = c - i.touchStartTime;
1888        if (t.allowClick && (t.updateClickedSlide(h),
1889        t.emit("tap click", h),
1890        u < 300 && c - i.lastClickTime < 300 && t.emit("doubleTap doubleClick", h)),
1891        i.lastClickTime = d.now(),
1892        d.nextTick((function() {
1893            t.destroyed || (t.allowClick = !0)
1894        }
1895        )),
1896        !i.isTouched || !i.isMoved || !t.swipeDirection || 0 === a.diff || i.currentTranslate === i.startTranslate)
1897            return i.isTouched = !1,
1898            i.isMoved = !1,
1899            void (i.startMoving = !1);
1900        if (i.isTouched = !1,
1901        i.isMoved = !1,
1902        i.startMoving = !1,
1903        p = s.followFinger ? r ? t.translate : -t.translate : -i.currentTranslate,
1904        !s.cssMode)
1905            if (s.freeMode) {
1906                if (p < -t.minTranslate())
1907                    return void t.slideTo(t.activeIndex);
1908                if (p > -t.maxTranslate())
1909                    return void (t.slides.length < l.length ? t.slideTo(l.length - 1) : t.slideTo(t.slides.length - 1));
1910                if (s.freeModeMomentum) {
1911                    if (i.velocities.length > 1) {
1912                        var v = i.velocities.pop()
1913                          , f = i.velocities.pop()
1914                          , m = v.position - f.position
1915                          , g = v.time - f.time;
1916                        t.velocity = m / g,
1917                        t.velocity /= 2,
1918                        Math.abs(t.velocity) < s.freeModeMinimumVelocity && (t.velocity = 0),
1919                        (g > 150 || d.now() - v.time > 300) && (t.velocity = 0)
1920                    } else
1921                        t.velocity = 0;
1922                    t.velocity *= s.freeModeMomentumVelocityRatio,
1923                    i.velocities.length = 0;
1924                    var b = 1e3 * s.freeModeMomentumRatio
1925                      , w = t.velocity * b
1926                      , y = t.translate + w;
1927                    r && (y = -y);
1928                    var x, E, T = !1, S = 20 * Math.abs(t.velocity) * s.freeModeMomentumBounceRatio;
1929                    if (y < t.maxTranslate())
1930                        s.freeModeMomentumBounce ? (y + t.maxTranslate() < -S && (y = t.maxTranslate() - S),
1931                        x = t.maxTranslate(),
1932                        T = !0,
1933                        i.allowMomentumBounce = !0) : y = t.maxTranslate(),
1934                        s.loop && s.centeredSlides && (E = !0);
1935                    else if (y > t.minTranslate())
1936                        s.freeModeMomentumBounce ? (y - t.minTranslate() > S && (y = t.minTranslate() + S),
1937                        x = t.minTranslate(),
1938                        T = !0,
1939                        i.allowMomentumBounce = !0) : y = t.minTranslate(),
1940                        s.loop && s.centeredSlides && (E = !0);
1941                    else if (s.freeModeSticky) {
1942                        for (var C, M = 0; M < l.length; M += 1)
1943                            if (l[M] > -y) {
1944                                C = M;
1945                                break
1946                            }
1947                        y = -(y = Math.abs(l[C] - y) < Math.abs(l[C - 1] - y) || "next" === t.swipeDirection ? l[C] : l[C - 1])
1948                    }
1949                    if (E && t.once("transitionEnd", (function() {
1950                        t.loopFix()
1951                    }
1952                    )),
1953                    0 !== t.velocity) {
1954                        if (b = r ? Math.abs((-y - t.translate) / t.velocity) : Math.abs((y - t.translate) / t.velocity),
1955                        s.freeModeSticky) {
1956                            var P = Math.abs((r ? -y : y) - t.translate)
1957                              , z = t.slidesSizesGrid[t.activeIndex];
1958                            b = P < z ? s.speed : P < 2 * z ? 1.5 * s.speed : 2.5 * s.speed
1959                        }
1960                    } else if (s.freeModeSticky)
1961                        return void t.slideToClosest();
1962                    s.freeModeMomentumBounce && T ? (t.updateProgress(x),
1963                    t.setTransition(b),
1964                    t.setTranslate(y),
1965                    t.transitionStart(!0, t.swipeDirection),
1966                    t.animating = !0,
1967                    n.transitionEnd((function() {
1968                        t && !t.destroyed && i.allowMomentumBounce && (t.emit("momentumBounce"),
1969                        t.setTransition(s.speed),
1970                        setTimeout((function() {
1971                            t.setTranslate(x),
1972                            n.transitionEnd((function() {
1973                                t && !t.destroyed && t.transitionEnd()
1974                            }
1975                            ))
1976                        }
1977                        ), 0))
1978                    }
1979                    ))) : t.velocity ? (t.updateProgress(y),
1980                    t.setTransition(b),
1981                    t.setTranslate(y),
1982                    t.transitionStart(!0, t.swipeDirection),
1983                    t.animating || (t.animating = !0,
1984                    n.transitionEnd((function() {
1985                        t && !t.destroyed && t.transitionEnd()
1986                    }
1987                    )))) : t.updateProgress(y),
1988                    t.updateActiveIndex(),
1989                    t.updateSlidesClasses()
1990                } else if (s.freeModeSticky)
1991                    return void t.slideToClosest();
1992                (!s.freeModeMomentum || u >= s.longSwipesMs) && (t.updateProgress(),
1993                t.updateActiveIndex(),
1994                t.updateSlidesClasses())
1995            } else {
1996                for (var k = 0, $ = t.slidesSizesGrid[0], L = 0; L < o.length; L += L < s.slidesPerGroupSkip ? 1 : s.slidesPerGroup) {
1997                    var I = L < s.slidesPerGroupSkip - 1 ? 1 : s.slidesPerGroup;
1998                    void 0 !== o[L + I] ? p >= o[L] && p < o[L + I] && (k = L,
1999                    $ = o[L + I] - o[L]) : p >= o[L] && (k = L,
2000                    $ = o[o.length - 1] - o[o.length - 2])
2001                }
2002                var O = (p - o[k]) / $
2003                  , D = k < s.slidesPerGroupSkip - 1 ? 1 : s.slidesPerGroup;
2004                if (u > s.longSwipesMs) {
2005                    if (!s.longSwipes)
2006                        return void t.slideTo(t.activeIndex);
2007                    "next" === t.swipeDirection && (O >= s.longSwipesRatio ? t.slideTo(k + D) : t.slideTo(k)),
2008                    "prev" === t.swipeDirection && (O > 1 - s.longSwipesRatio ? t.slideTo(k + D) : t.slideTo(k))
2009                } else {
2010                    if (!s.shortSwipes)
2011                        return void t.slideTo(t.activeIndex);
2012                    t.navigation && (h.target === t.navigation.nextEl || h.target === t.navigation.prevEl) ? h.target === t.navigation.nextEl ? t.slideTo(k + D) : t.slideTo(k) : ("next" === t.swipeDirection && t.slideTo(k + D),
2013                    "prev" === t.swipeDirection && t.slideTo(k))
2014                }
2015            }
2016    }
2017    function N() {
2018        var e = this.params
2019          , t = this.el;
2020        if (!t || 0 !== t.offsetWidth) {
2021            e.breakpoints && this.setBreakpoint();
2022            var i = this.allowSlideNext
2023              , s = this.allowSlidePrev
2024              , a = this.snapGrid;
2025            this.allowSlideNext = !0,
2026            this.allowSlidePrev = !0,
2027            this.updateSize(),
2028            this.updateSlides(),
2029            this.updateSlidesClasses(),
2030            ("auto" === e.slidesPerView || e.slidesPerView > 1) && this.isEnd && !this.params.centeredSlides ? this.slideTo(this.slides.length - 1, 0, !1, !0) : this.slideTo(this.activeIndex, 0, !1, !0),
2031            this.autoplay && this.autoplay.running && this.autoplay.paused && this.autoplay.run(),
2032            this.allowSlidePrev = s,
2033            this.allowSlideNext = i,
2034            this.params.watchOverflow && a !== this.snapGrid && this.checkOverflow()
2035        }
2036    }
2037    function X(e) {
2038        this.allowClick || (this.params.preventClicks && e.preventDefault(),
2039        this.params.preventClicksPropagation && this.animating && (e.stopPropagation(),
2040        e.stopImmediatePropagation()))
2041    }
2042    function V() {
2043        var e = this.wrapperEl
2044          , t = this.rtlTranslate;
2045        this.previousTranslate = this.translate,
2046        this.isHorizontal() ? this.translate = t ? e.scrollWidth - e.offsetWidth - e.scrollLeft : -e.scrollLeft : this.translate = -e.scrollTop,
2047        -0 === this.translate && (this.translate = 0),
2048        this.updateActiveIndex(),
2049        this.updateSlidesClasses();
2050        var i = this.maxTranslate() - this.minTranslate();
2051        (0 === i ? 0 : (this.translate - this.minTranslate()) / i) !== this.progress && this.updateProgress(t ? -this.translate : this.translate),
2052        this.emit("setTranslate", this.translate, !1)
2053    }
2054    var Y = !1;
2055    function F() {}
2056    var W = {
2057        init: !0,
2058        direction: "horizontal",
2059        touchEventsTarget: "container",
2060        initialSlide: 0,
2061        speed: 300,
2062        cssMode: !1,
2063        updateOnWindowResize: !0,
2064        preventInteractionOnTransition: !1,
2065        edgeSwipeDetection: !1,
2066        edgeSwipeThreshold: 20,
2067        freeMode: !1,
2068        freeModeMomentum: !0,
2069        freeModeMomentumRatio: 1,
2070        freeModeMomentumBounce: !0,
2071        freeModeMomentumBounceRatio: 1,
2072        freeModeMomentumVelocityRatio: 1,
2073        freeModeSticky: !1,
2074        freeModeMinimumVelocity: .02,
2075        autoHeight: !1,
2076        setWrapperSize: !1,
2077        virtualTranslate: !1,
2078        effect: "slide",
2079        breakpoints: void 0,
2080        spaceBetween: 0,
2081        slidesPerView: 1,
2082        slidesPerColumn: 1,
2083        slidesPerColumnFill: "column",
2084        slidesPerGroup: 1,
2085        slidesPerGroupSkip: 0,
2086        centeredSlides: !1,
2087        centeredSlidesBounds: !1,
2088        slidesOffsetBefore: 0,
2089        slidesOffsetAfter: 0,
2090        normalizeSlideIndex: !0,
2091        centerInsufficientSlides: !1,
2092        watchOverflow: !1,
2093        roundLengths: !1,
2094        touchRatio: 1,
2095        touchAngle: 45,
2096        simulateTouch: !0,
2097        shortSwipes: !0,
2098        longSwipes: !0,
2099        longSwipesRatio: .5,
2100        longSwipesMs: 300,
2101        followFinger: !0,
2102        allowTouchMove: !0,
2103        threshold: 0,
2104        touchMoveStopPropagation: !1,
2105        touchStartPreventDefault: !0,
2106        touchStartForcePreventDefault: !1,
2107        touchReleaseOnEdges: !1,
2108        uniqueNavElements: !0,
2109        resistance: !0,
2110        resistanceRatio: .85,
2111        watchSlidesProgress: !1,
2112        watchSlidesVisibility: !1,
2113        grabCursor: !1,
2114        preventClicks: !0,
2115        preventClicksPropagation: !0,
2116        slideToClickedSlide: !1,
2117        preloadImages: !0,
2118        updateOnImagesReady: !0,
2119        loop: !1,
2120        loopAdditionalSlides: 0,
2121        loopedSlides: null,
2122        loopFillGroupWithBlank: !1,
2123        allowSlidePrev: !0,
2124        allowSlideNext: !0,
2125        swipeHandler: null,
2126        noSwiping: !0,
2127        noSwipingClass: "swiper-no-swiping",
2128        noSwipingSelector: null,
2129        passiveListeners: !0,
2130        containerModifierClass: "swiper-container-",
2131        slideClass: "swiper-slide",
2132        slideBlankClass: "swiper-slide-invisible-blank",
2133        slideActiveClass: "swiper-slide-active",
2134        slideDuplicateActiveClass: "swiper-slide-duplicate-active",
2135        slideVisibleClass: "swiper-slide-visible",
2136        slideDuplicateClass: "swiper-slide-duplicate",
2137        slideNextClass: "swiper-slide-next",
2138        slideDuplicateNextClass: "swiper-slide-duplicate-next",
2139        slidePrevClass: "swiper-slide-prev",
2140        slideDuplicatePrevClass: "swiper-slide-duplicate-prev",
2141        wrapperClass: "swiper-wrapper",
2142        runCallbacksOnInit: !0
2143    }
2144      , R = {
2145        update: u,
2146        translate: v,
2147        transition: f,
2148        slide: m,
2149        loop: g,
2150        grabCursor: b,
2151        manipulation: D,
2152        events: {
2153            attachEvents: function() {
2154                var e = this.params
2155                  , t = this.touchEvents
2156                  , s = this.el
2157                  , a = this.wrapperEl;
2158                this.onTouchStart = G.bind(this),
2159                this.onTouchMove = H.bind(this),
2160                this.onTouchEnd = B.bind(this),
2161                e.cssMode && (this.onScroll = V.bind(this)),
2162                this.onClick = X.bind(this);
2163                var r = !!e.nested;
2164                if (!h.touch && h.pointerEvents)
2165                    s.addEventListener(t.start, this.onTouchStart, !1),
2166                    i.addEventListener(t.move, this.onTouchMove, r),
2167                    i.addEventListener(t.end, this.onTouchEnd, !1);
2168                else {
2169                    if (h.touch) {
2170                        var n = !("touchstart" !== t.start || !h.passiveListener || !e.passiveListeners) && {
2171                            passive: !0,
2172                            capture: !1
2173                        };
2174                        s.addEventListener(t.start, this.onTouchStart, n),
2175                        s.addEventListener(t.move, this.onTouchMove, h.passiveListener ? {
2176                            passive: !1,
2177                            capture: r
2178                        } : r),
2179                        s.addEventListener(t.end, this.onTouchEnd, n),
2180                        t.cancel && s.addEventListener(t.cancel, this.onTouchEnd, n),
2181                        Y || (i.addEventListener("touchstart", F),
2182                        Y = !0)
2183                    }
2184                    (e.simulateTouch && !A.ios && !A.android || e.simulateTouch && !h.touch && A.ios) && (s.addEventListener("mousedown", this.onTouchStart, !1),
2185                    i.addEventListener("mousemove", this.onTouchMove, r),
2186                    i.addEventListener("mouseup", this.onTouchEnd, !1))
2187                }
2188                (e.preventClicks || e.preventClicksPropagation) && s.addEventListener("click", this.onClick, !0),
2189                e.cssMode && a.addEventListener("scroll", this.onScroll),
2190                e.updateOnWindowResize ? this.on(A.ios || A.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", N, !0) : this.on("observerUpdate", N, !0)
2191            },
2192            detachEvents: function() {
2193                var e = this.params
2194                  , t = this.touchEvents
2195                  , s = this.el
2196                  , a = this.wrapperEl
2197                  , r = !!e.nested;
2198                if (!h.touch && h.pointerEvents)
2199                    s.removeEventListener(t.start, this.onTouchStart, !1),
2200                    i.removeEventListener(t.move, this.onTouchMove, r),
2201                    i.removeEventListener(t.end, this.onTouchEnd, !1);
2202                else {
2203                    if (h.touch) {
2204                        var n = !("onTouchStart" !== t.start || !h.passiveListener || !e.passiveListeners) && {
2205                            passive: !0,
2206                            capture: !1
2207                        };
2208                        s.removeEventListener(t.start, this.onTouchStart, n),
2209                        s.removeEventListener(t.move, this.onTouchMove, r),
2210                        s.removeEventListener(t.end, this.onTouchEnd, n),
2211                        t.cancel && s.removeEventListener(t.cancel, this.onTouchEnd, n)
2212                    }
2213                    (e.simulateTouch && !A.ios && !A.android || e.simulateTouch && !h.touch && A.ios) && (s.removeEventListener("mousedown", this.onTouchStart, !1),
2214                    i.removeEventListener("mousemove", this.onTouchMove, r),
2215                    i.removeEventListener("mouseup", this.onTouchEnd, !1))
2216                }
2217                (e.preventClicks || e.preventClicksPropagation) && s.removeEventListener("click", this.onClick, !0),
2218                e.cssMode && a.removeEventListener("scroll", this.onScroll),
2219                this.off(A.ios || A.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", N)
2220            }
2221        },
2222        breakpoints: {
2223            setBreakpoint: function() {
2224                var e = this.activeIndex
2225                  , t = this.initialized
2226                  , i = this.loopedSlides;
2227                void 0 === i && (i = 0);
2228                var s = this.params
2229                  , a = this.$el
2230                  , r = s.breakpoints;
2231                if (r && (!r || 0 !== Object.keys(r).length)) {
2232                    var n = this.getBreakpoint(r);
2233                    if (n && this.currentBreakpoint !== n) {
2234                        var o = n in r ? r[n] : void 0;
2235                        o && ["slidesPerView", "spaceBetween", "slidesPerGroup", "slidesPerGroupSkip", "slidesPerColumn"].forEach((function(e) {
2236                            var t = o[e];
2237                            void 0 !== t && (o[e] = "slidesPerView" !== e || "AUTO" !== t && "auto" !== t ? "slidesPerView" === e ? parseFloat(t) : parseInt(t, 10) : "auto")
2238                        }
2239                        ));
2240                        var l = o || this.originalParams
2241                          , h = s.slidesPerColumn > 1
2242                          , p = l.slidesPerColumn > 1;
2243                        h && !p ? a.removeClass(s.containerModifierClass + "multirow " + s.containerModifierClass + "multirow-column") : !h && p && (a.addClass(s.containerModifierClass + "multirow"),
2244                        "column" === l.slidesPerColumnFill && a.addClass(s.containerModifierClass + "multirow-column"));
2245                        var c = l.direction && l.direction !== s.direction
2246                          , u = s.loop && (l.slidesPerView !== s.slidesPerView || c);
2247                        c && t && this.changeDirection(),
2248                        d.extend(this.params, l),
2249                        d.extend(this, {
2250                            allowTouchMove: this.params.allowTouchMove,
2251                            allowSlideNext: this.params.allowSlideNext,
2252                            allowSlidePrev: this.params.allowSlidePrev
2253                        }),
2254                        this.currentBreakpoint = n,
2255                        u && t && (this.loopDestroy(),
2256                        this.loopCreate(),
2257                        this.updateSlides(),
2258                        this.slideTo(e - i + this.loopedSlides, 0, !1)),
2259                        this.emit("breakpoint", l)
2260                    }
2261                }
2262            },
2263            getBreakpoint: function(e) {
2264                if (e) {
2265                    var t = !1
2266                      , i = Object.keys(e).map((function(e) {
2267                        if ("string" == typeof e && 0 === e.indexOf("@")) {
2268                            var t = parseFloat(e.substr(1));
2269                            return {
2270                                value: a.innerHeight * t,
2271                                point: e
2272                            }
2273                        }
2274                        return {
2275                            value: e,
2276                            point: e
2277                        }
2278                    }
2279                    ));
2280                    i.sort((function(e, t) {
2281                        return parseInt(e.value, 10) - parseInt(t.value, 10)
2282                    }
2283                    ));
2284                    for (var s = 0; s < i.length; s += 1) {
2285                        var r = i[s]
2286                          , n = r.point;
2287                        r.value <= a.innerWidth && (t = n)
2288                    }
2289                    return t || "max"
2290                }
2291            }
2292        },
2293        checkOverflow: {
2294            checkOverflow: function() {
2295                var e = this.params
2296                  , t = this.isLocked
2297                  , i = this.slides.length > 0 && e.slidesOffsetBefore + e.spaceBetween * (this.slides.length - 1) + this.slides[0].offsetWidth * this.slides.length;
2298                e.slidesOffsetBefore && e.slidesOffsetAfter && i ? this.isLocked = i <= this.size : this.isLocked = 1 === this.snapGrid.length,
2299                this.allowSlideNext = !this.isLocked,
2300                this.allowSlidePrev = !this.isLocked,
2301                t !== this.isLocked && this.emit(this.isLocked ? "lock" : "unlock"),
2302                t && t !== this.isLocked && (this.isEnd = !1,
2303                this.navigation.update())
2304            }
2305        },
2306        classes: {
2307            addClasses: function() {
2308                var e = this.classNames
2309                  , t = this.params
2310                  , i = this.rtl
2311                  , s = this.$el
2312                  , a = [];
2313                a.push("initialized"),
2314                a.push(t.direction),
2315                t.freeMode && a.push("free-mode"),
2316                t.autoHeight && a.push("autoheight"),
2317                i && a.push("rtl"),
2318                t.slidesPerColumn > 1 && (a.push("multirow"),
2319                "column" === t.slidesPerColumnFill && a.push("multirow-column")),
2320                A.android && a.push("android"),
2321                A.ios && a.push("ios"),
2322                t.cssMode && a.push("css-mode"),
2323                a.forEach((function(i) {
2324                    e.push(t.containerModifierClass + i)
2325                }
2326                )),
2327                s.addClass(e.join(" "))
2328            },
2329            removeClasses: function() {
2330                var e = this.$el
2331                  , t = this.classNames;
2332                e.removeClass(t.join(" "))
2333            }
2334        },
2335        images: {
2336            loadImage: function(e, t, i, s, r, o) {
2337                var l;
2338                function d() {
2339                    o && o()
2340                }
2341                n(e).parent("picture")[0] || e.complete && r ? d() : t ? ((l = new a.Image).onload = d,
2342                l.onerror = d,
2343                s && (l.sizes = s),
2344                i && (l.srcset = i),
2345                t && (l.src = t)) : d()
2346            },
2347            preloadImages: function() {
2348                var e = this;
2349                function t() {
2350                    null != e && e && !e.destroyed && (void 0 !== e.imagesLoaded && (e.imagesLoaded += 1),
2351                    e.imagesLoaded === e.imagesToLoad.length && (e.params.updateOnImagesReady && e.update(),
2352                    e.emit("imagesReady")))
2353                }
2354                e.imagesToLoad = e.$el.find("img");
2355                for (var i = 0; i < e.imagesToLoad.length; i += 1) {
2356                    var s = e.imagesToLoad[i];
2357                    e.loadImage(s, s.currentSrc || s.getAttribute("src"), s.srcset || s.getAttribute("srcset"), s.sizes || s.getAttribute("sizes"), !0, t)
2358                }
2359            }
2360        }
2361    }
2362      , q = {}
2363      , j = function(e) {
2364        function t() {
2365            for (var i, s, a, r = [], o = arguments.length; o--; )
2366                r[o] = arguments[o];
2367            1 === r.length && r[0].constructor && r[0].constructor === Object ? a = r[0] : (s = (i = r)[0],
2368            a = i[1]),
2369            a || (a = {}),
2370            a = d.extend({}, a),
2371            s && !a.el && (a.el = s),
2372            e.call(this, a),
vendor: 5,439 bytes, lines 2373-2501
2373            Object.keys(R).forEach((function(e) {
2374                Object.keys(R[e]).forEach((function(i) {
2375                    t.prototype[i] || (t.prototype[i] = R[e][i])
2376                }
2377                ))
2378            }
2379            ));
2380            var l = this;
2381            void 0 === l.modules && (l.modules = {}),
2382            Object.keys(l.modules).forEach((function(e) {
2383                var t = l.modules[e];
2384                if (t.params) {
2385                    var i = Object.keys(t.params)[0]
2386                      , s = t.params[i];
2387                    if ("object" != typeof s || null === s)
2388                        return;
2389                    if (!(i in a) || !("enabled"in s))
2390                        return;
2391                    !0 === a[i] && (a[i] = {
2392                        enabled: !0
2393                    }),
2394                    "object" != typeof a[i] || "enabled"in a[i] || (a[i].enabled = !0),
2395                    a[i] || (a[i] = {
2396                        enabled: !1
2397                    })
2398                }
2399            }
2400            ));
2401            var p = d.extend({}, W);
2402            l.useModulesParams(p),
2403            l.params = d.extend({}, p, q, a),
2404            l.originalParams = d.extend({}, l.params),
2405            l.passedParams = d.extend({}, a),
2406            l.$ = n;
2407            var c = n(l.params.el);
2408            if (s = c[0]) {
2409                if (c.length > 1) {
2410                    var u = [];
2411                    return c.each((function(e, i) {
2412                        var s = d.extend({}, a, {
2413                            el: i
2414                        });
2415                        u.push(new t(s))
2416                    }
2417                    )),
2418                    u
2419                }
2420                var v, f, m;
2421                return s.swiper = l,
2422                c.data("swiper", l),
2423                s && s.shadowRoot && s.shadowRoot.querySelector ? (v = n(s.shadowRoot.querySelector("." + l.params.wrapperClass))).children = function(e) {
2424                    return c.children(e)
2425                }
2426                : v = c.children("." + l.params.wrapperClass),
2427                d.extend(l, {
2428                    $el: c,
2429                    el: s,
2430                    $wrapperEl: v,
2431                    wrapperEl: v[0],
2432                    classNames: [],
2433                    slides: n(),
2434                    slidesGrid: [],
2435                    snapGrid: [],
2436                    slidesSizesGrid: [],
2437                    isHorizontal: function() {
2438                        return "horizontal" === l.params.direction
2439                    },
2440                    isVertical: function() {
2441                        return "vertical" === l.params.direction
2442                    },
2443                    rtl: "rtl" === s.dir.toLowerCase() || "rtl" === c.css("direction"),
2444                    rtlTranslate: "horizontal" === l.params.direction && ("rtl" === s.dir.toLowerCase() || "rtl" === c.css("direction")),
2445                    wrongRTL: "-webkit-box" === v.css("display"),
2446                    activeIndex: 0,
2447                    realIndex: 0,
2448                    isBeginning: !0,
2449                    isEnd: !1,
2450                    translate: 0,
2451                    previousTranslate: 0,
2452                    progress: 0,
2453                    velocity: 0,
2454                    animating: !1,
2455                    allowSlideNext: l.params.allowSlideNext,
2456                    allowSlidePrev: l.params.allowSlidePrev,
2457                    touchEvents: (f = ["touchstart", "touchmove", "touchend", "touchcancel"],
2458                    m = ["mousedown", "mousemove", "mouseup"],
2459                    h.pointerEvents && (m = ["pointerdown", "pointermove", "pointerup"]),
2460                    l.touchEventsTouch = {
2461                        start: f[0],
2462                        move: f[1],
2463                        end: f[2],
2464                        cancel: f[3]
2465                    },
2466                    l.touchEventsDesktop = {
2467                        start: m[0],
2468                        move: m[1],
2469                        end: m[2]
2470                    },
2471                    h.touch || !l.params.simulateTouch ? l.touchEventsTouch : l.touchEventsDesktop),
2472                    touchEventsData: {
2473                        isTouched: void 0,
2474                        isMoved: void 0,
2475                        allowTouchCallbacks: void 0,
2476                        touchStartTime: void 0,
2477                        isScrolling: void 0,
2478                        currentTranslate: void 0,
2479                        startTranslate: void 0,
2480                        allowThresholdMove: void 0,
2481                        formElements: "input, select, option, textarea, button, video, label",
2482                        lastClickTime: d.now(),
2483                        clickTimeout: void 0,
2484                        velocities: [],
2485                        allowMomentumBounce: void 0,
2486                        isTouchEvent: void 0,
2487                        startMoving: void 0
2488                    },
2489                    allowClick: !0,
2490                    allowTouchMove: l.params.allowTouchMove,
2491                    touches: {
2492                        startX: 0,
2493                        startY: 0,
2494                        currentX: 0,
2495                        currentY: 0,
2496                        diff: 0
2497                    },
2498                    imagesToLoad: [],
2499                    imagesLoaded: 0
2500                }),
2501                l.useModules(),
2502                l.params.init && l.init(),
2503                l
2504            }
2505        }
2506        e && (t.__proto__ = e),
2507        t.prototype = Object.create(e && e.prototype),
2508        t.prototype.constructor = t;
2509        var i = {
2510            extendedDefaults: {
2511                configurable: !0
2512            },
2513            defaults: {
2514                configurable: !0
2515            },
2516            Class: {
2517                configurable: !0
2518            },
2519            $: {
2520                configurable: !0
2521            }
2522        };
2523        return t.prototype.slidesPerViewDynamic = function() {
2524            var e = this.params
2525              , t = this.slides
2526              , i = this.slidesGrid
2527              , s = this.size
2528              , a = this.activeIndex
2529              , r = 1;
2530            if (e.centeredSlides) {
2531                for (var n, o = t[a].swiperSlideSize, l = a + 1; l < t.length; l += 1)
2532                    t[l] && !n && (r += 1,
2533                    (o += t[l].swiperSlideSize) > s && (n = !0));
2534                for (var d = a - 1; d >= 0; d -= 1)
2535                    t[d] && !n && (r += 1,
2536                    (o += t[d].swiperSlideSize) > s && (n = !0))
2537            } else
2538                for (var h = a + 1; h < t.length; h += 1)
2539                    i[h] - i[a] < s && (r += 1);
2540            return r
2541        }
2542        ,
2543        t.prototype.update = function() {
2544            var e = this;
2545            if (e && !e.destroyed) {
2546                var t = e.snapGrid
2547                  , i = e.params;
2548                i.breakpoints && e.setBreakpoint(),
2549                e.updateSize(),
2550                e.updateSlides(),
2551                e.updateProgress(),
2552                e.updateSlidesClasses(),
2553                e.params.freeMode ? (s(),
2554                e.params.autoHeight && e.updateAutoHeight()) : (("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)) || s(),
2555                i.watchOverflow && t !== e.snapGrid && e.checkOverflow(),
2556                e.emit("update")
2557            }
2558            function s() {
2559                var t = e.rtlTranslate ? -1 * e.translate : e.translate
2560                  , i = Math.min(Math.max(t, e.maxTranslate()), e.minTranslate());
2561                e.setTranslate(i),
2562                e.updateActiveIndex(),
2563                e.updateSlidesClasses()
2564            }
2565        }
2566        ,
2567        t.prototype.changeDirection = function(e, t) {
2568            void 0 === t && (t = !0);
2569            var i = this.params.direction;
2570            return e || (e = "horizontal" === i ? "vertical" : "horizontal"),
2571            e === i || "horizontal" !== e && "vertical" !== e || (this.$el.removeClass("" + this.params.containerModifierClass + i).addClass("" + this.params.containerModifierClass + e),
2572            this.params.direction = e,
2573            this.slides.each((function(t, i) {
2574                "vertical" === e ? i.style.width = "" : i.style.height = ""
2575            }
2576            )),
2577            this.emit("changeDirection"),
2578            t && this.update()),
2579            this
2580        }
2581        ,
2582        t.prototype.init = function() {
2583            this.initialized || (this.emit("beforeInit"),
2584            this.params.breakpoints && this.setBreakpoint(),
2585            this.addClasses(),
2586            this.params.loop && this.loopCreate(),
2587            this.updateSize(),
2588            this.updateSlides(),
2589            this.params.watchOverflow && this.checkOverflow(),
2590            this.params.grabCursor && this.setGrabCursor(),
2591            this.params.preloadImages && this.preloadImages(),
2592            this.params.loop ? this.slideTo(this.params.initialSlide + this.loopedSlides, 0, this.params.runCallbacksOnInit) : this.slideTo(this.params.initialSlide, 0, this.params.runCallbacksOnInit),
2593            this.attachEvents(),
2594            this.initialized = !0,
2595            this.emit("init"))
2596        }
2597        ,
2598        t.prototype.destroy = function(e, t) {
2599            void 0 === e && (e = !0),
2600            void 0 === t && (t = !0);
2601            var i = this
2602              , s = i.params
2603              , a = i.$el
2604              , r = i.$wrapperEl
2605              , n = i.slides;
2606            return void 0 === i.params || i.destroyed || (i.emit("beforeDestroy"),
2607            i.initialized = !1,
2608            i.detachEvents(),
2609            s.loop && i.loopDestroy(),
2610            t && (i.removeClasses(),
2611            a.removeAttr("style"),
2612            r.removeAttr("style"),
2613            n && n.length && n.removeClass([s.slideVisibleClass, s.slideActiveClass, s.slideNextClass, s.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),
2614            i.emit("destroy"),
2615            Object.keys(i.eventsListeners).forEach((function(e) {
2616                i.off(e)
2617            }
2618            )),
2619            !1 !== e && (i.$el[0].swiper = null,
2620            i.$el.data("swiper", null),
2621            d.deleteProps(i)),
2622            i.destroyed = !0),
2623            null
2624        }
2625        ,
2626        t.extendDefaults = function(e) {
2627            d.extend(q, e)
2628        }
2629        ,
2630        i.extendedDefaults.get = function() {
2631            return q
2632        }
2633        ,
2634        i.defaults.get = function() {
2635            return W
2636        }
2637        ,
2638        i.Class.get = function() {
2639            return e
2640        }
2641        ,
2642        i.$.get = function() {
2643            return n
2644        }
2645        ,
2646        Object.defineProperties(t, i),
2647        t
2648    }(p)
2649      , K = {
2650        name: "device",
2651        proto: {
2652            device: A
2653        },
2654        static: {
2655            device: A
2656        }
2657    }
2658      , U = {
2659        name: "support",
2660        proto: {
2661            support: h
2662        },
2663        static: {
2664            support: h
2665        }
2666    }
2667      , _ = {
2668        isEdge: !!a.navigator.userAgent.match(/Edge/g),
2669        isSafari: function() {
2670            var e = a.navigator.userAgent.toLowerCase();
2671            return e.indexOf("safari") >= 0 && e.indexOf("chrome") < 0 && e.indexOf("android") < 0
2672        }(),
2673        isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(a.navigator.userAgent)
2674    }
2675      , Z = {
2676        name: "browser",
2677        proto: {
2678            browser: _
2679        },
2680        static: {
2681            browser: _
2682        }
2683    }
2684      , Q = {
2685        name: "resize",
2686        create: function() {
2687            var e = this;
2688            d.extend(e, {
2689                resize: {
2690                    resizeHandler: function() {
2691                        e && !e.destroyed && e.initialized && (e.emit("beforeResize"),
2692                        e.emit("resize"))
2693                    },
2694                    orientationChangeHandler: function() {
2695                        e && !e.destroyed && e.initialized && e.emit("orientationchange")
2696                    }
2697                }
2698            })
2699        },
2700        on: {
2701            init: function() {
2702                a.addEventListener("resize", this.resize.resizeHandler),
2703                a.addEventListener("orientationchange", this.resize.orientationChangeHandler)
2704            },
2705            destroy: function() {
2706                a.removeEventListener("resize", this.resize.resizeHandler),
2707                a.removeEventListener("orientationchange", this.resize.orientationChangeHandler)
2708            }
2709        }
2710    }
2711      , J = {
2712        func: a.MutationObserver || a.WebkitMutationObserver,
2713        attach: function(e, t) {
2714            void 0 === t && (t = {});
2715            var i = this
2716              , s = new (0,
2717            J.func)((function(e) {
2718                if (1 !== e.length) {
2719                    var t = function() {
2720                        i.emit("observerUpdate", e[0])
2721                    };
2722                    a.requestAnimationFrame ? a.requestAnimationFrame(t) : a.setTimeout(t, 0)
2723                } else
2724                    i.emit("observerUpdate", e[0])
2725            }
2726            ));
2727            s.observe(e, {
2728                attributes: void 0 === t.attributes || t.attributes,
2729                childList: void 0 === t.childList || t.childList,
2730                characterData: void 0 === t.characterData || t.characterData
2731            }),
2732            i.observer.observers.push(s)
2733        },
2734        init: function() {
2735            if (h.observer && this.params.observer) {
2736                if (this.params.observeParents)
2737                    for (var e = this.$el.parents(), t = 0; t < e.length; t += 1)
2738                        this.observer.attach(e[t]);
2739                this.observer.attach(this.$el[0], {
2740                    childList: this.params.observeSlideChildren
2741                }),
2742                this.observer.attach(this.$wrapperEl[0], {
2743                    attributes: !1
2744                })
2745            }
2746        },
2747        destroy: function() {
2748            this.observer.observers.forEach((function(e) {
2749                e.disconnect()
2750            }
2751            )),
2752            this.observer.observers = []
2753        }
2754    }
2755      , ee = {
2756        name: "observer",
2757        params: {
2758            observer: !1,
2759            observeParents: !1,
2760            observeSlideChildren: !1
2761        },
2762        create: function() {
2763            d.extend(this, {
2764                observer: {
2765                    init: J.init.bind(this),
2766                    attach: J.attach.bind(this),
2767                    destroy: J.destroy.bind(this),
2768                    observers: []
2769                }
2770            })
2771        },
2772        on: {
2773            init: function() {
2774                this.observer.init()
2775            },
2776            destroy: function() {
2777                this.observer.destroy()
2778            }
2779        }
2780    }
2781      , te = {
2782        update: function(e) {
2783            var t = this
2784              , i = t.params
2785              , s = i.slidesPerView
2786              , a = i.slidesPerGroup
2787              , r = i.centeredSlides
2788              , n = t.params.virtual
2789              , o = n.addSlidesBefore
2790              , l = n.addSlidesAfter
2791              , h = t.virtual
2792              , p = h.from
2793              , c = h.to
2794              , u = h.slides
2795              , v = h.slidesGrid
2796              , f = h.renderSlide
2797              , m = h.offset;
2798            t.updateActiveIndex();
2799            var g, b, w, y = t.activeIndex || 0;
2800            g = t.rtlTranslate ? "right" : t.isHorizontal() ? "left" : "top",
2801            r ? (b = Math.floor(s / 2) + a + o,
2802            w = Math.floor(s / 2) + a + l) : (b = s + (a - 1) + o,
2803            w = a + l);
2804            var x = Math.max((y || 0) - w, 0)
2805              , E = Math.min((y || 0) + b, u.length - 1)
2806              , T = (t.slidesGrid[x] || 0) - (t.slidesGrid[0] || 0);
2807            function S() {
2808                t.updateSlides(),
2809                t.updateProgress(),
2810                t.updateSlidesClasses(),
2811                t.lazy && t.params.lazy.enabled && t.lazy.load()
2812            }
2813            if (d.extend(t.virtual, {
2814                from: x,
2815                to: E,
2816                offset: T,
2817                slidesGrid: t.slidesGrid
2818            }),
2819            p === x && c === E && !e)
2820                return t.slidesGrid !== v && T !== m && t.slides.css(g, T + "px"),
2821                void t.updateProgress();
2822            if (t.params.virtual.renderExternal)
2823                return t.params.virtual.renderExternal.call(t, {
2824                    offset: T,
2825                    from: x,
2826                    to: E,
2827                    slides: function() {
2828                        for (var e = [], t = x; t <= E; t += 1)
2829                            e.push(u[t]);
2830                        return e
2831                    }()
2832                }),
2833                void S();
2834            var C = []
2835              , M = [];
2836            if (e)
2837                t.$wrapperEl.find("." + t.params.slideClass).remove();
2838            else
2839                for (var P = p; P <= c; P += 1)
2840                    (P < x || P > E) && t.$wrapperEl.find("." + t.params.slideClass + '[data-swiper-slide-index="' + P + '"]').remove();
2841            for (var z = 0; z < u.length; z += 1)
2842                z >= x && z <= E && (void 0 === c || e ? M.push(z) : (z > c && M.push(z),
2843                z < p && C.push(z)));
2844            M.forEach((function(e) {
2845                t.$wrapperEl.append(f(u[e], e))
2846            }
2847            )),
2848            C.sort((function(e, t) {
2849                return t - e
2850            }
2851            )).forEach((function(e) {
2852                t.$wrapperEl.prepend(f(u[e], e))
2853            }
2854            )),
2855            t.$wrapperEl.children(".swiper-slide").css(g, T + "px"),
2856            S()
2857        },
2858        renderSlide: function(e, t) {
2859            var i = this.params.virtual;
2860            if (i.cache && this.virtual.cache[t])
2861                return this.virtual.cache[t];
2862            var s = i.renderSlide ? n(i.renderSlide.call(this, e, t)) : n('<div class="' + this.params.slideClass + '" data-swiper-slide-index="' + t + '">' + e + "</div>");
2863            return s.attr("data-swiper-slide-index") || s.attr("data-swiper-slide-index", t),
2864            i.cache && (this.virtual.cache[t] = s),
2865            s
2866        },
2867        appendSlide: function(e) {
2868            if ("object" == typeof e && "length"in e)
2869                for (var t = 0; t < e.length; t += 1)
2870                    e[t] && this.virtual.slides.push(e[t]);
2871            else
2872                this.virtual.slides.push(e);
2873            this.virtual.update(!0)
2874        },
2875        prependSlide: function(e) {
2876            var t = this.activeIndex
2877              , i = t + 1
2878              , s = 1;
2879            if (Array.isArray(e)) {
2880                for (var a = 0; a < e.length; a += 1)
2881                    e[a] && this.virtual.slides.unshift(e[a]);
2882                i = t + e.length,
2883                s = e.length
2884            } else
2885                this.virtual.slides.unshift(e);
2886            if (this.params.virtual.cache) {
2887                var r = this.virtual.cache
2888                  , n = {};
2889                Object.keys(r).forEach((function(e) {
2890                    var t = r[e]
2891                      , i = t.attr("data-swiper-slide-index");
2892                    i && t.attr("data-swiper-slide-index", parseInt(i, 10) + 1),
2893                    n[parseInt(e, 10) + s] = t
2894                }
2895                )),
2896                this.virtual.cache = n
2897            }
2898            this.virtual.update(!0),
2899            this.slideTo(i, 0)
2900        },
2901        removeSlide: function(e) {
2902            if (null != e) {
2903                var t = this.activeIndex;
2904                if (Array.isArray(e))
2905                    for (var i = e.length - 1; i >= 0; i -= 1)
2906                        this.virtual.slides.splice(e[i], 1),
2907                        this.params.virtual.cache && delete this.virtual.cache[e[i]],
2908                        e[i] < t && (t -= 1),
2909                        t = Math.max(t, 0);
2910                else
2911                    this.virtual.slides.splice(e, 1),
2912                    this.params.virtual.cache && delete this.virtual.cache[e],
2913                    e < t && (t -= 1),
2914                    t = Math.max(t, 0);
2915                this.virtual.update(!0),
2916                this.slideTo(t, 0)
2917            }
2918        },
2919        removeAllSlides: function() {
2920            this.virtual.slides = [],
2921            this.params.virtual.cache && (this.virtual.cache = {}),
2922            this.virtual.update(!0),
2923            this.slideTo(0, 0)
2924        }
2925    }
2926      , ie = {
2927        name: "virtual",
2928        params: {
2929            virtual: {
2930                enabled: !1,
2931                slides: [],
2932                cache: !0,
2933                renderSlide: null,
2934                renderExternal: null,
2935                addSlidesBefore: 0,
2936                addSlidesAfter: 0
2937            }
2938        },
2939        create: function() {
2940            d.extend(this, {
2941                virtual: {
2942                    update: te.update.bind(this),
2943                    appendSlide: te.appendSlide.bind(this),
2944                    prependSlide: te.prependSlide.bind(this),
2945                    removeSlide: te.removeSlide.bind(this),
2946                    removeAllSlides: te.removeAllSlides.bind(this),
2947                    renderSlide: te.renderSlide.bind(this),
2948                    slides: this.params.virtual.slides,
2949                    cache: {}
2950                }
2951            })
2952        },
2953        on: {
2954            beforeInit: function() {
2955                if (this.params.virtual.enabled) {
2956                    this.classNames.push(this.params.containerModifierClass + "virtual");
2957                    var e = {
2958                        watchSlidesProgress: !0
2959                    };
2960                    d.extend(this.params, e),
2961                    d.extend(this.originalParams, e),
2962                    this.params.initialSlide || this.virtual.update()
2963                }
2964            },
2965            setTranslate: function() {
2966                this.params.virtual.enabled && this.virtual.update()
2967            }
2968        }
2969    }
2970      , se = {
2971        handle: function(e) {
2972            var t = this.rtlTranslate
2973              , s = e;
2974            s.originalEvent && (s = s.originalEvent);
2975            var r = s.keyCode || s.charCode;
2976            if (!this.allowSlideNext && (this.isHorizontal() && 39 === r || this.isVertical() && 40 === r || 34 === r))
2977                return !1;
2978            if (!this.allowSlidePrev && (this.isHorizontal() && 37 === r || this.isVertical() && 38 === r || 33 === r))
2979                return !1;
2980            if (!(s.shiftKey || s.altKey || s.ctrlKey || s.metaKey || i.activeElement && i.activeElement.nodeName && ("input" === i.activeElement.nodeName.toLowerCase() || "textarea" === i.activeElement.nodeName.toLowerCase()))) {
2981                if (this.params.keyboard.onlyInViewport && (33 === r || 34 === r || 37 === r || 39 === r || 38 === r || 40 === r)) {
2982                    var n = !1;
2983                    if (this.$el.parents("." + this.params.slideClass).length > 0 && 0 === this.$el.parents("." + this.params.slideActiveClass).length)
2984                        return;
2985                    var o = a.innerWidth
2986                      , l = a.innerHeight
2987                      , d = this.$el.offset();
2988                    t && (d.left -= this.$el[0].scrollLeft);
2989                    for (var h = [[d.left, d.top], [d.left + this.width, d.top], [d.left, d.top + this.height], [d.left + this.width, d.top + this.height]], p = 0; p < h.length; p += 1) {
2990                        var c = h[p];
2991                        c[0] >= 0 && c[0] <= o && c[1] >= 0 && c[1] <= l && (n = !0)
2992                    }
2993                    if (!n)
2994                        return
2995                }
2996                this.isHorizontal() ? (33 !== r && 34 !== r && 37 !== r && 39 !== r || (s.preventDefault ? s.preventDefault() : s.returnValue = !1),
2997                (34 !== r && 39 !== r || t) && (33 !== r && 37 !== r || !t) || this.slideNext(),
2998                (33 !== r && 37 !== r || t) && (34 !== r && 39 !== r || !t) || this.slidePrev()) : (33 !== r && 34 !== r && 38 !== r && 40 !== r || (s.preventDefault ? s.preventDefault() : s.returnValue = !1),
2999                34 !== r && 40 !== r || this.slideNext(),
3000                33 !== r && 38 !== r || this.slidePrev()),
3001                this.emit("keyPress", r)
3002            }
3003        },
3004        enable: function() {
3005            this.keyboard.enabled || (n(i).on("keydown", this.keyboard.handle),
3006            this.keyboard.enabled = !0)
3007        },
3008        disable: function() {
3009            this.keyboard.enabled && (n(i).off("keydown", this.keyboard.handle),
3010            this.keyboard.enabled = !1)
3011        }
3012    }
3013      , ae = {
3014        name: "keyboard",
3015        params: {
3016            keyboard: {
3017                enabled: !1,
3018                onlyInViewport: !0
3019            }
3020        },
3021        create: function() {
3022            d.extend(this, {
3023                keyboard: {
3024                    enabled: !1,
3025                    enable: se.enable.bind(this),
3026                    disable: se.disable.bind(this),
3027                    handle: se.handle.bind(this)
3028                }
3029            })
3030        },
3031        on: {
3032            init: function() {
3033                this.params.keyboard.enabled && this.keyboard.enable()
3034            },
3035            destroy: function() {
3036                this.keyboard.enabled && this.keyboard.disable()
3037            }
3038        }
3039    };
3040    var re = {
3041        lastScrollTime: d.now(),
3042        lastEventBeforeSnap: void 0,
3043        recentWheelEvents: [],
3044        event: function() {
3045            return a.navigator.userAgent.indexOf("firefox") > -1 ? "DOMMouseScroll" : function() {
3046                var e = "onwheel"in i;
3047                if (!e) {
3048                    var t = i.createElement("div");
3049                    t.setAttribute("onwheel", "return;"),
3050                    e = "function" == typeof t.onwheel
3051                }
3052                return !e && i.implementation && i.implementation.hasFeature && !0 !== i.implementation.hasFeature("", "") && (e = i.implementation.hasFeature("Events.wheel", "3.0")),
3053                e
3054            }() ? "wheel" : "mousewheel"
3055        },
3056        normalize: function(e) {
3057            var t = 0
3058              , i = 0
3059              , s = 0
3060              , a = 0;
3061            return "detail"in e && (i = e.detail),
3062            "wheelDelta"in e && (i = -e.wheelDelta / 120),
3063            "wheelDeltaY"in e && (i = -e.wheelDeltaY / 120),
3064            "wheelDeltaX"in e && (t = -e.wheelDeltaX / 120),
3065            "axis"in e && e.axis === e.HORIZONTAL_AXIS && (t = i,
3066            i = 0),
3067            s = 10 * t,
3068            a = 10 * i,
3069            "deltaY"in e && (a = e.deltaY),
3070            "deltaX"in e && (s = e.deltaX),
3071            e.shiftKey && !s && (s = a,
3072            a = 0),
3073            (s || a) && e.deltaMode && (1 === e.deltaMode ? (s *= 40,
3074            a *= 40) : (s *= 800,
3075            a *= 800)),
3076            s && !t && (t = s < 1 ? -1 : 1),
3077            a && !i && (i = a < 1 ? -1 : 1),
3078            {
3079                spinX: t,
3080                spinY: i,
3081                pixelX: s,
3082                pixelY: a
3083            }
3084        },
3085        handleMouseEnter: function() {
3086            this.mouseEntered = !0
3087        },
3088        handleMouseLeave: function() {
3089            this.mouseEntered = !1
3090        },
3091        handle: function(e) {
3092            var t = e
3093              , i = this
3094              , s = i.params.mousewheel;
3095            i.params.cssMode && t.preventDefault();
3096            var a = i.$el;
3097            if ("container" !== i.params.mousewheel.eventsTarged && (a = n(i.params.mousewheel.eventsTarged)),
3098            !i.mouseEntered && !a[0].contains(t.target) && !s.releaseOnEdges)
3099                return !0;
3100            t.originalEvent && (t = t.originalEvent);
3101            var r = 0
3102              , o = i.rtlTranslate ? -1 : 1
3103              , l = re.normalize(t);
3104            if (s.forceToAxis)
3105                if (i.isHorizontal()) {
3106                    if (!(Math.abs(l.pixelX) > Math.abs(l.pixelY)))
3107                        return !0;
3108                    r = l.pixelX * o
3109                } else {
3110                    if (!(Math.abs(l.pixelY) > Math.abs(l.pixelX)))
3111                        return !0;
3112                    r = l.pixelY
3113                }
3114            else
3115                r = Math.abs(l.pixelX) > Math.abs(l.pixelY) ? -l.pixelX * o : -l.pixelY;
3116            if (0 === r)
3117                return !0;
3118            if (s.invert && (r = -r),
3119            i.params.freeMode) {
3120                var h = {
3121                    time: d.now(),
3122                    delta: Math.abs(r),
3123                    direction: Math.sign(r)
3124                }
3125                  , p = i.mousewheel.lastEventBeforeSnap
3126                  , c = p && h.time < p.time + 500 && h.delta <= p.delta && h.direction === p.direction;
3127                if (!c) {
3128                    i.mousewheel.lastEventBeforeSnap = void 0,
3129                    i.params.loop && i.loopFix();
3130                    var u = i.getTranslate() + r * s.sensitivity
3131                      , v = i.isBeginning
3132                      , f = i.isEnd;
3133                    if (u >= i.minTranslate() && (u = i.minTranslate()),
3134                    u <= i.maxTranslate() && (u = i.maxTranslate()),
3135                    i.setTransition(0),
3136                    i.setTranslate(u),
3137                    i.updateProgress(),
3138                    i.updateActiveIndex(),
3139                    i.updateSlidesClasses(),
3140                    (!v && i.isBeginning || !f && i.isEnd) && i.updateSlidesClasses(),
3141                    i.params.freeModeSticky) {
3142                        clearTimeout(i.mousewheel.timeout),
3143                        i.mousewheel.timeout = void 0;
3144                        var m = i.mousewheel.recentWheelEvents;
3145                        m.length >= 15 && m.shift();
3146                        var g = m.length ? m[m.length - 1] : void 0
3147                          , b = m[0];
3148                        if (m.push(h),
3149                        g && (h.delta > g.delta || h.direction !== g.direction))
3150                            m.splice(0);
3151                        else if (m.length >= 15 && h.time - b.time < 500 && b.delta - h.delta >= 1 && h.delta <= 6) {
3152                            var w = r > 0 ? .8 : .2;
3153                            i.mousewheel.lastEventBeforeSnap = h,
3154                            m.splice(0),
3155                            i.mousewheel.timeout = d.nextTick((function() {
3156                                i.slideToClosest(i.params.speed, !0, void 0, w)
3157                            }
3158                            ), 0)
3159                        }
3160                        i.mousewheel.timeout || (i.mousewheel.timeout = d.nextTick((function() {
3161                            i.mousewheel.lastEventBeforeSnap = h,
3162                            m.splice(0),
3163                            i.slideToClosest(i.params.speed, !0, void 0, .5)
3164                        }
3165                        ), 500))
3166                    }
3167                    if (c || i.emit("scroll", t),
3168                    i.params.autoplay && i.params.autoplayDisableOnInteraction && i.autoplay.stop(),
3169                    u === i.minTranslate() || u === i.maxTranslate())
3170                        return !0
3171                }
3172            } else {
3173                var y = {
3174                    time: d.now(),
3175                    delta: Math.abs(r),
3176                    direction: Math.sign(r),
3177                    raw: e
3178                }
3179                  , x = i.mousewheel.recentWheelEvents;
3180                x.length >= 2 && x.shift();
3181                var E = x.length ? x[x.length - 1] : void 0;
3182                if (x.push(y),
3183                E ? (y.direction !== E.direction || y.delta > E.delta || y.time > E.time + 150) && i.mousewheel.animateSlider(y) : i.mousewheel.animateSlider(y),
3184                i.mousewheel.releaseScroll(y))
3185                    return !0
3186            }
3187            return t.preventDefault ? t.preventDefault() : t.returnValue = !1,
3188            !1
3189        },
3190        animateSlider: function(e) {
3191            return e.delta >= 6 && d.now() - this.mousewheel.lastScrollTime < 60 || (e.direction < 0 ? this.isEnd && !this.params.loop || this.animating || (this.slideNext(),
3192            this.emit("scroll", e.raw)) : this.isBeginning && !this.params.loop || this.animating || (this.slidePrev(),
3193            this.emit("scroll", e.raw)),
3194            this.mousewheel.lastScrollTime = (new a.Date).getTime(),
3195            !1)
3196        },
3197        releaseScroll: function(e) {
3198            var t = this.params.mousewheel;
3199            if (e.direction < 0) {
3200                if (this.isEnd && !this.params.loop && t.releaseOnEdges)
3201                    return !0
3202            }
3202 else if (this.isBeginning && !this.params.loop && t.releaseOnEdges)
3203                return !0;
3204            return !1
3205        },
3206        enable: function() {
3207            var e = re.event();
3208            if (this.params.cssMode)
3209                return this.wrapperEl.removeEventListener(e, this.mousewheel.handle),
3210                !0;
3211            if (!e)
3212                return !1;
3213            if (this.mousewheel.enabled)
3214                return !1;
3215            var t = this.$el;
3216            return "container" !== this.params.mousewheel.eventsTarged && (t = n(this.params.mousewheel.eventsTarged)),
3217            t.on("mouseenter", this.mousewheel.handleMouseEnter),
3218            t.on("mouseleave", this.mousewheel.handleMouseLeave),
3219            t.on(e, this.mousewheel.handle),
3220            this.mousewheel.enabled = !0,
3221            !0
3222        },
3223        disable: function() {
3224            var e = re.event();
3225            if (this.params.cssMode)
3226                return this.wrapperEl.addEventListener(e, this.mousewheel.handle),
3227                !0;
3228            if (!e)
3229                return !1;
3230            if (!this.mousewheel.enabled)
3231                return !1;
3232            var t = this.$el;
3233            return "container" !== this.params.mousewheel.eventsTarged && (t = n(this.params.mousewheel.eventsTarged)),
3234            t.off(e, this.mousewheel.handle),
3235            this.mousewheel.enabled = !1,
3236            !0
3237        }
3238    }
3239      , ne = {
3240        update: function() {
3241            var e = this.params.navigation;
3242            if (!this.params.loop) {
3243                var t = this.navigation
3244                  , i = t.$nextEl
3245                  , s = t.$prevEl;
3246                s && s.length > 0 && (this.isBeginning ? s.addClass(e.disabledClass) : s.removeClass(e.disabledClass),
3247                s[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](e.lockClass)),
3248                i && i.length > 0 && (this.isEnd ? i.addClass(e.disabledClass) : i.removeClass(e.disabledClass),
3249                i[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](e.lockClass))
3250            }
3251        },
3252        onPrevClick: function(e) {
3253            e.preventDefault(),
3254            this.isBeginning && !this.params.loop || this.slidePrev()
3255        },
3256        onNextClick: function(e) {
3257            e.preventDefault(),
3258            this.isEnd && !this.params.loop || this.slideNext()
3259        },
3260        init: function() {
3261            var e, t, i = this.params.navigation;
3262            (i.nextEl || i.prevEl) && (i.nextEl && (e = n(i.nextEl),
3263            this.params.uniqueNavElements && "string" == typeof i.nextEl && e.length > 1 && 1 === this.$el.find(i.nextEl).length && (e = this.$el.find(i.nextEl))),
3264            i.prevEl && (t = n(i.prevEl),
3265            this.params.uniqueNavElements && "string" == typeof i.prevEl && t.length > 1 && 1 === this.$el.find(i.prevEl).length && (t = this.$el.find(i.prevEl))),
3266            e && e.length > 0 && e.on("click", this.navigation.onNextClick),
3267            t && t.length > 0 && t.on("click", this.navigation.onPrevClick),
3268            d.extend(this.navigation, {
3269                $nextEl: e,
3270                nextEl: e && e[0],
3271                $prevEl: t,
3272                prevEl: t && t[0]
3273            }))
3274        },
3275        destroy: function() {
3276            var e = this.navigation
3277              , t = e.$nextEl
3278              , i = e.$prevEl;
3279            t && t.length && (t.off("click", this.navigation.onNextClick),
3280            t.removeClass(this.params.navigation.disabledClass)),
3281            i && i.length && (i.off("click", this.navigation.onPrevClick),
3282            i.removeClass(this.params.navigation.disabledClass))
3283        }
3284    }
3285      , oe = {
3286        update: function() {
3287            var e = this.rtl
3288              , t = this.params.pagination;
3289            if (t.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
3290                var i, s = this.virtual && this.params.virtual.enabled ? this.virtual.slides.length : this.slides.length, a = this.pagination.$el, r = this.params.loop ? Math.ceil((s - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length;
3291                if (this.params.loop ? ((i = Math.ceil((this.activeIndex - this.loopedSlides) / this.params.slidesPerGroup)) > s - 1 - 2 * this.loopedSlides && (i -= s - 2 * this.loopedSlides),
3292                i > r - 1 && (i -= r),
3293                i < 0 && "bullets" !== this.params.paginationType && (i = r + i)) : i = void 0 !== this.snapIndex ? this.snapIndex : this.activeIndex || 0,
3294                "bullets" === t.type && this.pagination.bullets && this.pagination.bullets.length > 0) {
3295                    var o, l, d, h = this.pagination.bullets;
3296                    if (t.dynamicBullets && (this.pagination.bulletSize = h.eq(0)[this.isHorizontal() ? "outerWidth" : "outerHeight"](!0),
3297                    a.css(this.isHorizontal() ? "width" : "height", this.pagination.bulletSize * (t.dynamicMainBullets + 4) + "px"),
3298                    t.dynamicMainBullets > 1 && void 0 !== this.previousIndex && (this.pagination.dynamicBulletIndex += i - this.previousIndex,
3299                    this.pagination.dynamicBulletIndex > t.dynamicMainBullets - 1 ? this.pagination.dynamicBulletIndex = t.dynamicMainBullets - 1 : this.pagination.dynamicBulletIndex < 0 && (this.pagination.dynamicBulletIndex = 0)),
3300                    o = i - this.pagination.dynamicBulletIndex,
3301                    d = ((l = o + (Math.min(h.length, t.dynamicMainBullets) - 1)) + o) / 2),
3302                    h.removeClass(t.bulletActiveClass + " " + t.bulletActiveClass + "-next " + t.bulletActiveClass + "-next-next " + t.bulletActiveClass + "-prev " + t.bulletActiveClass + "-prev-prev " + t.bulletActiveClass + "-main"),
3303                    a.length > 1)
3304                        h.each((function(e, s) {
3305                            var a = n(s)
3306                              , r = a.index();
3307                            r === i && a.addClass(t.bulletActiveClass),
3308                            t.dynamicBullets && (r >= o && r <= l && a.addClass(t.bulletActiveClass + "-main"),
3309                            r === o && a.prev().addClass(t.bulletActiveClass + "-prev").prev().addClass(t.bulletActiveClass + "-prev-prev"),
3310                            r === l && a.next().addClass(t.bulletActiveClass + "-next").next().addClass(t.bulletActiveClass + "-next-next"))
3311                        }
3312                        ));
3313                    else {
3314                        var p = h.eq(i)
3315                          , c = p.index();
3316                        if (p.addClass(t.bulletActiveClass),
3317                        t.dynamicBullets) {
3318                            for (var u = h.eq(o), v = h.eq(l), f = o;
3318 f <= l; f += 1)
3319                                h.eq(f).addClass(t.bulletActiveClass + "-main");
3320                            if (this.params.loop)
3321                                if (c >= h.length - t.dynamicMainBullets) {
3322                                    for (var m = t.dynamicMainBullets; m >= 0; m -= 1)
3323                                        h.eq(h.length - m).addClass(t.bulletActiveClass + "-main");
3324                                    h.eq(h.length - t.dynamicMainBullets - 1).addClass(t.bulletActiveClass + "-prev")
3325                                } else
3326                                    u.prev().addClass(t.bulletActiveClass + "-prev").prev().addClass(t.bulletActiveClass + "-prev-prev"),
3327                                    v.next().addClass(t.bulletActiveClass + "-next").next().addClass(t.bulletActiveClass + "-next-next");
3328                            else
3329                                u.prev().addClass(t.bulletActiveClass + "-prev").prev().addClass(t.bulletActiveClass + "-prev-prev"),
3330                                v.next().addClass(t.bulletActiveClass + "-next").next().addClass(t.bulletActiveClass + "-next-next")
3331                        }
3332                    }
3333                    if (t.dynamicBullets) {
3334                        var g = Math.min(h.length, t.dynamicMainBullets + 4)
3335                          , b = (this.pagination.bulletSize * g - this.pagination.bulletSize) / 2 - d * this.pagination.bulletSize
3336                          , w = e ? "right" : "left";
3337                        h.css(this.isHorizontal() ? w : "top", b + "px")
3338                    }
3339                }
3340                if ("fraction" === t.type && (a.find("." + t.currentClass).text(t.formatFractionCurrent(i + 1)),
3341                a.find("." + t.totalClass).text(t.formatFractionTotal(r))),
3342                "progressbar" === t.type) {
3343                    var y;
3344                    y = t.progressbarOpposite ? this.isHorizontal() ? "vertical" : "horizontal" : this.isHorizontal() ? "horizontal" : "vertical";
3345                    var x = (i + 1) / r
3346                      , E = 1
3347                      , T = 1;
3348                    "horizontal" === y ? E = x : T = x,
3349                    a.find("." + t.progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + E + ") scaleY(" + T + ")").transition(this.params.speed)
3350                }
3351                "custom" === t.type && t.renderCustom ? (a.html(t.renderCustom(this, i + 1, r)),
3352                this.emit("paginationRender", this, a[0])) : this.emit("paginationUpdate", this, a[0]),
3353                a[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](t.lockClass)
3354            }
3355        },
3356        render: function() {
3357            var e = this.params.pagination;
3358            if (e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
3359                var t = this.virtual && this.params.virtual.enabled ? this.virtual.slides.length : this.slides.length
3360                  , i = this.pagination.$el
3361                  , s = "";
3362                if ("bullets" === e.type) {
3363                    for (var a = this.params.loop ? Math.ceil((t - 2 * this.loopedSlides) / this.params.slidesPerGroup) : this.snapGrid.length, r = 0; r < a; r += 1)
3364                        e.renderBullet ? s += e.renderBullet.call(this, r, e.bulletClass) : s += "<" + e.bulletElement + ' class="' + e.bulletClass + '"></' + e.bulletElement + ">";
3365                    i.html(s),
3366                    this.pagination.bullets = i.find("." + e.bulletClass)
3367                }
3368                "fraction" === e.type && (s = e.renderFraction ? e.renderFraction.call(this, e.currentClass, e.totalClass) : '<span class="' + e.currentClass + '"></span> / <span class="' + e.totalClass + '"></span>',
3369                i.html(s)),
3370                "progressbar" === e.type && (s = e.renderProgressbar ? e.renderProgressbar.call(this, e.progressbarFillClass) : '<span class="' + e.progressbarFillClass + '"></span>',
3371                i.html(s)),
3372                "custom" !== e.type && this.emit("paginationRender", this.pagination.$el[0])
3373            }
3374        },
3375        init: function() {
3376            var e = this
3377              , t = e.params.pagination;
3378            if (t.el) {
3379                var i = n(t.el);
3380                0 !== i.length && (e.params.uniqueNavElements && "string" == typeof t.el && i.length > 1 && 1 === e.$el.find(t.el).length && (i = e.$el.find(t.el)),
3381                "bullets" === t.type && t.clickable && i.addClass(t.clickableClass),
3382                i.addClass(t.modifierClass + t.type),
3383                "bullets" === t.type && t.dynamicBullets && (i.addClass("" + t.modifierClass + t.type + "-dynamic"),
3384                e.pagination.dynamicBulletIndex = 0,
3385                t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)),
3386                "progressbar" === t.type && t.progressbarOpposite && i.addClass(t.progressbarOppositeClass),
3387                t.clickable && i.on("click", "." + t.bulletClass, (function(t) {
3388                    t.preventDefault();
3389                    var i = n(this).index() * e.params.slidesPerGroup;
3390                    e.params.loop && (i += e.loopedSlides),
3391                    e.slideTo(i)
3392                }
3393                )),
3394                d.extend(e.pagination, {
3395                    $el: i,
3396                    el: i[0]
3397                }))
3398            }
3399        },
3400        destroy: function() {
3401            var e = this.params.pagination;
3402            if (e.el && this.pagination.el && this.pagination.$el && 0 !== this.pagination.$el.length) {
3403                var t = this.pagination.$el;
3404                t.removeClass(e.hiddenClass),
3405                t.removeClass(e.modifierClass + e.type),
3406                this.pagination.bullets && this.pagination.bullets.removeClass(e.bulletActiveClass),
3407                e.clickable && t.off("click", "." + e.bulletClass)
3408            }
3409        }
3410    }
3411      , le = {
3412        setTranslate: function() {
3413            if (this.params.scrollbar.el && this.scrollbar.el) {
3414                var e = this.scrollbar
3415                  , t = this.rtlTranslate
3416                  , i = this.progress
3417                  , s = e.dragSize
3418                  , a = e.trackSize
3419                  , r = e.$dragEl
3420                  , n = e.$el
3421                  , o = this.params.scrollbar
3422                  , l = s
3423                  , d = (a - s) * i;
3424                t ? (d = -d) > 0 ? (l = s - d,
3425                d = 0) : -d + s > a && (l = a + d) : d < 0 ? (l = s + d,
3426                d = 0) : d + s > a && (l = a - d),
3427                this.isHorizontal() ? (r.transform("translate3d(" + d + "px, 0, 0)"),
3428                r[0].style.width = l + "px") : (r.transform("translate3d(0px, " + d + "px, 0)"),
3429                r[0].style.height = l + "px"),
3430                o.hide && (clearTimeout(this.scrollbar.timeout),
3431                n[0].style.opacity = 1,
3432                this.scrollbar.timeout = setTimeout((function() {
3433                    n[0].style.opacity = 0,
3434                    n.transition(400)
3435                }
3436                ), 1e3))
3437            }
3438        },
3439        setTransition: function(e) {
3440            this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e)
3441        },
3442        updateSize: function() {
3443            if (this.params.scrollbar.el && this.scrollbar.el) {
3444                var e = this.scrollbar
3445                  , t = e.$dragEl
3446                  , i = e.$el;
3447                t[0].style.width = "",
3448                t[0].style.height = "";
3449                var s, a = this.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight, r = this.size / this.virtualSize, n = r * (a / this.size);
3450                s = "auto" === this.params.scrollbar.dragSize ? a * r : parseInt(this.params.scrollbar.dragSize, 10),
3451                this.isHorizontal() ? t[0].style.width = s + "px" : t[0].style.height = s + "px",
3452                i[0].style.display = r >= 1 ? "none" : "",
3453                this.params.scrollbar.hide && (i[0].style.opacity = 0),
3454                d.extend(e, {
3455                    trackSize: a,
3456                    divider: r,
3457                    moveDivider: n,
3458                    dragSize: s
3459                }),
3460                e.$el[this.params.watchOverflow && this.isLocked ? "addClass" : "removeClass"](this.params.scrollbar.lockClass)
3461            }
3462        },
3463        getPointerPosition: function(e) {
3464            return this.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
3465        },
3466        setDragPosition: function(e) {
3467            var t, i = this.scrollbar, s = this.rtlTranslate, a = i.$el, r = i.dragSize, n = i.trackSize, o = i.dragStartPos;
3468            t = (i.getPointerPosition(e) - a.offset()[this.isHorizontal() ? "left" : "top"] - (null !== o ? o : r / 2)) / (n - r),
3469            t = Math.max(Math.min(t, 1), 0),
3470            s && (t = 1 - t);
3471            var l = this.minTranslate() + (this.maxTranslate() - this.minTranslate()) * t;
3472            this.updateProgress(l),
3473            this.setTranslate(l),
3474            this.updateActiveIndex(),
3475            this.updateSlidesClasses()
3476        },
3477        onDragStart: function(e) {
3478            var t = this.params.scrollbar
3479              , i = this.scrollbar
3480              , s = this.$wrapperEl
3481              , a = i.$el
3482              , r = i.$dragEl;
3483            this.scrollbar.isTouched = !0,
3484            this.scrollbar.dragStartPos = e.target === r[0] || e.target === r ? i.getPointerPosition(e) - e.target.getBoundingClientRect()[this.isHorizontal() ? "left" : "top"] : null,
3485            e.preventDefault(),
3486            e.stopPropagation(),
3487            s.transition(100),
3488            r.transition(100),
3489            i.setDragPosition(e),
3490            clearTimeout(this.scrollbar.dragTimeout),
3491            a.transition(0),
3492            t.hide && a.css("opacity", 1),
3493            this.params.cssMode && this.$wrapperEl.css("scroll-snap-type", "none"),
3494            this.emit("scrollbarDragStart", e)
3495        },
3496        onDragMove: function(e) {
3497            var t = this.scrollbar
3498              , i = this.$wrapperEl
3499              , s = t.$el
3500              , a = t.$dragEl;
3501            this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1,
3502            t.setDragPosition(e),
3503            i.transition(0),
3504            s.transition(0),
3505            a.transition(0),
3506            this.emit("scrollbarDragMove", e))
3507        },
3508        onDragEnd: function(e) {
3509            var t = this.params.scrollbar
3510              , i = this.scrollbar
3511              , s = this.$wrapperEl
3512              , a = i.$el;
3513            this.scrollbar.isTouched && (this.scrollbar.isTouched = !1,
3514            this.params.cssMode && (this.$wrapperEl.css("scroll-snap-type", ""),
3515            s.transition("")),
3516            t.hide && (clearTimeout(this.scrollbar.dragTimeout),
3517            this.scrollbar.dragTimeout = d.nextTick((function() {
3518                a.css("opacity", 0),
3519                a.transition(400)
3520            }
3521            ), 1e3)),
3522            this.emit("scrollbarDragEnd", e),
3523            t.snapOnRelease && this.slideToClosest())
3524        },
3525        enableDraggable: function() {
3526            if (this.params.scrollbar.el) {
3527                var e = this.scrollbar
3528                  , t = this.touchEventsTouch
3529                  , s = this.touchEventsDesktop
3530                  , a = this.params
3531                  , r = e.$el[0]
3532                  , n = !(!h.passiveListener || !a.passiveListeners) && {
3533                    passive: !1,
3534                    capture: !1
3535                }
3536                  , o = !(!h.passiveListener || !a.passiveListeners) && {
3537                    passive: !0,
3538                    capture: !1
3539                };
3540                h.touch ? (r.addEventListener(t.start, this.scrollbar.onDragStart, n),
3541                r.addEventListener(t.move, this.scrollbar.onDragMove, n),
3542                r.addEventListener(t.end, this.scrollbar.onDragEnd, o)) : (r.addEventListener(s.start, this.scrollbar.onDragStart, n),
3543                i.addEventListener(s.move, this.scrollbar.onDragMove, n),
3544                i.addEventListener(s.end, this.scrollbar.onDragEnd, o))
3545            }
3546        },
3547        disableDraggable: function() {
3548            if (this.params.scrollbar.el) {
3549                var e = this.scrollbar
3550                  , t = this.touchEventsTouch
3551                  , s = this.touchEventsDesktop
3552                  , a = this.params
3553                  , r = e.$el[0]
3554                  , n = !(!h.passiveListener || !a.passiveListeners) && {
3555                    passive: !1,
3556                    capture: !1
3557                }
3558                  , o = !(!h.passiveListener || !a.passiveListeners) && {
3559                    passive: !0,
3560                    capture: !1
3561                };
3562                h.touch ? (r.removeEventListener(t.start, this.scrollbar.onDragStart, n),
3563                r.removeEventListener(t.move, this.scrollbar.onDragMove, n),
3564                r.removeEventListener(t.end, this.scrollbar.onDragEnd, o)) : (r.removeEventListener(s.start, this.scrollbar.onDragStart, n),
3565                i.removeEventListener(s.move, this.scrollbar.onDragMove, n),
3566                i.removeEventListener(s.end, this.scrollbar.onDragEnd, o))
3567            }
3568        },
3569        init: function() {
3570            if (this.params.scrollbar.el) {
3571                var e = this.scrollbar
3572                  , t = this.$el
3573                  , i = this.params.scrollbar
3574                  , s = n(i.el);
3575                this.params.uniqueNavElements && "string" == typeof i.el && s.length > 1 && 1 === t.find(i.el).length && (s = t.find(i.el));
3576                var a = s.find("." + this.params.scrollbar.dragClass);
3577                0 === a.length && (a = n('<div class="' + this.params.scrollbar.dragClass + '"></div>'),
3578                s.append(a)),
3579                d.extend(e, {
3580                    $el: s,
3581                    el: s[0],
3582                    $dragEl: a,
3583                    dragEl: a[0]
3584                }),
3585                i.draggable && e.enableDraggable()
3586            }
3587        },
3588        destroy: function() {
3589            this.scrollbar.disableDraggable()
3590        }
3591    }
3592      , de = {
3593        setTransform: function(e, t) {
3594            var i = this.rtl
3595              , s = n(e)
3596              , a = i ? -1 : 1
3597              , r = s.attr("data-swiper-parallax") || "0"
3598              , o = s.attr("data-swiper-parallax-x")
3599              , l = s.attr("data-swiper-parallax-y")
3600              , d = s.attr("data-swiper-parallax-scale")
3601              , h = s.attr("data-swiper-parallax-opacity");
3602            if (o || l ? (o = o || "0",
3603            l = l || "0") : this.isHorizontal() ? (o = r,
3604            l = "0") : (l = r,
3605            o = "0"),
3606            o = o.indexOf("%") >= 0 ? parseInt(o, 10) * t * a + "%" : o * t * a + "px",
3607            l = l.indexOf("%") >= 0 ? parseInt(l, 10) * t + "%" : l * t + "px",
3608            null != h) {
3609                var p = h - (h - 1) * (1 - Math.abs(t));
3610                s[0].style.opacity = p
3611            }
3612            if (null == d)
3613                s.transform("translate3d(" + o + ", " + l + ", 0px)");
3614            else {
3615                var c = d - (d - 1) * (1 - Math.abs(t));
3616                s.transform("translate3d(" + o + ", " + l + ", 0px) scale(" + c + ")")
3617            }
3618        },
3619        setTranslate: function() {
3620            var e = this
3621              , t = e.$el
3622              , i = e.slides
3623              , s = e.progress
3624              , a = e.snapGrid;
3625            t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t, i) {
3626                e.parallax.setTransform(i, s)
3627            }
3628            )),
3629            i.each((function(t, i) {
3630                var r = i.progress;
3631                e.params.slidesPerGroup > 1 && "auto" !== e.params.slidesPerView && (r += Math.ceil(t / 2) - s * (a.length - 1)),
vendor: 8,149 bytes, lines 3632-3773
3632                r = Math.min(Math.max(r, -1), 1),
3633                n(i).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t, i) {
3634                    e.parallax.setTransform(i, r)
3635                }
3636                ))
3637            }
3638            ))
3639        },
3640        setTransition: function(e) {
3641            void 0 === e && (e = this.params.speed);
3642            this.$el.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((function(t, i) {
3643                var s = n(i)
3644                  , a = parseInt(s.attr("data-swiper-parallax-duration"), 10) || e;
3645                0 === e && (a = 0),
3646                s.transition(a)
3647            }
3648            ))
3649        }
3650    }
3651      , he = {
3652        getDistanceBetweenTouches: function(e) {
3653            if (e.targetTouches.length < 2)
3654                return 1;
3655            var t = e.targetTouches[0].pageX
3656              , i = e.targetTouches[0].pageY
3657              , s = e.targetTouches[1].pageX
3658              , a = e.targetTouches[1].pageY;
3659            return Math.sqrt(Math.pow(s - t, 2) + Math.pow(a - i, 2))
3660        },
3661        onGestureStart: function(e) {
3662            var t = this.params.zoom
3663              , i = this.zoom
3664              , s = i.gesture;
3665            if (i.fakeGestureTouched = !1,
3666            i.fakeGestureMoved = !1,
3667            !h.gestures) {
3668                if ("touchstart" !== e.type || "touchstart" === e.type && e.targetTouches.length < 2)
3669                    return;
3670                i.fakeGestureTouched = !0,
3671                s.scaleStart = he.getDistanceBetweenTouches(e)
3672            }
3673            s.$slideEl && s.$slideEl.length || (s.$slideEl = n(e.target).closest("." + this.params.slideClass),
3674            0 === s.$slideEl.length && (s.$slideEl = this.slides.eq(this.activeIndex)),
3675            s.$imageEl = s.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),
3676            s.$imageWrapEl = s.$imageEl.parent("." + t.containerClass),
3677            s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || t.maxRatio,
3678            0 !== s.$imageWrapEl.length) ? (s.$imageEl && s.$imageEl.transition(0),
3679            this.zoom.isScaling = !0) : s.$imageEl = void 0
3680        },
3681        onGestureChange: function(e) {
3682            var t = this.params.zoom
3683              , i = this.zoom
3684              , s = i.gesture;
3685            if (!h.gestures) {
3686                if ("touchmove" !== e.type || "touchmove" === e.type && e.targetTouches.length < 2)
3687                    return;
3688                i.fakeGestureMoved = !0,
3689                s.scaleMove = he.getDistanceBetweenTouches(e)
3690            }
3691            s.$imageEl && 0 !== s.$imageEl.length && (i.scale = h.gestures ? e.scale * i.currentScale : s.scaleMove / s.scaleStart * i.currentScale,
3692            i.scale > s.maxRatio && (i.scale = s.maxRatio - 1 + Math.pow(i.scale - s.maxRatio + 1, .5)),
3693            i.scale < t.minRatio && (i.scale = t.minRatio + 1 - Math.pow(t.minRatio - i.scale + 1, .5)),
3694            s.$imageEl.transform("translate3d(0,0,0) scale(" + i.scale + ")"))
3695        },
3696        onGestureEnd: function(e) {
3697            var t = this.params.zoom
3698              , i = this.zoom
3699              , s = i.gesture;
3700            if (!h.gestures) {
3701                if (!i.fakeGestureTouched || !i.fakeGestureMoved)
3702                    return;
3703                if ("touchend" !== e.type || "touchend" === e.type && e.changedTouches.length < 2 && !A.android)
3704                    return;
3705                i.fakeGestureTouched = !1,
3706                i.fakeGestureMoved = !1
3707            }
3708            s.$imageEl && 0 !== s.$imageEl.length && (i.scale = Math.max(Math.min(i.scale, s.maxRatio), t.minRatio),
3709            s.$imageEl.transition(this.params.speed).transform("translate3d(0,0,0) scale(" + i.scale + ")"),
3710            i.currentScale = i.scale,
3711            i.isScaling = !1,
3712            1 === i.scale && (s.$slideEl = void 0))
3713        },
3714        onTouchStart: function(e) {
3715            var t = this.zoom
3716              , i = t.gesture
3717              , s = t.image;
3718            i.$imageEl && 0 !== i.$imageEl.length && (s.isTouched || (A.android && e.cancelable && e.preventDefault(),
3719            s.isTouched = !0,
3720            s.touchesStart.x = "touchstart" === e.type ? e.targetTouches[0].pageX : e.pageX,
3721            s.touchesStart.y = "touchstart" === e.type ? e.targetTouches[0].pageY : e.pageY))
3722        },
3723        onTouchMove: function(e) {
3724            var t = this.zoom
3725              , i = t.gesture
3726              , s = t.image
3727              , a = t.velocity;
3728            if (i.$imageEl && 0 !== i.$imageEl.length && (this.allowClick = !1,
3729            s.isTouched && i.$slideEl)) {
3730                s.isMoved || (s.width = i.$imageEl[0].offsetWidth,
3731                s.height = i.$imageEl[0].offsetHeight,
3732                s.startX = d.getTranslate(i.$imageWrapEl[0], "x") || 0,
3733                s.startY = d.getTranslate(i.$imageWrapEl[0], "y") || 0,
3734                i.slideWidth = i.$slideEl[0].offsetWidth,
3735                i.slideHeight = i.$slideEl[0].offsetHeight,
3736                i.$imageWrapEl.transition(0),
3737                this.rtl && (s.startX = -s.startX,
3738                s.startY = -s.startY));
3739                var r = s.width * t.scale
3740                  , n = s.height * t.scale;
3741                if (!(r < i.slideWidth && n < i.slideHeight)) {
3742                    if (s.minX = Math.min(i.slideWidth / 2 - r / 2, 0),
3743                    s.maxX = -s.minX,
3744                    s.minY = Math.min(i.slideHeight / 2 - n / 2, 0),
3745                    s.maxY = -s.minY,
3746                    s.touchesCurrent.x = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX,
3747                    s.touchesCurrent.y = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY,
3748                    !s.isMoved && !t.isScaling) {
3749                        if (this.isHorizontal() && (Math.floor(s.minX) === Math.floor(s.startX) && s.touchesCurrent.x < s.touchesStart.x || Math.floor(s.maxX) === Math.floor(s.startX) && s.touchesCurrent.x > s.touchesStart.x))
3750                            return void (s.isTouched = !1);
3751                        if (!this.isHorizontal() && (Math.floor(s.minY) === Math.floor(s.startY) && s.touchesCurrent.y < s.touchesStart.y || Math.floor(s.maxY) === Math.floor(s.startY) && s.touchesCurrent.y > s.touchesStart.y))
3752                            return void (s.isTouched = !1)
3753                    }
3754                    e.cancelable && e.preventDefault(),
3755                    e.stopPropagation(),
3756                    s.isMoved = !0,
3757                    s.currentX = s.touchesCurrent.x - s.touchesStart.x + s.startX,
3758                    s.currentY = s.touchesCurrent.y - s.touchesStart.y + s.startY,
3759                    s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)),
3760                    s.currentX > s.maxX && (s.currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)),
3761                    s.currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)),
3762                    s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s.currentY - s.maxY + 1, .8)),
3763                    a.prevPositionX || (a.prevPositionX = s.touchesCurrent.x),
3764                    a.prevPositionY || (a.prevPositionY = s.touchesCurrent.y),
3765                    a.prevTime || (a.prevTime = Date.now()),
3766                    a.x = (s.touchesCurrent.x - a.prevPositionX) / (Date.now() - a.prevTime) / 2,
3767                    a.y = (s.touchesCurrent.y - a.prevPositionY) / (Date.now() - a.prevTime) / 2,
3768                    Math.abs(s.touchesCurrent.x - a.prevPositionX) < 2 && (a.x = 0),
3769                    Math.abs(s.touchesCurrent.y - a.prevPositionY) < 2 && (a.y = 0),
3770                    a.prevPositionX = s.touchesCurrent.x,
3771                    a.prevPositionY = s.touchesCurrent.y,
3772                    a.prevTime = Date.now(),
3773                    i.$imageWrapEl.transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0
vendor: 4,650 bytes, lines 3773-3863
3773)")
3774                }
3775            }
3776        },
3777        onTouchEnd: function() {
3778            var e = this.zoom
3779              , t = e.gesture
3780              , i = e.image
3781              , s = e.velocity;
3782            if (t.$imageEl && 0 !== t.$imageEl.length) {
3783                if (!i.isTouched || !i.isMoved)
3784                    return i.isTouched = !1,
3785                    void (i.isMoved = !1);
3786                i.isTouched = !1,
3787                i.isMoved = !1;
3788                var a = 300
3789                  , r = 300
3790                  , n = s.x * a
3791                  , o = i.currentX + n
3792                  , l = s.y * r
3793                  , d = i.currentY + l;
3794                0 !== s.x && (a = Math.abs((o - i.currentX) / s.x)),
3795                0 !== s.y && (r = Math.abs((d - i.currentY) / s.y));
3796                var h = Math.max(a, r);
3797                i.currentX = o,
3798                i.currentY = d;
3799                var p = i.width * e.scale
3800                  , c = i.height * e.scale;
3801                i.minX = Math.min(t.slideWidth / 2 - p / 2, 0),
3802                i.maxX = -i.minX,
3803                i.minY = Math.min(t.slideHeight / 2 - c / 2, 0),
3804                i.maxY = -i.minY,
3805                i.currentX = Math.max(Math.min(i.currentX, i.maxX), i.minX),
3806                i.currentY = Math.max(Math.min(i.currentY, i.maxY), i.minY),
3807                t.$imageWrapEl.transition(h).transform("translate3d(" + i.currentX + "px, " + i.currentY + "px,0)")
3808            }
3809        },
3810        onTransitionEnd: function() {
3811            var e = this.zoom
3812              , t = e.gesture;
3813            t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl && t.$imageEl.transform("translate3d(0,0,0) scale(1)"),
3814            t.$imageWrapEl && t.$imageWrapEl.transform("translate3d(0,0,0)"),
3815            e.scale = 1,
3816            e.currentScale = 1,
3817            t.$slideEl = void 0,
3818            t.$imageEl = void 0,
3819            t.$imageWrapEl = void 0)
3820        },
3821        toggle: function(e) {
3822            var t = this.zoom;
3823            t.scale && 1 !== t.scale ? t.out() : t.in(e)
3824        },
3825        in: function(e) {
3826            var t, i, s, a, r, n, o, l, d, h, p, c, u, v, f, m, g = this.zoom, b = this.params.zoom, w = g.gesture, y = g.image;
3827            (w.$slideEl || (this.params.virtual && this.params.virtual.enabled && this.virtual ? w.$slideEl = this.$wrapperEl.children("." + this.params.slideActiveClass) : w.$slideEl = this.slides.eq(this.activeIndex),
3828            w.$imageEl = w.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),
3829            w.$imageWrapEl = w.$imageEl.parent("." + b.containerClass)),
3830            w.$imageEl && 0 !== w.$imageEl.length) && (w.$slideEl.addClass("" + b.zoomedSlideClass),
3831            void 0 === y.touchesStart.x && e ? (t = "touchend" === e.type ? e.changedTouches[0].pageX : e.pageX,
3832            i = "touchend" === e.type ? e.changedTouches[0].pageY : e.pageY) : (t = y.touchesStart.x,
3833            i = y.touchesStart.y),
3834            g.scale = w.$imageWrapEl.attr("data-swiper-zoom") || b.maxRatio,
3835            g.currentScale = w.$imageWrapEl.attr("data-swiper-zoom") || b.maxRatio,
3836            e ? (f = w.$slideEl[0].offsetWidth,
3837            m = w.$slideEl[0].offsetHeight,
3838            s = w.$slideEl.offset().left + f / 2 - t,
3839            a = w.$slideEl.offset().top + m / 2 - i,
3840            o = w.$imageEl[0].offsetWidth,
3841            l = w.$imageEl[0].offsetHeight,
3842            d = o * g.scale,
3843            h = l * g.scale,
3844            u = -(p = Math.min(f / 2 - d / 2, 0)),
3845            v = -(c = Math.min(m / 2 - h / 2, 0)),
3846            (r = s * g.scale) < p && (r = p),
3847            r > u && (r = u),
3848            (n = a * g.scale) < c && (n = c),
3849            n > v && (n = v)) : (r = 0,
3850            n = 0),
3851            w.$imageWrapEl.transition(300).transform("translate3d(" + r + "px, " + n + "px,0)"),
3852            w.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + g.scale + ")"))
3853        },
3854        out: function() {
3855            var e = this.zoom
3856              , t = this.params.zoom
3857              , i = e.gesture;
3858            i.$slideEl || (this.params.virtual && this.params.virtual.enabled && this.virtual ? i.$slideEl = this.$wrapperEl.children("." + this.params.slideActiveClass) : i.$slideEl = this.slides.eq(this.activeIndex),
3859            i.$imageEl = i.$slideEl.find("img, svg, canvas, picture, .swiper-zoom-target"),
3860            i.$imageWrapEl = i.$imageEl.parent("." + t.containerClass)),
3861            i.$imageEl && 0 !== i.$imageEl.length && (e.scale = 1,
3862            e.currentScale = 1,
3863            i.$imageWrapEl.transition(300).transform("translate3d(0,
38630,0)"),
3864            i.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),
3865            i.$slideEl.removeClass("" + t.zoomedSlideClass),
3866            i.$slideEl = void 0)
3867        },
3868        enable: function() {
3869            var e = this.zoom;
3870            if (!e.enabled) {
3871                e.enabled = !0;
3872                var t = !("touchstart" !== this.touchEvents.start || !h.passiveListener || !this.params.passiveListeners) && {
3873                    passive: !0,
3874                    capture: !1
3875                }
3876                  , i = !h.passiveListener || {
3877                    passive: !1,
3878                    capture: !0
3879                }
3880                  , s = "." + this.params.slideClass;
3881                h.gestures ? (this.$wrapperEl.on("gesturestart", s, e.onGestureStart, t),
3882                this.$wrapperEl.on("gesturechange", s, e.onGestureChange, t),
3883                this.$wrapperEl.on("gestureend", s, e.onGestureEnd, t)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.on(this.touchEvents.start, s, e.onGestureStart, t),
3884                this.$wrapperEl.on(this.touchEvents.move, s, e.onGestureChange, i),
3885                this.$wrapperEl.on(this.touchEvents.end, s, e.onGestureEnd, t),
3886                this.touchEvents.cancel && this.$wrapperEl.on(this.touchEvents.cancel, s, e.onGestureEnd, t)),
3887                this.$wrapperEl.on(this.touchEvents.move, "." + this.params.zoom.containerClass, e.onTouchMove, i)
3888            }
3889        },
3890        disable: function() {
3891            var e = this.zoom;
3892            if (e.enabled) {
3893                this.zoom.enabled = !1;
3894                var t = !("touchstart" !== this.touchEvents.start || !h.passiveListener || !this.params.passiveListeners) && {
3895                    passive: !0,
3896                    capture: !1
3897                }
3898                  , i = !h.passiveListener || {
3899                    passive: !1,
3900                    capture: !0
3901                }
3902                  , s = "." + this.params.slideClass;
3903                h.gestures ? (this.$wrapperEl.off("gesturestart", s, e.onGestureStart, t),
3904                this.$wrapperEl.off("gesturechange", s, e.onGestureChange, t),
3905                this.$wrapperEl.off("gestureend", s, e.onGestureEnd, t)) : "touchstart" === this.touchEvents.start && (this.$wrapperEl.off(this.touchEvents.start, s, e.onGestureStart, t),
3906                this.$wrapperEl.off(this.touchEvents.move, s, e.onGestureChange, i),
3907                this.$wrapperEl.off(this.touchEvents.end, s, e.onGestureEnd, t),
3908                this.touchEvents.cancel && this.$wrapperEl.off(this.touchEvents.cancel, s, e.onGestureEnd, t)),
3909                this.$wrapperEl.off(this.touchEvents.move, "." + this.params.zoom.containerClass, e.onTouchMove, i)
3910            }
3911        }
3912    }
3913      , pe = {
3914        loadInSlide: function(e, t) {
3915            void 0 === t && (t = !0);
3916            var i = this
3917              , s = i.params.lazy;
3918            if (void 0 !== e && 0 !== i.slides.length) {
3919                var a = i.virtual && i.params.virtual.enabled ? i.$wrapperEl.children("." + i.params.slideClass + '[data-swiper-slide-index="' + e + '"]') : i.slides.eq(e)
3920                  , r = a.find("." + s.elementClass + ":not(." + s.loadedClass + "):not(." + s.loadingClass + ")");
3921                !a.hasClass(s.elementClass) || a.hasClass(s.loadedClass) || a.hasClass(s.loadingClass) || (r = r.add(a[0])),
3922                0 !== r.length && r.each((function(e, r) {
3923                    var o = n(r);
3924                    o.addClass(s.loadingClass);
3925                    var l = o.attr("data-background")
3926                      , d = o.attr("data-src")
3927                      , h = o.attr("data-srcset")
3928                      , p = o.attr("data-sizes")
3929                      , c = o.parent("picture");
3930                    i.loadImage(o[0], d || l, h, p, !1, (function() {
3931                        if (null != i && i && (!i || i.params) && !i.destroyed) {
3932                            if (l ? (o.css("background-image", 'url("' + l + '")'),
3933                            o.removeAttr("data-background")) : (h && (o.attr("srcset", h),
3934                            o.removeAttr("data-srcset")),
3935                            p && (o.attr("sizes", p),
3936                            o.removeAttr("data-sizes")),
3937                            c.length && c.children("source").each((function(e, t) {
3938                                var i = n(t);
3939                                i.attr("data-srcset") && (i.attr("srcset", i.attr("data-srcset")),
3940                                i.removeAttr("data-srcset"))
3941                            }
3942                            )),
3943                            d && (o.attr("src", d),
3944                            o.removeAttr("data-src"))),
3945                            o.addClass(s.loadedClass).removeClass(s.loadingClass),
3946                            a.find("." + s.preloaderClass).remove(),
3947                            i.params.loop && t) {
3948                                var e = a.attr("data-swiper-slide-index");
3949                                if (a.hasClass(i.params.slideDuplicateClass)) {
3950                                    var r = i.$wrapperEl.children('[data-swiper-slide-index="' + e + '"]:not(.' + i.params.slideDuplicateClass + ")");
3951                                    i.lazy.loadInSlide(r.index(), !1)
3952                                } else {
3953                                    var u = i.$wrapperEl.children("." + i.params.slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]');
3954                                    i.lazy.loadInSlide(u.index(), !1)
3955                                }
3956                            }
3957                            i.emit("lazyImageReady", a[0], o[0]),
3958                            i.params.autoHeight && i.updateAutoHeight()
3959                        }
3960                    }
3961                    )),
3962                    i.emit("lazyImageLoad", a[0], o[0])
3963                }
3964                ))
3965            }
3966        },
3967        load: function() {
3968            var e = this
3969              , t = e.$wrapperEl
3970              , i = e.params
3971              , s = e.slides
3972              , a = e.activeIndex
3973              , r = e.virtual && i.virtual.enabled
3974              , o = i.lazy
3975              , l = i.slidesPerView;
3976            function d(e) {
3977                if (r) {
3978                    if (t.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]').length)
3979                        return !0
3980                } else if (s[e])
3981                    return !0;
3982                return !1
3983            }
3984            function h(e) {
3985                return r ? n(e).attr("data-swiper-slide-index") : n(e).index()
3986            }
3987            if ("auto" === l && (l = 0),
3988            e.lazy.initialImageLoaded || (e.lazy.initialImageLoaded = !0),
3989            e.params.watchSlidesVisibility)
3990                t.children("." + i.slideVisibleClass).each((function(t, i) {
3991                    var s = r ? n(i).attr("data-swiper-slide-index") : n(i).index();
3992                    e.lazy.loadInSlide(s)
3993                }
3994                ));
3995            else if (l > 1)
3996                for (var p = a; p < a + l; p += 1)
vendor: 4,772 bytes, lines 3997-4109
3997                    d(p) && e.lazy.loadInSlide(p);
3998            else
3999                e.lazy.loadInSlide(a);
4000            if (o.loadPrevNext)
4001                if (l > 1 || o.loadPrevNextAmount && o.loadPrevNextAmount > 1) {
4002                    for (var c = o.loadPrevNextAmount, u = l, v = Math.min(a + u + Math.max(c, u), s.length), f = Math.max(a - Math.max(u, c), 0), m = a + l; m < v; m += 1)
4003                        d(m) && e.lazy.loadInSlide(m);
4004                    for (var g = f; g < a; g += 1)
4005                        d(g) && e.lazy.loadInSlide(g)
4006                } else {
4007                    var b = t.children("." + i.slideNextClass);
4008                    b.length > 0 && e.lazy.loadInSlide(h(b));
4009                    var w = t.children("." + i.slidePrevClass);
4010                    w.length > 0 && e.lazy.loadInSlide(h(w))
4011                }
4012        }
4013    }
4014      , ce = {
4015        LinearSpline: function(e, t) {
4016            var i, s, a, r, n, o = function(e, t) {
4017                for (s = -1,
4018                i = e.length; i - s > 1; )
4019                    e[a = i + s >> 1] <= t ? s = a : i = a;
4020                return i
4021            };
4022            return this.x = e,
4023            this.y = t,
4024            this.lastIndex = e.length - 1,
4025            this.interpolate = function(e) {
4026                return e ? (n = o(this.x, e),
4027                r = n - 1,
4028                (e - this.x[r]) * (this.y[n] - this.y[r]) / (this.x[n] - this.x[r]) + this.y[r]) : 0
4029            }
4030            ,
4031            this
4032        },
4033        getInterpolateFunction: function(e) {
4034            this.controller.spline || (this.controller.spline = this.params.loop ? new ce.LinearSpline(this.slidesGrid,e.slidesGrid) : new ce.LinearSpline(this.snapGrid,e.snapGrid))
4035        },
4036        setTranslate: function(e, t) {
4037            var i, s, a = this, r = a.controller.control;
4038            function n(e) {
4039                var t = a.rtlTranslate ? -a.translate : a.translate;
4040                "slide" === a.params.controller.by && (a.controller.getInterpolateFunction(e),
4041                s = -a.controller.spline.interpolate(-t)),
4042                s && "container" !== a.params.controller.by || (i = (e.maxTranslate() - e.minTranslate()) / (a.maxTranslate() - a.minTranslate()),
4043                s = (t - a.minTranslate()) * i + e.minTranslate()),
4044                a.params.controller.inverse && (s = e.maxTranslate() - s),
4045                e.updateProgress(s),
4046                e.setTranslate(s, a),
4047                e.updateActiveIndex(),
4048                e.updateSlidesClasses()
4049            }
4050            if (Array.isArray(r))
4051                for (var o = 0; o < r.length; o += 1)
4052                    r[o] !== t && r[o]instanceof j && n(r[o]);
4053            else
4054                r instanceof j && t !== r && n(r)
4055        },
4056        setTransition: function(e, t) {
4057            var i, s = this, a = s.controller.control;
4058            function r(t) {
4059                t.setTransition(e, s),
4060                0 !== e && (t.transitionStart(),
4061                t.params.autoHeight && d.nextTick((function() {
4062                    t.updateAutoHeight()
4063                }
4064                )),
4065                t.$wrapperEl.transitionEnd((function() {
4066                    a && (t.params.loop && "slide" === s.params.controller.by && t.loopFix(),
4067                    t.transitionEnd())
4068                }
4069                )))
4070            }
4071            if (Array.isArray(a))
4072                for (i = 0; i < a.length; i += 1)
4073                    a[i] !== t && a[i]instanceof j && r(a[i]);
4074            else
4075                a instanceof j && t !== a && r(a)
4076        }
4077    }
4078      , ue = {
4079        makeElFocusable: function(e) {
4080            return e.attr("tabIndex", "0"),
4081            e
4082        },
4083        makeElNotFocusable: function(e) {
4084            return e.attr("tabIndex", "-1"),
4085            e
4086        },
4087        addElRole: function(e, t) {
4088            return e.attr("role", t),
4089            e
4090        },
4091        addElLabel: function(e, t) {
4092            return e.attr("aria-label", t),
4093            e
4094        },
4095        disableEl: function(e) {
4096            return e.attr("aria-disabled", !0),
4097            e
4098        },
4099        enableEl: function(e) {
4100            return e.attr("aria-disabled", !1),
4101            e
4102        },
4103        onEnterKey: function(e) {
4104            var t = this.params.a11y;
4105            if (13 === e.keyCode) {
4106                var i = n(e.target);
4107                this.navigation && this.navigation.$nextEl && i.is(this.navigation.$nextEl) && (this.isEnd && !this.params.loop || this.slideNext(),
4108                this.isEnd ? this.a11y.notify(t.lastSlideMessage) : this.a11y.notify(t.nextSlideMessage)),
4109                this.navigation && this.navigation.$prevEl && i.is(this.navigation.$prevEl) && (this.isBeg
4109inning && !this.params.loop || this.slidePrev(),
4110                this.isBeginning ? this.a11y.notify(t.firstSlideMessage) : this.a11y.notify(t.prevSlideMessage)),
4111                this.pagination && i.is("." + this.params.pagination.bulletClass) && i[0].click()
4112            }
4113        },
4114        notify: function(e) {
4115            var t = this.a11y.liveRegion;
4116            0 !== t.length && (t.html(""),
4117            t.html(e))
4118        },
4119        updateNavigation: function() {
4120            if (!this.params.loop && this.navigation) {
4121                var e = this.navigation
4122                  , t = e.$nextEl
4123                  , i = e.$prevEl;
4124                i && i.length > 0 && (this.isBeginning ? (this.a11y.disableEl(i),
4125                this.a11y.makeElNotFocusable(i)) : (this.a11y.enableEl(i),
4126                this.a11y.makeElFocusable(i))),
4127                t && t.length > 0 && (this.isEnd ? (this.a11y.disableEl(t),
4128                this.a11y.makeElNotFocusable(t)) : (this.a11y.enableEl(t),
4129                this.a11y.makeElFocusable(t)))
4130            }
4131        },
4132        updatePagination: function() {
4133            var e = this
4134              , t = e.params.a11y;
4135            e.pagination && e.params.pagination.clickable && e.pagination.bullets && e.pagination.bullets.length && e.pagination.bullets.each((function(i, s) {
4136                var a = n(s);
4137                e.a11y.makeElFocusable(a),
4138                e.a11y.addElRole(a, "button"),
4139                e.a11y.addElLabel(a, t.paginationBulletMessage.replace(/\{\{index\}\}/, a.index() + 1))
4140            }
4141            ))
4142        },
4143        init: function() {
4144            this.$el.append(this.a11y.liveRegion);
4145            var e, t, i = this.params.a11y;
4146            this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl),
4147            this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl),
4148            e && (this.a11y.makeElFocusable(e),
4149            this.a11y.addElRole(e, "button"),
4150            this.a11y.addElLabel(e, i.nextSlideMessage),
4151            e.on("keydown", this.a11y.onEnterKey)),
4152            t && (this.a11y.makeElFocusable(t),
4153            this.a11y.addElRole(t, "button"),
4154            this.a11y.addElLabel(t, i.prevSlideMessage),
4155            t.on("keydown", this.a11y.onEnterKey)),
4156            this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.on("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey)
4157        },
4158        destroy: function() {
4159            var e, t;
4160            this.a11y.liveRegion && this.a11y.liveRegion.length > 0 && this.a11y.liveRegion.remove(),
4161            this.navigation && this.navigation.$nextEl && (e = this.navigation.$nextEl),
4162            this.navigation && this.navigation.$prevEl && (t = this.navigation.$prevEl),
4163            e && e.off("keydown", this.a11y.onEnterKey),
4164            t && t.off("keydown", this.a11y.onEnterKey),
4165            this.pagination && this.params.pagination.clickable && this.pagination.bullets && this.pagination.bullets.length && this.pagination.$el.off("keydown", "." + this.params.pagination.bulletClass, this.a11y.onEnterKey)
4166        }
4167    }
4168      , ve = {
4169        init: function() {
4170            if (this.params.history) {
4171                if (!a.history || !a.history.pushState)
4172                    return this.params.history.enabled = !1,
4173                    void (this.params.hashNavigation.enabled = !0);
4174                var e = this.history;
4175                e.initialized = !0,
4176                e.paths = ve.getPathValues(),
4177                (e.paths.key || e.paths.value) && (e.scrollToSlide(0, e.paths.value, this.params.runCallbacksOnInit),
4178                this.params.history.replaceState || a.addEventListener("popstate", this.history.setHistoryPopState))
4179            }
4180        },
4181        destroy: function() {
4182            this.params.history.replaceState || a.removeEventListener("popstate", this.history.setHistoryPopState)
4183        },
4184        setHistoryPopState: function() {
4185            this.history.paths = ve.getPathValues(),
4186            this.history.scrollToSlide(this.params.speed, this.history.paths.value, !1)
4187        },
4188        getPathValues: function() {
4189            var e = a.location.pathname.slice(1).split("/").filter((function(e) {
4190                return "" !== e
4191            }
4192            ))
4193              , t = e.length;
4194            return {
4195                key: e[t - 2],
4196                value: e[t - 1]
4197            }
4198        },
4199        setHistory: function(e, t) {
4200            if (this.history.initialized && this.params.history.enabled) {
4201                var i = this.slides.eq(t)
4202                  , s = ve.slugify(i.attr("data-history"));
4203                a.location.pathname.includes(e) || (s = e + "/" + s);
4204                var r = a.history.state;
4205                r && r.value === s || (this.params.history.replaceState ? a.history.replaceState({
4206                    value: s
4207                }, null, s) : a.history.pushState({
4208                    value: s
4209                }, null, s))
4210            }
4211        },
4212        slugify: function(e) {
4213            return e.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, "")
4214        },
4215        scrollToSlide: function(e, t, i) {
4216            if (t)
4217                for (var s = 0, a = this.slides.length; s < a; s += 1) {
4218                    var r = this.slides.eq(s);
4219                    if (ve.slugify(r.attr("data-history")) === t && !r.hasClass(this.params.slideDuplicateClass)) {
4220                        var n = r.index();
4221                        this.slideTo(n, e, i)
4222                    }
4223                }
4224            else
4225                this.slideTo(0, e, i)
4226        }
4227    }
4228      , fe = {
4229        onHashCange: function() {
4230            this.emit("hashChange");
4231            var e = i.location.hash.replace("#", "");
4232            if (e !== this.slides.eq(this.activeIndex).attr("data-hash")) {
4233                var t = this.$wrapperEl.children("." + this.params.slideClass + '[data-hash="' + e + '"]').index();
4234                if (void 0 === t)
4235                    return;
4236                this.slideTo(t)
4237            }
4238        },
4239        setHash: function() {
4240            if (this.hashNavigation.initialized && this.params.hashNavigation.enabled)
4241                if (this.params.hashNavigation.replaceState && a.history && a.history.replaceState)
4242                    a.history.replaceState(null, null, "#" + this.slides.eq(this.activeIndex).attr("data-hash") || ""),
4243                    this.emit("hashSet");
4244                else {
4245                    var e = this.slides.eq(this.activeIndex)
4246                      , t = e.attr("data-hash") || e.attr("data-history");
4247                    i.location.hash = t || "",
4248                    this.emit("hashSet")
4249                }
4250        },
4251        init: function() {
4252            if (!(!this.params.hashNavigation.enabled || this.params.history && this.params.history.enabled)) {
4253                this.hashNavigation.initialized = !0;
4254                var e = i.location.hash.replace("#", "");
4255                if (e)
4256                    for (var t = 0, s = this.slides.length; t < s; t += 1) {
4257                        var r = this.slides.eq(t);
4258                        if ((r.attr("data-hash") || r.attr("data-history")) === e && !r.hasClass(this.params.slideDuplicateClass)) {
4259                            var o = r.index();
4260                            this.slideTo(o, 0, this.params.runCallbacksOnInit, !0)
4261                        }
4262                    }
4263                this.params.hashNavigation.watchState && n(a).on("hashchange", this.hashNavigation.onHashCange)
4264            }
4265        },
4266        destroy: function() {
4267            this.params.hashNavigation.watchState && n(a).off("hashchange", this.hashNavigation.onHashCange)
4268        }
4269    }
4270      , me = {
4271        run: function() {
4272            var e = this
4273              , t = e.slides.eq(e.activeIndex)
4274              , i = e.params.autoplay.delay;
4275            t.attr("data-swiper-autoplay") && (i = t.attr("data-swiper-autoplay") || e.params.autoplay.delay),
4276            clearTimeout(e.autoplay.timeout),
4277            e.autoplay.timeout = d.nextTick((function() {
4278                e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(),
4279                e.slidePrev(e.params.speed, !0, !0),
4280                e.emit("autoplay")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0),
4281                e.emit("autoplay")) : (e.slidePrev(e.params.speed, !0, !0),
4282                e.emit("autoplay")) : e.params.loop ? (e.loopFix(),
4283                e.slideNext(e.params.speed, !0, !0),
4284                e.emit("autoplay")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e.params.speed, !0, !0),
4285                e.emit("autoplay")) : (e.slideNext(e.params.speed, !0, !0),
4286                e.emit("autoplay")),
4287                e.params.cssMode && e.autoplay.running && e.autoplay.run()
4288            }
4289            ), i)
4290        },
4291        start: function() {
4292            return void 0 === this.autoplay.timeout && (!this.autoplay.running && (this.autoplay.running = !0,
4293            this.emit("autoplayStart"),
4294            this.autoplay.run(),
4295            !0))
4296        },
4297        stop: function() {
4298            return !!this.autoplay.running && (void 0 !== this.autoplay.timeout && (this.autoplay.timeout && (clearTimeout(this.autoplay.timeout),
4299            this.autoplay.timeout = void 0),
4300            this.autoplay.running = !1,
4301            this.emit("autoplayStop"),
4302            !0))
4303        },
4304        pause: function(e) {
4305            this.autoplay.running && (this.autoplay.paused || (this.autoplay.timeout && clearTimeout(this.autoplay.timeout),
4306            this.autoplay.paused = !0,
4307            0 !== e && this.params.autoplay.waitForTransition ? (this.$wrapperEl[0].addEventListener("transitionend", this.autoplay.onTransitionEnd),
4308            this.$wrapperEl[0].addEventListener("webkitTransitionEnd", this.autoplay.onTransitionEnd)) : (this.autoplay.paused = !1,
4309            this.autoplay.run())))
4310        }
4311    }
4312      , ge = {
4313        setTranslate: function() {
4314            for (var e = this.slides, t = 0; t < e.length; t += 1) {
4315                var i = this.slides.eq(t)
4316                  , s = -i[0].swiperSlideOffset;
4317                this.params.virtualTranslate || (s -= this.translate);
4318                var a = 0;
4319                this.isHorizontal() || (a = s,
4320                s = 0);
4321                var r = this.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0);
4322                i.css({
4323                    opacity: r
4324                }).transform("translate3d(" + s + "px, " + a + "px, 0px)")
4325            }
4326        },
4327        setTransition: function(e) {
4328            var t = this
4329              , i = t.slides
4330              , s = t.$wrapperEl;
4331            if (i.transition(e),
4332            t.params.virtualTranslate && 0 !== e) {
4333                var a = !1;
4334                i.transitionEnd((function() {
4335                    if (!a && t && !t.destroyed) {
4336                        a = !0,
4337                        t.animating = !1;
4338                        for (var e = ["webkitTransitionEnd", "transitionend"], i = 0; i < e.length; i += 1)
4339                            s.trigger(e[i])
4340                    }
4341                }
4342                ))
4343            }
4344        }
4345    }
4346      , be = {
4347        setTranslate: function() {
4348            var e, t = this.$el, i = this.$wrapperEl, s = this.slides, a = this.width, r = this.height, o = this.rtlTranslate, l = this.size, d = this.params.cubeEffect, h = this.isHorizontal(), p = this.virtual && this.params.virtual.enabled, c = 0;
4349            d.shadow && (h ? (0 === (e = i.find(".swiper-cube-shadow")).length && (e = n('<div class="swiper-cube-shadow"></div>'),
4350            i.append(e)),
4351            e.css({
4352                height: a + "px"
4353            })) : 0 === (e = t.find(".swiper-cube-shadow")).length && (e = n('<div class="swiper-cube-shadow"></div>'),
4354            t.append(e)));
4355            for (var u = 0; u < s.length; u += 1) {
4356                var v = s.eq(u)
4357                  , f = u;
4358                p && (f = parseInt(v.attr("data-swiper-slide-index"), 10));
4359                var m = 90 * f
4360                  , g = Math.floor(m / 360);
4361                o && (m = -m,
vendor: 7,004 bytes, lines 4362-4486
4362                g = Math.floor(-m / 360));
4363                var b = Math.max(Math.min(v[0].progress, 1), -1)
4364                  , w = 0
4365                  , y = 0
4366                  , x = 0;
4367                f % 4 == 0 ? (w = 4 * -g * l,
4368                x = 0) : (f - 1) % 4 == 0 ? (w = 0,
4369                x = 4 * -g * l) : (f - 2) % 4 == 0 ? (w = l + 4 * g * l,
4370                x = l) : (f - 3) % 4 == 0 && (w = -l,
4371                x = 3 * l + 4 * l * g),
4372                o && (w = -w),
4373                h || (y = w,
4374                w = 0);
4375                var E = "rotateX(" + (h ? 0 : -m) + "deg) rotateY(" + (h ? m : 0) + "deg) translate3d(" + w + "px, " + y + "px, " + x + "px)";
4376                if (b <= 1 && b > -1 && (c = 90 * f + 90 * b,
4377                o && (c = 90 * -f - 90 * b)),
4378                v.transform(E),
4379                d.slideShadows) {
4380                    var T = h ? v.find(".swiper-slide-shadow-left") : v.find(".swiper-slide-shadow-top")
4381                      , S = h ? v.find(".swiper-slide-shadow-right") : v.find(".swiper-slide-shadow-bottom");
4382                    0 === T.length && (T = n('<div class="swiper-slide-shadow-' + (h ? "left" : "top") + '"></div>'),
4383                    v.append(T)),
4384                    0 === S.length && (S = n('<div class="swiper-slide-shadow-' + (h ? "right" : "bottom") + '"></div>'),
4385                    v.append(S)),
4386                    T.length && (T[0].style.opacity = Math.max(-b, 0)),
4387                    S.length && (S[0].style.opacity = Math.max(b, 0))
4388                }
4389            }
4390            if (i.css({
4391                "-webkit-transform-origin": "50% 50% -" + l / 2 + "px",
4392                "-moz-transform-origin": "50% 50% -" + l / 2 + "px",
4393                "-ms-transform-origin": "50% 50% -" + l / 2 + "px",
4394                "transform-origin": "50% 50% -" + l / 2 + "px"
4395            }),
4396            d.shadow)
4397                if (h)
4398                    e.transform("translate3d(0px, " + (a / 2 + d.shadowOffset) + "px, " + -a / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + d.shadowScale + ")");
4399                else {
4400                    var C = Math.abs(c) - 90 * Math.floor(Math.abs(c) / 90)
4401                      , M = 1.5 - (Math.sin(2 * C * Math.PI / 360) / 2 + Math.cos(2 * C * Math.PI / 360) / 2)
4402                      , P = d.shadowScale
4403                      , z = d.shadowScale / M
4404                      , k = d.shadowOffset;
4405                    e.transform("scale3d(" + P + ", 1, " + z + ") translate3d(0px, " + (r / 2 + k) + "px, " + -r / 2 / z + "px) rotateX(-90deg)")
4406                }
4407            var $ = _.isSafari || _.isUiWebView ? -l / 2 : 0;
4408            i.transform("translate3d(0px,0," + $ + "px) rotateX(" + (this.isHorizontal() ? 0 : c) + "deg) rotateY(" + (this.isHorizontal() ? -c : 0) + "deg)")
4409        },
4410        setTransition: function(e) {
4411            var t = this.$el;
4412            this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),
4413            this.params.cubeEffect.shadow && !this.isHorizontal() && t.find(".swiper-cube-shadow").transition(e)
4414        }
4415    }
4416      , we = {
4417        setTranslate: function() {
4418            for (var e = this.slides, t = this.rtlTranslate, i = 0; i < e.length; i += 1) {
4419                var s = e.eq(i)
4420                  , a = s[0].progress;
4421                this.params.flipEffect.limitRotation && (a = Math.max(Math.min(s[0].progress, 1), -1));
4422                var r = -180 * a
4423                  , o = 0
4424                  , l = -s[0].swiperSlideOffset
4425                  , d = 0;
4426                if (this.isHorizontal() ? t && (r = -r) : (d = l,
4427                l = 0,
4428                o = -r,
4429                r = 0),
4430                s[0].style.zIndex = -Math.abs(Math.round(a)) + e.length,
4431                this.params.flipEffect.slideShadows) {
4432                    var h = this.isHorizontal() ? s.find(".swiper-slide-shadow-left") : s.find(".swiper-slide-shadow-top")
4433                      , p = this.isHorizontal() ? s.find(".swiper-slide-shadow-right") : s.find(".swiper-slide-shadow-bottom");
4434                    0 === h.length && (h = n('<div class="swiper-slide-shadow-' + (this.isHorizontal() ? "left" : "top") + '"></div>'),
4435                    s.append(h)),
4436                    0 === p.length && (p = n('<div class="swiper-slide-shadow-' + (this.isHorizontal() ? "right" : "bottom") + '"></div>'),
4437                    s.append(p)),
4438                    h.length && (h[0].style.opacity = Math.max(-a, 0)),
4439                    p.length && (p[0].style.opacity = Math.max(a, 0))
4440                }
4441                s.transform("translate3d(" + l + "px, " + d + "px, 0px) rotateX(" + o + "deg) rotateY(" + r + "deg)")
4442            }
4443        },
4444        setTransition: function(e) {
4445            var t = this
4446              , i = t.slides
4447              , s = t.activeIndex
4448              , a = t.$wrapperEl;
4449            if (i.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),
4450            t.params.virtualTranslate && 0 !== e) {
4451                var r = !1;
4452                i.eq(s).transitionEnd((function() {
4453                    if (!r && t && !t.destroyed) {
4454                        r = !0,
4455                        t.animating = !1;
4456                        for (var e = ["webkitTransitionEnd", "transitionend"], i = 0; i < e.length; i += 1)
4457                            a.trigger(e[i])
4458                    }
4459                }
4460                ))
4461            }
4462        }
4463    }
4464      , ye = {
4465        setTranslate: function() {
4466            for (var e = this.width, t = this.height, i = this.slides, s = this.$wrapperEl, a = this.slidesSizesGrid, r = this.params.coverflowEffect, o = this.isHorizontal(), l = this.translate, d = o ? e / 2 - l : t / 2 - l, p = o ? r.rotate : -r.rotate, c = r.depth, u = 0, v = i.length; u < v; u += 1) {
4467                var f = i.eq(u)
4468                  , m = a[u]
4469                  , g = (d - f[0].swiperSlideOffset - m / 2) / m * r.modifier
4470                  , b = o ? p * g : 0
4471                  , w = o ? 0 : p * g
4472                  , y = -c * Math.abs(g)
4473                  , x = r.stretch;
4474                "string" == typeof x && -1 !== x.indexOf("%") && (x = parseFloat(r.stretch) / 100 * m);
4475                var E = o ? 0 : x * g
4476                  , T = o ? x * g : 0;
4477                Math.abs(T) < .001 && (T = 0),
4478                Math.abs(E) < .001 && (E = 0),
4479                Math.abs(y) < .001 && (y = 0),
4480                Math.abs(b) < .001 && (b = 0),
4481                Math.abs(w) < .001 && (w = 0);
4482                var S = "translate3d(" + T + "px," + E + "px," + y + "px)  rotateX(" + w + "deg) rotateY(" + b + "deg)";
4483                if (f.transform(S),
4484                f[0].style.zIndex = 1 - Math.abs(Math.round(g)),
4485                r.slideShadows) {
4486                    var C = o ? f.find(".swiper-slide-shadow-left") : f.f
4486ind(".swiper-slide-shadow-top")
4487                      , M = o ? f.find(".swiper-slide-shadow-right") : f.find(".swiper-slide-shadow-bottom");
4488                    0 === C.length && (C = n('<div class="swiper-slide-shadow-' + (o ? "left" : "top") + '"></div>'),
4489                    f.append(C)),
4490                    0 === M.length && (M = n('<div class="swiper-slide-shadow-' + (o ? "right" : "bottom") + '"></div>'),
4491                    f.append(M)),
4492                    C.length && (C[0].style.opacity = g > 0 ? g : 0),
4493                    M.length && (M[0].style.opacity = -g > 0 ? -g : 0)
4494                }
4495            }
4496            (h.pointerEvents || h.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = d + "px 50%")
4497        },
4498        setTransition: function(e) {
4499            this.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)
4500        }
4501    }
4502      , xe = {
4503        init: function() {
4504            var e = this.params.thumbs
4505              , t = this.constructor;
4506            e.swiper instanceof t ? (this.thumbs.swiper = e.swiper,
4507            d.extend(this.thumbs.swiper.originalParams, {
4508                watchSlidesProgress: !0,
4509                slideToClickedSlide: !1
4510            }),
4511            d.extend(this.thumbs.swiper.params, {
4512                watchSlidesProgress: !0,
4513                slideToClickedSlide: !1
4514            })) : d.isObject(e.swiper) && (this.thumbs.swiper = new t(d.extend({}, e.swiper, {
4515                watchSlidesVisibility: !0,
4516                watchSlidesProgress: !0,
4517                slideToClickedSlide: !1
4518            })),
4519            this.thumbs.swiperCreated = !0),
4520            this.thumbs.swiper.$el.addClass(this.params.thumbs.thumbsContainerClass),
4521            this.thumbs.swiper.on("tap", this.thumbs.onThumbClick)
4522        },
4523        onThumbClick: function() {
4524            var e = this.thumbs.swiper;
4525            if (e) {
4526                var t = e.clickedIndex
4527                  , i = e.clickedSlide;
4528                if (!(i && n(i).hasClass(this.params.thumbs.slideThumbActiveClass) || null == t)) {
4529                    var s;
4530                    if (s = e.params.loop ? parseInt(n(e.clickedSlide).attr("data-swiper-slide-index"), 10) : t,
4531                    this.params.loop) {
4532                        var a = this.activeIndex;
4533                        this.slides.eq(a).hasClass(this.params.slideDuplicateClass) && (this.loopFix(),
4534                        this._clientLeft = this.$wrapperEl[0].clientLeft,
4535                        a = this.activeIndex);
4536                        var r = this.slides.eq(a).prevAll('[data-swiper-slide-index="' + s + '"]').eq(0).index()
4537                          , o = this.slides.eq(a).nextAll('[data-swiper-slide-index="' + s + '"]').eq(0).index();
4538                        s = void 0 === r ? o : void 0 === o ? r : o - a < a - r ? o : r
4539                    }
4540                    this.slideTo(s)
4541                }
4542            }
4543        },
4544        update: function(e) {
4545            var t = this.thumbs.swiper;
4546            if (t) {
4547                var i = "auto" === t.params.slidesPerView ? t.slidesPerViewDynamic() : t.params.slidesPerView
4548                  , s = this.params.thumbs.autoScrollOffset
4549                  , a = s && !t.params.loop;
4550                if (this.realIndex !== t.realIndex || a) {
4551                    var r, n, o = t.activeIndex;
4552                    if (t.params.loop) {
4553                        t.slides.eq(o).hasClass(t.params.slideDuplicateClass) && (t.loopFix(),
4554                        t._clientLeft = t.$wrapperEl[0].clientLeft,
4555                        o = t.activeIndex);
4556                        var l = t.slides.eq(o).prevAll('[data-swiper-slide-index="' + this.realIndex + '"]').eq(0).index()
4557                          , d = t.slides.eq(o).nextAll('[data-swiper-slide-index="' + this.realIndex + '"]').eq(0).index();
4558                        r = void 0 === l ? d : void 0 === d ? l : d - o == o - l ? o : d - o < o - l ? d : l,
4559                        n = this.activeIndex > this.previousIndex ? "next" : "prev"
4560                    } else
4561                        n = (r = this.realIndex) > this.previousIndex ? "next" : "prev";
4562                    a && (r += "next" === n ? s : -1 * s),
4563                    t.visibleSlidesIndexes && t.visibleSlidesIndexes.indexOf(r) < 0 && (t.params.centeredSlides ? r = r > o ? r - Math.floor(i / 2) + 1 : r + Math.floor(i / 2) - 1 : r > o && (r = r - i + 1),
4564                    t.slideTo(r, e ? 0 : void 0))
4565                }
4566                var h = 1
4567                  , p = this.params.thumbs.slideThumbActiveClass;
4568                if (this.params.slidesPerView > 1 && !this.params.centeredSlides && (h = this.params.slidesPerView),
4569                this.params.thumbs.multipleActiveThumbs || (h = 1),
4570                h = Math.floor(h),
4571                t.slides.removeClass(p),
4572                t.params.loop || t.params.virtual && t.params.virtual.enabled)
4573                    for (var c = 0; c < h; c += 1)
4574                        t.$wrapperEl.children('[data-swiper-slide-index="' + (this.realIndex + c) + '"]').addClass(p);
4575                else
4576                    for (var u = 0; u < h; u += 1)
4577                        t.slides.eq(this.realIndex + u).addClass(p)
4578            }
4579        }
4580    }
4581      , Ee = [K, U, Z, Q, ee, ie, ae, {
4582        name: "mousewheel",
4583        params: {
4584            mousewheel: {
4585                enabled: !1,
4586                releaseOnEdges: !1,
4587                invert: !1,
4588                forceToAxis: !1,
4589                sensitivity: 1,
4590                eventsTarged: "container"
4591            }
4592        },
4593        create: function() {
4594            d.extend(this, {
4595                mousewheel: {
4596                    enabled: !1,
4597                    enable: re.enable.bind(this),
4598                    disable: re.disable.bind(this),
4599                    handle: re.handle.bind(this),
4600                    handleMouseEnter: re.handleMouseEnter.bind(this),
4601                    handleMouseLeave: re.handleMouseLeave.bind(this),
4602                    animateSlider: re.animateSlider.bind(this),
4603                    releaseScroll: re.releaseScroll.bind(this),
4604                    lastScrollTime: d.now(),
4605                    lastEventBeforeSnap: void 0,
4606                    recentWheelEvents: []
4607                }
4608            })
4609        },
4610        on: {
4611            init: function() {
4612                !this.params.mousewheel.enabled && this.params.cssMode && this.mousewheel.disable(),
4613                this.params.mousewheel.enabled && this.mousewheel.enable()
4614            },
4615            destroy: function() {
4616                this.params.cssMode && this.mousewheel.enable(),
4617                this.mousewheel.enabled && this.mousewheel.disable()
4618            }
4619        }
4620    }, {
4621        name: "navigation",
4622        params: {
4623            navigation: {
4624                nextEl: null,
4625                prevEl: null,
4626                hideOnClick: !1,
4627                disabledClass: "swiper-button-disabled",
4628                hiddenClass: "swiper-button-hidden",
4629                lockClass: "swiper-button-lock"
4630            }
4631        },
4632        create: function() {
4633            d.extend(this, {
4634                navigation: {
4635                    init: ne.init.bind(this),
4636                    update: ne.update.bind(this),
4637                    destroy: ne.destroy.bind(this),
4638                    onNextClick: ne.onNextClick.bind(this),
4639                    onPrevClick: ne.onPrevClick.bind(this)
4640                }
4641            })
4642        },
4643        on: {
4644            init: function() {
4645                this.navigation.init(),
4646                this.navigation.update()
4647            },
4648            toEdge: function() {
4649                this.navigation.update()
4650            },
4651            fromEdge: function() {
4652                this.navigation.update()
4653            },
4654            destroy: function() {
4655                this.navigation.destroy()
4656            },
4657            click: function(e) {
4658                var t, i = this.navigation, s = i.$nextEl, a = i.$prevEl;
4659                !this.params.navigation.hideOnClick || n(e.target).is(a) || n(e.target).is(s) || (s ? t = s.hasClass(this.params.navigation.hiddenClass) : a && (t = a.hasClass(this.params.navigation.hiddenClass)),
4660                !0 === t ? this.emit("navigationShow", this) : this.emit("navigationHide", this),
4661                s && s.toggleClass(this.params.navigation.hiddenClass),
4662                a && a.toggleClass(this.params.navigation.hiddenClass))
4663            }
4664        }
4665    }, {
4666        name: "pagination",
4667        params: {
4668            pagination: {
4669                el: null,
4670                bulletElement: "span",
4671                clickable: !1,
4672                hideOnClick: !1,
4673                renderBullet: null,
4674                renderProgressbar: null,
4675                renderFraction: null,
4676                renderCustom: null,
4677                progressbarOpposite: !1,
4678                type: "bullets",
4679                dynamicBullets: !1,
4680                dynamicMainBullets: 1,
4681                formatFractionCurrent: function(e) {
4682                    return e
4683                },
4684                formatFractionTotal: function(e) {
4685                    return e
4686                },
4687                bulletClass: "swiper-pagination-bullet",
4688                bulletActiveClass: "swiper-pagination-bullet-active",
4689                modifierClass: "swiper-pagination-",
4690                currentClass: "swiper-pagination-current",
4691                totalClass: "swiper-pagination-total",
4692                hiddenClass: "swiper-pagination-hidden",
4693                progressbarFillClass: "swiper-pagination-progressbar-fill",
4694                progressbarOppositeClass: "swiper-pagination-progressbar-opposite",
4695                clickableClass: "swiper-pagination-clickable",
4696                lockClass: "swiper-pagination-lock"
4697            }
4698        },
4699        create: function() {
4700            d.extend(this, {
4701                pagination: {
4702                    init: oe.init.bind(this),
4703                    render: oe.render.bind(this),
4704                    update: oe.update.bind(this),
4705                    destroy: oe.destroy.bind(this),
4706                    dynamicBulletIndex: 0
4707                }
4708            })
4709        },
4710        on: {
4711            init: function() {
4712                this.pagination.init(),
4713                this.pagination.render(),
4714                this.pagination.update()
4715            },
4716            activeIndexChange: function() {
4717                (this.params.loop || void 0 === this.snapIndex) && this.pagination.update()
4718            },
4719            snapIndexChange: function() {
4720                this.params.loop || this.pagination.update()
4721            },
4722            slidesLengthChange: function() {
4723                this.params.loop && (this.pagination.render(),
4724                this.pagination.update())
4725            },
4726            snapGridLengthChange: function() {
4727                this.params.loop || (this.pagination.render(),
4728                this.pagination.update())
4729            },
4730            destroy: function() {
4731                this.pagination.destroy()
4732            },
4733            click: function(e) {
4734                this.params.pagination.el && this.params.pagination.hideOnClick && this.pagination.$el.length > 0 && !n(e.target).hasClass(this.params.pagination.bulletClass) && (!0 === this.pagination.$el.hasClass(this.params.pagination.hiddenClass) ? this.emit
vendor: 16,677 bytes, lines 4734-5178
4734("paginationShow", this) : this.emit("paginationHide", this),
4735                this.pagination.$el.toggleClass(this.params.pagination.hiddenClass))
4736            }
4737        }
4738    }, {
4739        name: "scrollbar",
4740        params: {
4741            scrollbar: {
4742                el: null,
4743                dragSize: "auto",
4744                hide: !1,
4745                draggable: !1,
4746                snapOnRelease: !0,
4747                lockClass: "swiper-scrollbar-lock",
4748                dragClass: "swiper-scrollbar-drag"
4749            }
4750        },
4751        create: function() {
4752            d.extend(this, {
4753                scrollbar: {
4754                    init: le.init.bind(this),
4755                    destroy: le.destroy.bind(this),
4756                    updateSize: le.updateSize.bind(this),
4757                    setTranslate: le.setTranslate.bind(this),
4758                    setTransition: le.setTransition.bind(this),
4759                    enableDraggable: le.enableDraggable.bind(this),
4760                    disableDraggable: le.disableDraggable.bind(this),
4761                    setDragPosition: le.setDragPosition.bind(this),
4762                    getPointerPosition: le.getPointerPosition.bind(this),
4763                    onDragStart: le.onDragStart.bind(this),
4764                    onDragMove: le.onDragMove.bind(this),
4765                    onDragEnd: le.onDragEnd.bind(this),
4766                    isTouched: !1,
4767                    timeout: null,
4768                    dragTimeout: null
4769                }
4770            })
4771        },
4772        on: {
4773            init: function() {
4774                this.scrollbar.init(),
4775                this.scrollbar.updateSize(),
4776                this.scrollbar.setTranslate()
4777            },
4778            update: function() {
4779                this.scrollbar.updateSize()
4780            },
4781            resize: function() {
4782                this.scrollbar.updateSize()
4783            },
4784            observerUpdate: function() {
4785                this.scrollbar.updateSize()
4786            },
4787            setTranslate: function() {
4788                this.scrollbar.setTranslate()
4789            },
4790            setTransition: function(e) {
4791                this.scrollbar.setTransition(e)
4792            },
4793            destroy: function() {
4794                this.scrollbar.destroy()
4795            }
4796        }
4797    }, {
4798        name: "parallax",
4799        params: {
4800            parallax: {
4801                enabled: !1
4802            }
4803        },
4804        create: function() {
4805            d.extend(this, {
4806                parallax: {
4807                    setTransform: de.setTransform.bind(this),
4808                    setTranslate: de.setTranslate.bind(this),
4809                    setTransition: de.setTransition.bind(this)
4810                }
4811            })
4812        },
4813        on: {
4814            beforeInit: function() {
4815                this.params.parallax.enabled && (this.params.watchSlidesProgress = !0,
4816                this.originalParams.watchSlidesProgress = !0)
4817            },
4818            init: function() {
4819                this.params.parallax.enabled && this.parallax.setTranslate()
4820            },
4821            setTranslate: function() {
4822                this.params.parallax.enabled && this.parallax.setTranslate()
4823            },
4824            setTransition: function(e) {
4825                this.params.parallax.enabled && this.parallax.setTransition(e)
4826            }
4827        }
4828    }, {
4829        name: "zoom",
4830        params: {
4831            zoom: {
4832                enabled: !1,
4833                maxRatio: 3,
4834                minRatio: 1,
4835                toggle: !0,
4836                containerClass: "swiper-zoom-container",
4837                zoomedSlideClass: "swiper-slide-zoomed"
4838            }
4839        },
4840        create: function() {
4841            var e = this
4842              , t = {
4843                enabled: !1,
4844                scale: 1,
4845                currentScale: 1,
4846                isScaling: !1,
4847                gesture: {
4848                    $slideEl: void 0,
4849                    slideWidth: void 0,
4850                    slideHeight: void 0,
4851                    $imageEl: void 0,
4852                    $imageWrapEl: void 0,
4853                    maxRatio: 3
4854                },
4855                image: {
4856                    isTouched: void 0,
4857                    isMoved: void 0,
4858                    currentX: void 0,
4859                    currentY: void 0,
4860                    minX: void 0,
4861                    minY: void 0,
4862                    maxX: void 0,
4863                    maxY: void 0,
4864                    width: void 0,
4865                    height: void 0,
4866                    startX: void 0,
4867                    startY: void 0,
4868                    touchesStart: {},
4869                    touchesCurrent: {}
4870                },
4871                velocity: {
4872                    x: void 0,
4873                    y: void 0,
4874                    prevPositionX: void 0,
4875                    prevPositionY: void 0,
4876                    prevTime: void 0
4877                }
4878            };
4879            "onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out".split(" ").forEach((function(i) {
4880                t[i] = he[i].bind(e)
4881            }
4882            )),
4883            d.extend(e, {
4884                zoom: t
4885            });
4886            var i = 1;
4887            Object.defineProperty(e.zoom, "scale", {
4888                get: function() {
4889                    return i
4890                },
4891                set: function(t) {
4892                    if (i !== t) {
4893                        var s = e.zoom.gesture.$imageEl ? e.zoom.gesture.$imageEl[0] : void 0
4894                          , a = e.zoom.gesture.$slideEl ? e.zoom.gesture.$slideEl[0] : void 0;
4895                        e.emit("zoomChange", t, s, a)
4896                    }
4897                    i = t
4898                }
4899            })
4900        },
4901        on: {
4902            init: function() {
4903                this.params.zoom.enabled && this.zoom.enable()
4904            },
4905            destroy: function() {
4906                this.zoom.disable()
4907            },
4908            touchStart: function(e) {
4909                this.zoom.enabled && this.zoom.onTouchStart(e)
4910            },
4911            touchEnd: function(e) {
4912                this.zoom.enabled && this.zoom.onTouchEnd(e)
4913            },
4914            doubleTap: function(e) {
4915                this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this.zoom.toggle(e)
4916            },
4917            transitionEnd: function() {
4918                this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd()
4919            },
4920            slideChange: function() {
4921                this.zoom.enabled && this.params.zoom.enabled && this.params.cssMode && this.zoom.onTransitionEnd()
4922            }
4923        }
4924    }, {
4925        name: "lazy",
4926        params: {
4927            lazy: {
4928                enabled: !1,
4929                loadPrevNext: !1,
4930                loadPrevNextAmount: 1,
4931                loadOnTransitionStart: !1,
4932                elementClass: "swiper-lazy",
4933                loadingClass: "swiper-lazy-loading",
4934                loadedClass: "swiper-lazy-loaded",
4935                preloaderClass: "swiper-lazy-preloader"
4936            }
4937        },
4938        create: function() {
4939            d.extend(this, {
4940                lazy: {
4941                    initialImageLoaded: !1,
4942                    load: pe.load.bind(this),
4943                    loadInSlide: pe.loadInSlide.bind(this)
4944                }
4945            })
4946        },
4947        on: {
4948            beforeInit: function() {
4949                this.params.lazy.enabled && this.params.preloadImages && (this.params.preloadImages = !1)
4950            },
4951            init: function() {
4952                this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load()
4953            },
4954            scroll: function() {
4955                this.params.freeMode && !this.params.freeModeSticky && this.lazy.load()
4956            },
4957            resize: function() {
4958                this.params.lazy.enabled && this.lazy.load()
4959            },
4960            scrollbarDragMove: function() {
4961                this.params.lazy.enabled && this.lazy.load()
4962            },
4963            transitionStart: function() {
4964                this.params.lazy.enabled && (this.params.lazy.loadOnTransitionStart || !this.params.lazy.loadOnTransitionStart && !this.lazy.initialImageLoaded) && this.lazy.load()
4965            },
4966            transitionEnd: function() {
4967                this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy.load()
4968            },
4969            slideChange: function() {
4970                this.params.lazy.enabled && this.params.cssMode && this.lazy.load()
4971            }
4972        }
4973    }, {
4974        name: "controller",
4975        params: {
4976            controller: {
4977                control: void 0,
4978                inverse: !1,
4979                by: "slide"
4980            }
4981        },
4982        create: function() {
4983            d.extend(this, {
4984                controller: {
4985                    control: this.params.controller.control,
4986                    getInterpolateFunction: ce.getInterpolateFunction.bind(this),
4987                    setTranslate: ce.setTranslate.bind(this),
4988                    setTransition: ce.setTransition.bind(this)
4989                }
4990            })
4991        },
4992        on: {
4993            update: function() {
4994                this.controller.control && this.controller.spline && (this.controller.spline = void 0,
4995                delete this.controller.spline)
4996            },
4997            resize: function() {
4998                this.controller.control && this.controller.spline && (this.controller.spline = void 0,
4999                delete this.controller.spline)
5000            },
5001            observerUpdate: function() {
5002                this.controller.control && this.controller.spline && (this.controller.spline = void 0,
5003                delete this.controller.spline)
5004            },
5005            setTranslate: function(e, t) {
5006                this.controller.control && this.controller.setTranslate(e, t)
5007            },
5008            setTransition: function(e, t) {
5009                this.controller.control && this.controller.setTransition(e, t)
5010            }
5011        }
5012    }, {
5013        name: "a11y",
5014        params: {
5015            a11y: {
5016                enabled: !0,
5017                notificationClass: "swiper-notification",
5018                prevSlideMessage: "Previous slide",
5019                nextSlideMessage: "Next slide",
5020                firstSlideMessage: "This is the first slide",
5021                lastSlideMessage: "This is the last slide",
5022                paginationBulletMessage: "Go to slide {{index}}"
5023            }
5024        },
5025        create: function() {
5026            var e = this;
5027            d.extend(e, {
5028                a11y: {
5029                    liveRegion: n('<span class="' + e.params.a11y.notificationClass + '" aria-live="assertive" aria-atomic="true"></span>')
5030                }
5031            }),
5032            Object.keys(ue).forEach((function(t) {
5033                e.a11y[t] = ue[t].bind(e)
5034            }
5035            ))
5036        },
5037        on: {
5038            init: function() {
5039                this.params.a11y.enabled && (this.a11y.init(),
5040                this.a11y.updateNavigation())
5041            },
5042            toEdge: function() {
5043                this.params.a11y.enabled && this.a11y.updateNavigation()
5044            },
5045            fromEdge: function() {
5046                this.params.a11y.enabled && this.a11y.updateNavigation()
5047            },
5048            paginationUpdate: function() {
5049                this.params.a11y.enabled && this.a11y.updatePagination()
5050            },
5051            destroy: function() {
5052                this.params.a11y.enabled && this.a11y.destroy()
5053            }
5054        }
5055    }, {
5056        name: "history",
5057        params: {
5058            history: {
5059                enabled: !1,
5060                replaceState: !1,
5061                key: "slides"
5062            }
5063        },
5064        create: function() {
5065            d.extend(this, {
5066                history: {
5067                    init: ve.init.bind(this),
5068                    setHistory: ve.setHistory.bind(this),
5069                    setHistoryPopState: ve.setHistoryPopState.bind(this),
5070                    scrollToSlide: ve.scrollToSlide.bind(this),
5071                    destroy: ve.destroy.bind(this)
5072                }
5073            })
5074        },
5075        on: {
5076            init: function() {
5077                this.params.history.enabled && this.history.init()
5078            },
5079            destroy: function() {
5080                this.params.history.enabled && this.history.destroy()
5081            },
5082            transitionEnd: function() {
5083                this.history.initialized && this.history.setHistory(this.params.history.key, this.activeIndex)
5084            },
5085            slideChange: function() {
5086                this.history.initialized && this.params.cssMode && this.history.setHistory(this.params.history.key, this.activeIndex)
5087            }
5088        }
5089    }, {
5090        name: "hash-navigation",
5091        params: {
5092            hashNavigation: {
5093                enabled: !1,
5094                replaceState: !1,
5095                watchState: !1
5096            }
5097        },
5098        create: function() {
5099            d.extend(this, {
5100                hashNavigation: {
5101                    initialized: !1,
5102                    init: fe.init.bind(this),
5103                    destroy: fe.destroy.bind(this),
5104                    setHash: fe.setHash.bind(this),
5105                    onHashCange: fe.onHashCange.bind(this)
5106                }
5107            })
5108        },
5109        on: {
5110            init: function() {
5111                this.params.hashNavigation.enabled && this.hashNavigation.init()
5112            },
5113            destroy: function() {
5114                this.params.hashNavigation.enabled && this.hashNavigation.destroy()
5115            },
5116            transitionEnd: function() {
5117                this.hashNavigation.initialized && this.hashNavigation.setHash()
5118            },
5119            slideChange: function() {
5120                this.hashNavigation.initialized && this.params.cssMode && this.hashNavigation.setHash()
5121            }
5122        }
5123    }, {
5124        name: "autoplay",
5125        params: {
5126            autoplay: {
5127                enabled: !1,
5128                delay: 3e3,
5129                waitForTransition: !0,
5130                disableOnInteraction: !0,
5131                stopOnLastSlide: !1,
5132                reverseDirection: !1
5133            }
5134        },
5135        create: function() {
5136            var e = this;
5137            d.extend(e, {
5138                autoplay: {
5139                    running: !1,
5140                    paused: !1,
5141                    run: me.run.bind(e),
5142                    start: me.start.bind(e),
5143                    stop: me.stop.bind(e),
5144                    pause: me.pause.bind(e),
5145                    onVisibilityChange: function() {
5146                        "hidden" === document.visibilityState && e.autoplay.running && e.autoplay.pause(),
5147                        "visible" === document.visibilityState && e.autoplay.paused && (e.autoplay.run(),
5148                        e.autoplay.paused = !1)
5149                    },
5150                    onTransitionEnd: function(t) {
5151                        e && !e.destroyed && e.$wrapperEl && t.target === this && (e.$wrapperEl[0].removeEventListener("transitionend", e.autoplay.onTransitionEnd),
5152                        e.$wrapperEl[0].removeEventListener("webkitTransitionEnd", e.autoplay.onTransitionEnd),
5153                        e.autoplay.paused = !1,
5154                        e.autoplay.running ? e.autoplay.run() : e.autoplay.stop())
5155                    }
5156                }
5157            })
5158        },
5159        on: {
5160            init: function() {
5161                this.params.autoplay.enabled && (this.autoplay.start(),
5162                document.addEventListener("visibilitychange", this.autoplay.onVisibilityChange))
5163            },
5164            beforeTransitionStart: function(e, t) {
5165                this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this.autoplay.pause(e) : this.autoplay.stop())
5166            },
5167            sliderFirstMove: function() {
5168                this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay.stop() : this.autoplay.pause())
5169            },
5170            touchEnd: function() {
5171                this.params.cssMode && this.autoplay.paused && !this.params.autoplay.disableOnInteraction && this.autoplay.run()
5172            },
5173            destroy: function() {
5174                this.autoplay.running && this.autoplay.stop(),
5175                document.removeEventListener("visibilitychange", this.autoplay.onVisibilityChange)
5176            }
5177        }
5178    }, {
5179        name: "effect-fade",
5180        params: {
5181            fadeEffect: {
5182                crossFade: !1
5183            }
5184        },
5185        create: function() {
5186            d.extend(this, {
5187                fadeEffect: {
5188                    setTranslate: ge.setTranslate.bind(this),
5189                    setTransition: ge.setTransition.bind(this)
5190                }
5191            })
5192        },
5193        on: {
5194            beforeInit: function() {
5195                if ("fade" === this.params.effect) {
5196                    this.classNames.push(this.params.containerModifierClass + "fade");
5197                    var e = {
5198                        slidesPerView: 1,
5199                        slidesPerColumn: 1,
5200                        slidesPerGroup: 1,
5201                        watchSlidesProgress: !0,
5202                        spaceBetween: 0,
5203                        virtualTranslate: !0
5204                    };
5205                    d.extend(this.params, e),
5206                    d.extend(this.originalParams, e)
5207                }
5208            },
5209            setTranslate: function() {
5210                "fade" === this.params.effect && this.fadeEffect.setTranslate()
5211            },
5212            setTransition: function(e) {
5213                "fade" === this.params.effect && this.fadeEffect.setTransition(e)
5214            }
5215        }
5216    }, {
5217        name: "effect-cube",
5218        params: {
5219            cubeEffect: {
5220                slideShadows: !0,
5221                shadow: !0,
5222                shadowOffset: 20,
5223                shadowScale: .94
5224            }
5225        },
5226        create: function() {
5227            d.extend(this, {
5228                cubeEffect: {
5229                    setTranslate: be.setTranslate.bind(this),
5230                    setTransition: be.setTransition.bind(this)
5231                }
5232            })
5233        },
5234        on: {
5235            beforeInit: function() {
5236                if ("cube" === this.params.effect) {
5237                    this.classNames.push(this.params.containerModifierClass + "cube"),
5238                    this.classNames.push(this.params.containerModifierClass + "3d");
5239                    var e = {
5240                        slidesPerView: 1,
5241                        slidesPerColumn: 1,
5242                        slidesPerGroup: 1,
5243                        watchSlidesProgress: !0,
5244                        resistanceRatio: 0,
5245                        spaceBetween: 0,
5246                        centeredSlides: !1,
5247                        virtualTranslate: !0
5248                    };
5249                    d.extend(this.params, e),
5250                    d.extend(this.originalParams, e)
5251                }
5252            },
5253            setTranslate: function() {
5254                "cube" === this.params.effect && this.cubeEffect.setTranslate()
5255            },
5256            setTransition: function(e) {
5257                "cube" === this.params.effect && this.cubeEffect.setTransition(e)
5258            }
5259        }
5260    }, {
5261        name: "effect-flip",
5262        params: {
5263            flipEffect: {
5264                slideShadows: !0,
5265                limitRotation: !0
5266            }
5267        },
5268        create: function() {
5269            d.extend(this, {
5270                flipEffect: {
5271                    setTranslate: we.setTranslate.bind(this),
5272                    setTransition: we.setTransition.bind(this)
5273                }
5274            })
5275        },
5276        on: {
5277            beforeInit: function() {
5278                if ("flip" === this.params.effect) {
5279                    this.classNames.push(this.params.containerModifierClass + "flip"),
5280                    this.classNames.push(this.params.containerModifierClass + "3d");
5281                    var e = {
5282                        slidesPerView: 1,
5283                        slidesPerColumn: 1,
5284                        slidesPerGroup: 1,
5285                        watchSlidesProgress: !0,
5286                        spaceBetween: 0,
5287                        virtualTranslate: !0
5288                    };
5289                    d.extend(this.params, e),
5290                    d.extend(this.originalParams, e)
5291                }
5292            },
5293            setTranslate: function() {
5294                "flip" === this.params.effect && this.flipEffect.setTranslate()
5295            },
5296            setTransition: function(e) {
5297                "flip" === this.params.effect && this.flipEffect.setTransition(e)
5298            }
5299        }
5300    }, {
vendor: 3,000 bytes, lines 5301-5388
5301        name: "effect-coverflow",
5302        params: {
5303            coverflowEffect: {
5304                rotate: 50,
5305                stretch: 0,
5306                depth: 100,
5307                modifier: 1,
5308                slideShadows: !0
5309            }
5310        },
5311        create: function() {
5312            d.extend(this, {
5313                coverflowEffect: {
5314                    setTranslate: ye.setTranslate.bind(this),
5315                    setTransition: ye.setTransition.bind(this)
5316                }
5317            })
5318        },
5319        on: {
5320            beforeInit: function() {
5321                "coverflow" === this.params.effect && (this.classNames.push(this.params.containerModifierClass + "coverflow"),
5322                this.classNames.push(this.params.containerModifierClass + "3d"),
5323                this.params.watchSlidesProgress = !0,
5324                this.originalParams.watchSlidesProgress = !0)
5325            },
5326            setTranslate: function() {
5327                "coverflow" === this.params.effect && this.coverflowEffect.setTranslate()
5328            },
5329            setTransition: function(e) {
5330                "coverflow" === this.params.effect && this.coverflowEffect.setTransition(e)
5331            }
5332        }
5333    }, {
5334        name: "thumbs",
5335        params: {
5336            thumbs: {
5337                swiper: null,
5338                multipleActiveThumbs: !0,
5339                autoScrollOffset: 0,
5340                slideThumbActiveClass: "swiper-slide-thumb-active",
5341                thumbsContainerClass: "swiper-container-thumbs"
5342            }
5343        },
5344        create: function() {
5345            d.extend(this, {
5346                thumbs: {
5347                    swiper: null,
5348                    init: xe.init.bind(this),
5349                    update: xe.update.bind(this),
5350                    onThumbClick: xe.onThumbClick.bind(this)
5351                }
5352            })
5353        },
5354        on: {
5355            beforeInit: function() {
5356                var e = this.params.thumbs;
5357                e && e.swiper && (this.thumbs.init(),
5358                this.thumbs.update(!0))
5359            },
5360            slideChange: function() {
5361                this.thumbs.swiper && this.thumbs.update()
5362            },
5363            update: function() {
5364                this.thumbs.swiper && this.thumbs.update()
5365            },
5366            resize: function() {
5367                this.thumbs.swiper && this.thumbs.update()
5368            },
5369            observerUpdate: function() {
5370                this.thumbs.swiper && this.thumbs.update()
5371            },
5372            setTransition: function(e) {
5373                var t = this.thumbs.swiper;
5374                t && t.setTransition(e)
5375            },
5376            beforeDestroy: function() {
5377                var e = this.thumbs.swiper;
5378                e && this.thumbs.swiperCreated && e && e.destroy()
5379            }
5380        }
5381    }];
5382    return void 0 === j.use && (j.use = j.Class.use,
5383    j.installModule = j.Class.installModule),
5384    j.use(Ee),
5385    j
5386}
5387));
5388//--# sourceMappingURL=swiper.min.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.