! function(e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.AOS = t() : e.AOS = t() }(this, function() { return n = [function(e, t, o) { "use strict"; function n(e) { return e && e.__esModule ? e : { default: e } } function i() { p = (0, m.default)(), y() } var a = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var o, n = arguments[t]; for (o in n) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]) } return e }, r = (n(o(1)), o(6)), c = n(r), u = n(o(7)), s = n(o(8)), d = n(o(9)), f = n(o(10)), l = n(o(11)), m = n(o(14)), p = [], b = !1, v = { offset: 120, delay: 0, easing: "ease", duration: 400, disable: !1, once: !1, startEvent: "DOMContentLoaded", throttleDelay: 99, debounceDelay: 50, disableMutationObserver: !1 }, y = function() { if (b = 0 < arguments.length && void 0 !== arguments[0] && arguments[0] ? !0 : b) return p = (0, l.default)(p, v), (0, f.default)(p, v.once), p }; e.exports = { init: function(e) { v = a(v, e), p = (0, m.default)(); var t, e = document.all && !window.atob; return !0 === (t = v.disable) || "mobile" === t && d.default.mobile() || "phone" === t && d.default.phone() || "tablet" === t && d.default.tablet() || "function" == typeof t && !0 === t() || e ? void p.forEach(function(e, t) { e.node.removeAttribute("data-aos"), e.node.removeAttribute( "data-aos-easing"), e.node.removeAttribute("data-aos-duration"), e.node.removeAttribute("data-aos-delay") }) : (document.querySelector("body").setAttribute("data-aos-easing", v.easing), document.querySelector("body").setAttribute("data-aos-duration", v .duration), document.querySelector("body").setAttribute("data-aos-delay", v .delay), "DOMContentLoaded" === v.startEvent && -1 < ["complete", "interactive" ].indexOf(document.readyState) ? y(!0) : ("load" === v.startEvent ? window : document).addEventListener(v.startEvent, function() { y(!0) }), window.addEventListener("resize", (0, u.default)(y, v.debounceDelay, ! 0)), window.addEventListener("orientationchange", (0, u.default)(y, v .debounceDelay, !0)), window.addEventListener("scroll", (0, c.default)( function() { (0, f.default)(p, v.once) }, v.throttleDelay)), v.disableMutationObserver || (0, s.default)( "[data-aos]", i), p) }, refresh: y, refreshHard: i } }, function(e, t) {}, , , , , function(m, e) { ! function(e) { "use strict"; function a(n, o, e) { function i(e) { var t = u, o = s; return u = s = void 0, p = e, f = n.apply(o, t) } function a(e) { var t = e - m; return void 0 === m || o <= t || t < 0 || v && d <= e - p } function r() { var e, t = j(); return a(t) ? c(t) : void(l = setTimeout(r, (e = o - ((t = t) - m), v ? x(e, d - (t - p)) : e))) } function c(e) { return l = void 0, y && u ? i(e) : (u = s = void 0, f) } function t() { var e = j(), t = a(e); if (u = arguments, s = this, m = e, t) { if (void 0 === l) return p = e = m, l = setTimeout(r, o), b ? i(e) : f; if (v) return l = setTimeout(r, o), i(m) } return void 0 === l && (l = setTimeout(r, o)), f } var u, s, d, f, l, m, p = 0, b = !1, v = !1, y = !0; if ("function" != typeof n) throw new TypeError(w); return o = h(o) || 0, g(e) && (b = !!e.leading, v = "maxWait" in e, d = v ? k(h(e .maxWait) || 0, o) : d, y = "trailing" in e ? !!e.trailing : y), t.cancel = function() { void 0 !== l && clearTimeout(l), u = m = s = l = void(p = 0) }, t.flush = function() { return void 0 === l ? f : c(j()) }, t } function g(e) { var t = void 0 === e ? "undefined" : n(e); return e && ("object" == t || "function" == t) } function o(e) { return "symbol" == (void 0 === e ? "undefined" : n(e)) || !!(t = e) && "object" == ( void 0 === t ? "undefined" : n(t)) && "[object Symbol]" == l.call(e); var t } function h(e) { if ("number" == typeof e) return e; if (o(e)) return i; if ("string" != typeof(e = g(e) ? g(t = "function" == typeof e.valueOf ? e.valueOf() : e) ? t + "" : t : e)) return 0 === e ? e : +e; e = e.replace(r, ""); var t = u.test(e); return t || s.test(e) ? d(e.slice(2), t ? 2 : 8) : c.test(e) ? i : +e } var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol .prototype ? "symbol" : typeof e }, w = "Expected a function", i = NaN, r = /^\s+|\s+$/g, c = /^[-+]0x[0-9a-f]+$/i, u = /^0b[01]+$/i, s = /^0o[0-7]+$/i, d = parseInt, e = "object" == (void 0 === e ? "undefined" : n(e)) && e && e.Object === Object && e, t = "object" == ("undefined" == typeof self ? "undefined" : n(self)) && self && self .Object === Object && self, f = e || t || Function("return this")(), l = Object.prototype.toString, k = Math.max, x = Math.min, j = function() { return f.Date.now() }; m.exports = function(e, t, o) { var n = !0, i = !0; if ("function" != typeof e) throw new TypeError(w); return g(o) && (n = "leading" in o ? !!o.leading : n, i = "trailing" in o ? !!o .trailing : i), a(e, t, { leading: n, maxWait: t, trailing: i }) } }.call(e, function() { return this }()) }, function(m, e) { ! function(e) { "use strict"; function g(e) { var t = void 0 === e ? "undefined" : n(e); return e && ("object" == t || "function" == t) } function o(e) { return "symbol" == (void 0 === e ? "undefined" : n(e)) || !!(t = e) && "object" == ( void 0 === t ? "undefined" : n(t)) && l.call(e) == a; var t } function h(e) { if ("number" == typeof e) return e; if (o(e)) return i; if ("string" != typeof(e = g(e) ? g(t = "function" == typeof e.valueOf ? e.valueOf() : e) ? t + "" : t : e)) return 0 === e ? e : +e; e = e.replace(r, ""); var t = u.test(e); return t || s.test(e) ? d(e.slice(2), t ? 2 : 8) : c.test(e) ? i : +e } function w() { return f.Date.now() } var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol .prototype ? "symbol" : typeof e }, i = NaN, a = "[object Symbol]", r = /^\s+|\s+$/g, c = /^[-+]0x[0-9a-f]+$/i, u = /^0b[01]+$/i, s = /^0o[0-7]+$/i, d = parseInt, e = "object" == (void 0 === e ? "undefined" : n(e)) && e && e.Object === Object && e, t = "object" == ("undefined" == typeof self ? "undefined" : n(self)) && self && self .Object === Object && self, f = e || t || Function("return this")(), l = Object.prototype.toString, k = Math.max, x = Math.min; m.exports = function(n, o, e) { function i(e) { var t = u, o = s; return u = s = void 0, p = e, f = n.apply(o, t) } function a(e) { var t = e - m; return void 0 === m || o <= t || t < 0 || v && d <= e - p } function r() { var e, t = w(); return a(t) ? c(t) : void(l = setTimeout(r, (e = o - ((t = t) - m), v ? x(e, d - ( t - p)) : e))) } function c(e) { return l = void 0, y && u ? i(e) : (u = s = void 0, f) } function t() { var e = w(), t = a(e); if (u = arguments, s = this, m = e, t) { if (void 0 === l) return p = e = m, l = setTimeout(r, o), b ? i(e) : f; if (v) return l = setTimeout(r, o), i(m) } return void 0 === l && (l = setTimeout(r, o)), f } var u, s, d, f, l, m, p = 0, b = !1, v = !1, y = !0; if ("function" != typeof n) throw new TypeError("Expected a function"); return o = h(o) || 0, g(e) && (b = !!e.leading, v = "maxWait" in e, d = v ? k(h(e .maxWait) || 0, o) : d, y = "trailing" in e ? !!e.trailing : y), t.cancel = function() { void 0 !== l && clearTimeout(l), u = m = s = l = void(p = 0) }, t.flush = function() { return void 0 === l ? f : c(w()) }, t } }.call(e, function() { return this }()) }, function(e, t) { "use strict"; function i(e) { e && e.forEach(function(e) { var t = Array.prototype.slice.call(e.addedNodes), e = Array.prototype.slice.call(e.removedNodes); t.concat(e).filter(function(e) { return e.hasAttribute && e.hasAttribute("data-aos") }).length && a() }) } Object.defineProperty(t, "__esModule", { value: !0 }); var a = function() {}; t.default = function(e, t) { var o = window.document, n = new(window.MutationObserver || window.WebKitMutationObserver || window .MozMutationObserver)(i); a = t, n.observe(o.documentElement, { childList: !0, subtree: !0, removedNodes: !0 }) } }, function(e, t) { "use strict"; function o() { return navigator.userAgent || navigator.vendor || window.opera || "" } Object.defineProperty(t, "__esModule", { value: !0 }); var n = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, i = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, a = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i, r = /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i, c = (function(e, t, o) { return t && s(e.prototype, t), o && s(e, o), e }(u, [{ key: "phone", value: function() { var e = o(); return !(!n.test(e) && !i.test(e.substr(0, 4))) } }, { key: "mobile", value: function() { var e = o(); return !(!a.test(e) && !r.test(e.substr(0, 4))) } }, { key: "tablet", value: function() { return this.mobile() && !this.phone() } }]), u); function u() { if (!(this instanceof u)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { for (var o = 0; o < t.length; o++) { var n = t[o]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } } t.default = new c }, function(e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); t.default = function(e, a) { var r = window.pageYOffset, c = window.innerHeight; e.forEach(function(e, t) { var o, n, i; o = c + r, n = a, i = (e = e).node.getAttribute("data-aos-once"), o > e .position ? e.node.classList.add("aos-animate") : void 0 === i || "false" !== i && (n || "true" === i) || e.node.classList.remove( "aos-animate") }) } }, function(e, t, o) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var o = o(12), n = (o = o) && o.__esModule ? o : { default: o }; t.default = function(e, o) { return e.forEach(function(e, t) { e.node.classList.add("aos-init"), e.position = (0, n.default)(e.node, o.offset) }), e } }, function(e, t, o) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); var o = o(13), r = (o = o) && o.__esModule ? o : { default: o }; t.default = function(e, t) { var o = 0, n = 0, i = window.innerHeight, a = { offset: e.getAttribute("data-aos-offset"), anchor: e.getAttribute("data-aos-anchor"), anchorPlacement: e.getAttribute("data-aos-anchor-placement") }; switch (a.offset && !isNaN(a.offset) && (n = parseInt(a.offset)), a.anchor && document .querySelectorAll(a.anchor) && (e = document.querySelectorAll(a.anchor)[0]), o = (0, r .default)(e).top, a.anchorPlacement) { case "top-bottom": break; case "center-bottom": o += e.offsetHeight / 2; break; case "bottom-bottom": o += e.offsetHeight; break; case "top-center": o += i / 2; break; case "bottom-center": o += i / 2 + e.offsetHeight; break; case "center-center": o += i / 2 + e.offsetHeight / 2; break; case "top-top": o += i; break; case "bottom-top": o += e.offsetHeight + i; break; case "center-top": o += e.offsetHeight / 2 + i } return o + (n = a.anchorPlacement || a.offset || isNaN(t) ? n : t) } }, function(e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); t.default = function(e) { for (var t = 0, o = 0; e && !isNaN(e.offsetLeft) && !isNaN(e.offsetTop);) t += e .offsetLeft - ("BODY" != e.tagName ? e.scrollLeft : 0), o += e.offsetTop - ("BODY" != e .tagName ? e.scrollTop : 0), e = e.offsetParent; return { top: o, left: t } } }, function(e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); t.default = function(e) { return e = e || document.querySelectorAll("[data-aos]"), Array.prototype.map.call(e, function(e) { return { node: e } }) } }], i = {}, o.m = n, o.c = i, o.p = "dist/", o(0); function o(e) { var t; return (i[e] || (t = i[e] = { exports: {}, id: e, loaded: !1 }, n[e].call(t.exports, t, t.exports, o), t.loaded = !0, t)).exports } var n, i }); ! function() { "use strict"; function e(t) { if (!t) throw new Error("No options passed to Waypoint constructor"); if (!t.element) throw new Error("No element option passed to Waypoint constructor"); if (!t.handler) throw new Error("No handler option passed to Waypoint constructor"); this.key = "waypoint-" + i, this.options = e.Adapter.extend({}, e.defaults, t), this.element = this.options .element, this.adapter = new e.Adapter(this.element), this.callback = t.handler, this.axis = this.options .horizontal ? "horizontal" : "vertical", this.enabled = this.options.enabled, this.triggerPoint = null, this .group = e.Group.findOrCreate({ name: this.options.group, axis: this.axis }), this.context = e.Context.findOrCreateByElement(this.options.context), e.offsetAliases[this.options .offset] && (this.options.offset = e.offsetAliases[this.options.offset]), this.group.add(this), this .context.add(this), r[this.key] = this, i += 1 } var i = 0, r = {}; e.prototype.queueTrigger = function(t) { this.group.queueTrigger(this, t) }, e.prototype.trigger = function(t) { this.enabled && this.callback && this.callback.apply(this, t) }, e.prototype.destroy = function() { this.context.remove(this), this.group.remove(this), delete r[this.key] }, e.prototype.disable = function() { return this.enabled = !1, this }, e.prototype.enable = function() { return this.context.refresh(), this.enabled = !0, this }, e.prototype.next = function() { return this.group.next(this) }, e.prototype.previous = function() { return this.group.previous(this) }, e.invokeAll = function(t) { var e, i = []; for (e in r) i.push(r[e]); for (var o = 0, n = i.length; o < n; o++) i[o][t]() }, e.destroyAll = function() { e.invokeAll("destroy") }, e.disableAll = function() { e.invokeAll("disable") }, e.enableAll = function() { e.invokeAll("enable") }, e.refreshAll = function() { e.Context.refreshAll() }, e.viewportHeight = function() { return window.innerHeight || document.documentElement.clientHeight }, e.viewportWidth = function() { return document.documentElement.clientWidth }, e.adapters = [], e.defaults = { context: window, continuous: !0, enabled: !0, group: "default", horizontal: !1, offset: 0 }, e.offsetAliases = { "bottom-in-view": function() { return this.context.innerHeight() - this.adapter.outerHeight() }, "right-in-view": function() { return this.context.innerWidth() - this.adapter.outerWidth() } }, window.Waypoint = e }(), function() { "use strict"; function e(t) { window.setTimeout(t, 1e3 / 60) } function i(t) { this.element = t, this.Adapter = d.Adapter, this.adapter = new this.Adapter(t), this.key = "waypoint-context-" + o, this.didScroll = !1, this.didResize = !1, this.oldScroll = { x: this.adapter.scrollLeft(), y: this.adapter.scrollTop() }, this.waypoints = { vertical: {}, horizontal: {} }, t.waypointContextKey = this.key, n[t.waypointContextKey] = this, o += 1, this .createThrottledScrollHandler(), this.createThrottledResizeHandler() } var o = 0, n = {}, d = window.Waypoint, t = window.onload; i.prototype.add = function(t) { var e = t.options.horizontal ? "horizontal" : "vertical"; this.waypoints[e][t.key] = t, this.refresh() }, i.prototype.checkEmpty = function() { var t = this.Adapter.isEmptyObject(this.waypoints.horizontal), e = this.Adapter.isEmptyObject(this.waypoints.vertical); t && e && (this.adapter.off(".waypoints"), delete n[this.key]) }, i.prototype.createThrottledResizeHandler = function() { function t() { e.handleResize(), e.didResize = !1 } var e = this; this.adapter.on("resize.waypoints", function() { e.didResize || (e.didResize = !0, d.requestAnimationFrame(t)) }) }, i.prototype.createThrottledScrollHandler = function() { function t() { e.handleScroll(), e.didScroll = !1 } var e = this; this.adapter.on("scroll.waypoints", function() { e.didScroll && !d.isTouch || (e.didScroll = !0, d.requestAnimationFrame(t)) }) }, i.prototype.handleResize = function() { d.Context.refreshAll() }, i.prototype.handleScroll = function() { var t, e, i = {}, o = { horizontal: { newScroll: this.adapter.scrollLeft(), oldScroll: this.oldScroll.x, forward: "right", backward: "left" }, vertical: { newScroll: this.adapter.scrollTop(), oldScroll: this.oldScroll.y, forward: "down", backward: "up" } }; for (t in o) { var n, r = o[t], s = r.newScroll > r.oldScroll ? r.forward : r.backward; for (n in this.waypoints[t]) { var a = this.waypoints[t][n], l = r.oldScroll < a.triggerPoint, h = r.newScroll >= a.triggerPoint; (l && h || !l && !h) && (a.queueTrigger(s), i[a.group.id] = a.group) } } for (e in i) i[e].flushTriggers(); this.oldScroll = { x: o.horizontal.newScroll, y: o.vertical.newScroll } }, i.prototype.innerHeight = function() { return this.element == this.element.window ? d.viewportHeight() : this.adapter.innerHeight() }, i.prototype.remove = function(t) { delete this.waypoints[t.axis][t.key], this.checkEmpty() }, i.prototype.innerWidth = function() { return this.element == this.element.window ? d.viewportWidth() : this.adapter.innerWidth() }, i.prototype.destroy = function() { var t, e = []; for (t in this.waypoints) for (var i in this.waypoints[t]) e.push(this.waypoints[t][i]); for (var o = 0, n = e.length; o < n; o++) e[o].destroy() }, i.prototype.refresh = function() { var t, e, i = this.element == this.element.window, o = i ? void 0 : this.adapter.offset(), n = {}; for (e in this.handleScroll(), t = { horizontal: { contextOffset: i ? 0 : o.left, contextScroll: i ? 0 : this.oldScroll.x, contextDimension: this.innerWidth(), oldScroll: this.oldScroll.x, forward: "right", backward: "left", offsetProp: "left" }, vertical: { contextOffset: i ? 0 : o.top, contextScroll: i ? 0 : this.oldScroll.y, contextDimension: this.innerHeight(), oldScroll: this.oldScroll.y, forward: "down", backward: "up", offsetProp: "top" } }) { var r, s = t[e]; for (r in this.waypoints[e]) { var a, l = this.waypoints[e][r], h = l.options.offset, p = l.triggerPoint, c = 0, u = null == p; l.element !== l.element.window && (c = l.adapter.offset()[s.offsetProp]), "function" == typeof h ? h = h.apply(l) : "string" == typeof h && (h = parseFloat(h), -1 < l.options.offset.indexOf( "%")) && (h = Math.ceil(s.contextDimension * h / 100)), a = s.contextScroll - s.contextOffset, l .triggerPoint = c + a - h, c = p < s.oldScroll, a = l.triggerPoint >= s.oldScroll, h = !c && !a, !u && (c && a) ? (l.queueTrigger(s.backward), n[l.group.id] = l.group) : (!u && h || u && s .oldScroll >= l.triggerPoint) && (l.queueTrigger(s.forward), n[l.group.id] = l.group) } } return d.requestAnimationFrame(function() { for (var t in n) n[t].flushTriggers() }), this }, i.findOrCreateByElement = function(t) { return i.findByElement(t) || new i(t) }, i.refreshAll = function() { for (var t in n) n[t].refresh() }, i.findByElement = function(t) { return n[t.waypointContextKey] }, window.onload = function() { t && t(), i.refreshAll() }, d.requestAnimationFrame = function(t) { (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || e) .call(window, t) }, d.Context = i }(), function() { "use strict"; function r(t, e) { return t.triggerPoint - e.triggerPoint } function s(t, e) { return e.triggerPoint - t.triggerPoint } function e(t) { this.name = t.name, this.axis = t.axis, this.id = this.name + "-" + this.axis, this.waypoints = [], this .clearTriggerQueues(), i[this.axis][this.name] = this } var i = { vertical: {}, horizontal: {} }, o = window.Waypoint; e.prototype.add = function(t) { this.waypoints.push(t) }, e.prototype.clearTriggerQueues = function() { this.triggerQueues = { up: [], down: [], left: [], right: [] } }, e.prototype.flushTriggers = function() { for (var t in this.triggerQueues) { var e = this.triggerQueues[t]; e.sort("up" === t || "left" === t ? s : r); for (var i = 0, o = e.length; i < o; i += 1) { var n = e[i]; !n.options.continuous && i !== e.length - 1 || n.trigger([t]) } } this.clearTriggerQueues() }, e.prototype.next = function(t) { this.waypoints.sort(r); t = o.Adapter.inArray(t, this.waypoints); return t === this.waypoints.length - 1 ? null : this.waypoints[t + 1] }, e.prototype.previous = function(t) { this.waypoints.sort(r); t = o.Adapter.inArray(t, this.waypoints); return t ? this.waypoints[t - 1] : null }, e.prototype.queueTrigger = function(t, e) { this.triggerQueues[e].push(t) }, e.prototype.remove = function(t) { t = o.Adapter.inArray(t, this.waypoints); - 1 < t && this.waypoints.splice(t, 1) }, e.prototype.first = function() { return this.waypoints[0] }, e.prototype.last = function() { return this.waypoints[this.waypoints.length - 1] }, e.findOrCreate = function(t) { return i[t.axis][t.name] || new e(t) }, o.Group = e }(), function() { "use strict"; function i(t) { this.$element = o(t) } var o = window.jQuery, t = window.Waypoint; o.each(["innerHeight", "innerWidth", "off", "offset", "on", "outerHeight", "outerWidth", "scrollLeft", "scrollTop"], function(t, e) { i.prototype[e] = function() { var t = Array.prototype.slice.call(arguments); return this.$element[e].apply(this.$element, t) } }), o.each(["extend", "inArray", "isEmptyObject"], function(t, e) { i[e] = o[e] }), t.adapters.push({ name: "jquery", Adapter: i }), t.Adapter = i }(), function() { "use strict"; function t(o) { return function() { var e = [], i = arguments[0]; return o.isFunction(arguments[0]) && ((i = o.extend({}, arguments[1])).handler = arguments[0]), this .each(function() { var t = o.extend({}, i, { element: this }); "string" == typeof t.context && (t.context = o(this).closest(t.context)[0]), e.push(new n( t)) }), e } } var n = window.Waypoint; window.jQuery && (window.jQuery.fn.waypoint = t(window.jQuery)), window.Zepto && (window.Zepto.fn.waypoint = t( window.Zepto)) }(); var __assign = this && this.__assign || function() { return (__assign = Object.assign || function(t) { for (var i, n = 1, a = arguments.length; n < a; n++) for (var s in i = arguments[n]) Object.prototype.hasOwnProperty.call(i, s) && (t[s] = i[s]); return t }).apply(this, arguments) }, CountUp = function() { function t(t, i, n) { var r = this; this.endVal = i, this.options = n, this.version = "2.1.0", this.defaults = { startVal: 0, decimalPlaces: 0, duration: 2, useEasing: !0, useGrouping: !0, smartEasingThreshold: 999, smartEasingAmount: 333, separator: ",", decimal: ".", prefix: "", suffix: "", enableScrollSpy: !1, scrollSpyDelay: 200 }, this.finalEndVal = null, this.useEasing = !0, this.countDown = !1, this.error = "", this.startVal = 0, this.paused = !0, this.count = function(t) { r.startTime || (r.startTime = t); t -= r.startTime; r.remaining = r.duration - t, r.useEasing ? r.countDown ? r.frameVal = r.startVal - r.easingFn(t, 0, r.startVal - r.endVal, r.duration) : r.frameVal = r.easingFn(t, r.startVal, r.endVal - r .startVal, r.duration) : r.countDown ? r.frameVal = r.startVal - (r.startVal - r.endVal) * ( t / r.duration) : r.frameVal = r.startVal + (r.endVal - r.startVal) * (t / r.duration), r .countDown ? r.frameVal = r.frameVal < r.endVal ? r.endVal : r.frameVal : r.frameVal = r .frameVal > r.endVal ? r.endVal : r.frameVal, r.frameVal = Number(r.frameVal.toFixed(r.options .decimalPlaces)), r.printValue(r.frameVal), t < r.duration ? r.rAF = requestAnimationFrame(r .count) : null !== r.finalEndVal ? r.update(r.finalEndVal) : r.callback && r.callback() }, this.formatNumber = function(t) { var i = t < 0 ? "-" : "", t = Math.abs(t).toFixed(r.options.decimalPlaces), t = (t += "").split("."), n = t[0], t = 1 < t.length ? r.options.decimal + t[1] : ""; if (r.options.useGrouping) { for (var a = "", s = 0, e = n.length; s < e; ++s) 0 !== s && s % 3 == 0 && (a = r.options .separator + a), a = n[e - s - 1] + a; n = a } return r.options.numerals && r.options.numerals.length && (n = n.replace(/[0-9]/g, function(t) { return r.options.numerals[+t] }), t = t.replace(/[0-9]/g, function(t) { return r.options.numerals[+t] })), i + r.options.prefix + n + t + r.options.suffix }, this.easeOutExpo = function(t, i, n, a) { return n * (1 - Math.pow(2, -10 * t / a)) * 1024 / 1023 + i }, this.options = __assign(__assign({}, this.defaults), n), this.formattingFn = this.options .formattingFn || this.formatNumber, this.easingFn = this.options.easingFn || this.easeOutExpo, this .startVal = this.validateValue(this.options.startVal), this.frameVal = this.startVal, this.endVal = this .validateValue(i), this.options.decimalPlaces = Math.max(this.options.decimalPlaces), this .resetDuration(), this.options.separator = String(this.options.separator), this.useEasing = this.options .useEasing, "" === this.options.separator && (this.options.useGrouping = !1), this.el = "string" == typeof t ? document.getElementById(t) : t, this.el ? this.printValue(this.startVal) : this.error = "[CountUp] target is null or undefined", void 0 !== window && this.options.enableScrollSpy && (this .error ? console.error(this.error, t) : (window.onScrollFns = window.onScrollFns || [], window .onScrollFns.push(function() { return r.handleScroll(r) }), window.onscroll = function() { window.onScrollFns.forEach(function(t) { return t() }) }, this.handleScroll(this))) } return t.prototype.handleScroll = function(t) { var i, n; t && window && (i = window.innerHeight + window.scrollY, (n = t.el.offsetTop + t.el.offsetHeight) < i && n > window.scrollY && t.paused ? (t.paused = !1, setTimeout(function() { return t.start() }, t.options.scrollSpyDelay)) : window.scrollY > n && !t.paused && t.reset()) }, t.prototype.determineDirectionAndSmartEasing = function() { var t = this.finalEndVal || this.endVal, i = (this.countDown = this.startVal > t, t - this.startVal); Math.abs(i) > this.options.smartEasingThreshold ? (this.finalEndVal = t, i = this.countDown ? 1 : -1, this.endVal = t + i * this.options.smartEasingAmount, this.duration = this.duration / 2) : (this .endVal = t, this.finalEndVal = null), this.finalEndVal ? this.useEasing = !1 : this.useEasing = this.options.useEasing }, t.prototype.start = function(t) { this.error || (this.callback = t, 0 < this.duration ? (this.determineDirectionAndSmartEasing(), this .paused = !1, this.rAF = requestAnimationFrame(this.count)) : this.printValue(this.endVal)) }, t.prototype.pauseResume = function() { this.paused ? (this.startTime = null, this.duration = this.remaining, this.startVal = this.frameVal, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count)) : cancelAnimationFrame(this.rAF), this.paused = !this.paused }, t.prototype.reset = function() { cancelAnimationFrame(this.rAF), this.paused = !0, this.resetDuration(), this.startVal = this .validateValue(this.options.startVal), this.frameVal = this.startVal, this.printValue(this.startVal) }, t.prototype.update = function(t) { cancelAnimationFrame(this.rAF), this.startTime = null, this.endVal = this.validateValue(t), this .endVal !== this.frameVal && (this.startVal = this.frameVal, this.finalEndVal || this .resetDuration(), this.finalEndVal = null, this.determineDirectionAndSmartEasing(), this.rAF = requestAnimationFrame(this.count)) }, t.prototype.printValue = function(t) { t = this.formattingFn(t); "INPUT" === this.el.tagName ? this.el.value = t : "text" === this.el.tagName || "tspan" === this.el .tagName ? this.el.textContent = t : this.el.innerHTML = t }, t.prototype.ensureNumber = function(t) { return "number" == typeof t && !isNaN(t) }, t.prototype.validateValue = function(t) { var i = Number(t); return this.ensureNumber(i) ? i : (this.error = "[CountUp] invalid start or end value: " + t, null) }, t.prototype.resetDuration = function() { this.startTime = null, this.duration = 1e3 * Number(this.options.duration), this.remaining = this .duration }, t }(); ! function(a) { a.fn.countup = function(t) { if ("function" == typeof CountUp) { var n = { startVal: 0, decimalPlaces: 0, duration: 2 }; if ("number" == typeof t) n.endVal = t; else { if ("object" != typeof t) return void console.error( "countUp-jquery requires its argument to be either an object or number"); a.extend(n, t) } return this.each(function(t, i) { a(this).waypoint(function() { new CountUp(i, n.endVal, n).start() }, { offset: "100%", triggerOnce: !0 }) }), this } console.error("countUp.js is a required dependency of countUp-jquery.js.") } }(jQuery); ! function(e) { "object" == typeof module && module.exports ? module.exports = e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery) }(function(g, c) { "use strict"; function r(e, t) { function i() { s.$el = g(e), s.$el.length ? s._init(s.$el[0], t) : _(e) && (n[e] = t) } var s = this; return s instanceof r ? void(r.pending ? g(window).on("validatorready", i) : i()) : new r(e, t) } function o(e, t) { if (y(e)) { var i, s = t ? !0 === t ? this : t : o.prototype; for (i in e) p(i) && (s[i] = d(e[i])) } } function u(e, t) { if (y(e)) { var i, s = t ? !0 === t ? this : t : u.prototype; for (i in e) s[i] = e[i] } } function d(e) { switch (g.type(e)) { case "function": return e; case "array": var t = function() { return e[0].test(this.value) || e[1] || !1 }; return t.msg = e[1], t; case "regexp": return function() { return e.test(this.value) } } } function a(e) { var t, i, s; if (e && e.tagName) { switch (e.tagName) { case "INPUT": case "SELECT": case "TEXTAREA": case "BUTTON": case "FIELDSET": t = e.form || g(e).closest("." + $); break; case "FORM": t = e; break; default: t = g(e).closest("." + $) } for (i in n) if (g(t).is(i)) { s = n[i]; break } return g(t).data(w) || g(t)[w](s).data(w) } } function f(e, t, i) { var s = t.msg, t = t._r; return y(s) && (s = s[t]), s = _(s) ? s : b(e, R + "-" + t) || b(e, R) || (i ? _(i) ? i : i[t] : "") } function m(e) { return "INPUT" === e.tagName && "checkbox" === e.type || "radio" === e.type } function h(e) { return Date.parse(e.replace(/\.|\-/g, "/")) } function p(e) { return /^\w+$/.test(e) } function v(e) { var t = "#" === e.charAt(0); return e = e.replace(/([:.{(|)}\/\[\]])/g, "\\$1"), t ? e : '[name="' + e + '"]:first' } function _(e) { return "string" == typeof e } function y(e) { return e && "[object Object]" === Object.prototype.toString.call(e) } function b(e, t, i) { return e && e.tagName ? i === c ? e.getAttribute(t) : void(null === i ? e.removeAttribute(t) : e .setAttribute(t, "" + i)) : null } var t, w = "validator", k = "." + w, x = ".field", $ = "nice-" + w, M = "msg-box", C = "aria-invalid", V = "data-rule", R = "data-msg", l = "data-tip", O = "data-timely", D = "data-target", F = "novalidate", E = ":verifiable", s = /(&)?(!)?\b(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?\s*(;|\|)?/g, I = /(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?/, H = /(?:([^:;\(\[]*):)?(.*)/, L = /[^\x00-\xff]/g, B = /top|right|bottom|left/, z = /(?:(cors|jsonp):)?(?:(post|get):)?(.+)/i, P = /[<>'"`\\]|&#x?\d+[A-F]?;?|%3[A-F]/gim, Q = g.noop, A = g.proxy, j = g.trim, q = g.isFunction, U = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1), n = {}, S = { debug: 0, theme: "default", ignore: "", focusInvalid: !0, focusCleanup: !1, stopOnError: !1, beforeSubmit: null, valid: null, invalid: null, validation: null, formClass: "n-default", validClass: "n-valid", invalidClass: "n-invalid", bindClassTo: null }, T = { timely: 1, display: null, target: null, ignoreBlank: !1, showOk: !0, dataFilter: function(e) { if (_(e) || y(e) && ("error" in e || "ok" in e)) return e }, msgMaker: function(i) { var s = '' + i.arrow; return i.result ? g.each(i.result, function(e, t) { s += '' + i.icon + '' + t.msg + "" }) : s += i.icon + '' + i.msg + "", s += "" }, msgWrapper: "span", msgArrow: "", msgIcon: '', msgClass: "n-right", msgStyle: "", msgShow: null, msgHide: null }, N = {}; g.fn.validator = function(t) { var e = this, i = arguments; return e.is(E) ? e : ((e = (e = e.is("form") ? e : this.find("form")).length ? e : this).each( function() { var e = g(this).data(w); e ? _(t) ? "_" !== t.charAt(0) && e[t].apply(e, [].slice.call(i, 1)) : t && (e._reset(! 0), e._init(this, t)) : new r(this, t) }), this) }, g.fn.isValid = function(t, e) { var i, s = a(this[0]), n = q(t); return !s || (s.checkOnly = !!(e = n || e !== c ? e : t), i = s.options, e = s._multiValidate(this.is( E) ? this : this.find(E), function(e) { e || !i.focusInvalid || s.checkOnly || s.$el.find("[" + C + "]:first").focus(), n && (t .length ? t(e) : e && t()), s.checkOnly = !1 }), n ? this : e) }, g.extend(g.expr.pseudos || g.expr[":"], { verifiable: function(e) { var t = e.nodeName.toLowerCase(); return ("input" === t && !{ submit: 1, button: 1, reset: 1, image: 1 } [e.type] || "select" === t || "textarea" === t || "true" === e.contentEditable) && !e .disabled }, filled: function(e) { return !!j(g(e).val()) } }), r.prototype = { _init: function(e, t) { var i, s, n, a = this; function l() { var e, t = this.options; for (e in t) e in T && (this[e] = t[e]); g.extend(this, { _valHook: function() { return "true" === this.element.contentEditable ? "text" : "val" }, getValue: function() { var e = this.element; return "number" === e.type && e.validity && e.validity.badInput ? "NaN" : g(e)[this._valHook()]() }, setValue: function(e) { g(this.element)[this._valHook()](this.value = e) }, getRangeMsg: function(e, t, i) { function s(e, t) { return o ? t < e : t <= e } var n, a, l, r, o, u, d, c, f; if (t) return l = (a = this).messages[a._r] || "", r = t[0].split("~"), o = "false" === t[1], t = r[0], u = r[1], d = "rg", c = [""], f = j(e) && +e == +e, 2 === r.length ? t && u ? (f && s(e, + t) && s(+u, e) && (n = !0), c = c.concat(r), d = o ? "gtlt" : "rg") : t && !u ? (f && s(e, +t) && (n = !0), c .push(t), d = o ? "gt" : "gte") : !t && u && (f && s(+u, e) && (n = !0), c.push(u), d = o ? "lt" : "lte") : (e === + t && (n = !0), c.push(t), d = "eq"), l && (i && l[d + i] && (d += i), c[0] = l[d]), n || a._rules && (a._rules[a._i] .msg = a.renderMsg.apply(null, c)) }, renderMsg: function() { var e = arguments, t = e[0], i = e.length; if (t) { for (; --i;) t = t.replace("{" + i + "}", e[i]); return t } } }) } function r(e, t, i) { this.key = e, this.validator = n, g.extend(this, i, t) } q(t) && (t = { valid: t }), t = a._opt = t || {}, s = b(e, "data-" + w + "-option"), s = a._dataOpt = s && "{" === s .charAt(0) ? new Function("return " + s)() : {}, i = a._themeOpt = N[t.theme || s.theme || S .theme], i = a.options = g.extend({}, S, T, i, a.options, t, s), a.rules = new o(i .rules, !0), a.messages = new u(i.messages, !0), a.Field = (n = a, l.prototype = n, r .prototype = new l, r), a.elements = a.elements || {}, a.deferred = {}, a.errors = {}, a .fields = {}, a._initFields(i.fields), a.$el.data(w) || (a.$el.data(w, a).addClass($ + " " + i.formClass).on("form-submit-validate", function(e, t, i, s, n) { a.vetoed = n.veto = !a.isValid, a.ajaxFormOptions = s }).on("submit" + k + " validate" + k, A(a, "_submit")).on("reset" + k, A(a, "_reset")) .on("showmsg" + k, A(a, "_showmsg")).on("hidemsg" + k, A(a, "_hidemsg")).on("focusin" + k + " click" + k, E, A(a, "_focusin")).on("focusout" + k + " validate" + k, E, A(a, "_focusout")).on("keyup" + k + " input" + k + " compositionstart compositionend", E, A(a, "_focusout")).on("click" + k, ":radio,:checkbox", "click", A(a, "_focusout")) .on("change" + k, 'select,input[type="file"]', "change", A(a, "_focusout")), a ._NOVALIDATE = b(e, F), b(e, F, F)), _(i.target) && a.$el.find(i.target).addClass( "msg-container") }, _guessAjax: function(e) { function t(e, t, i) { return !!(e && e[t] && g.map(e[t], function(e) { return ~e.namespace.indexOf(i) ? 1 : null }).length) }(this.isAjaxSubmit = !!this.options.valid) || (e = (g._data || g.data)(e, "events"), this .isAjaxSubmit = t(e, "valid", "form") || t(e, "submit", "form-plugin")) }, _initFields: function(e) { function t(e, t) { var i; null === t || l ? ((i = a.elements[e]) && a._resetElement(i, !0), delete a.fields[e]) : a .fields[e] = new a.Field(e, _(t) ? { rule: t } : t, a.fields[e]) } var i, s, n, a = this, l = null === e; if (l && (e = a.fields), y(e)) for (i in e) if (~i.indexOf(",")) for (s = i.split(","), n = s.length; n--;) t(j(s[n]), e[i]); else t(i, e[i]); a.$el.find(E).each(function() { a._parse(this) }) }, _parse: function(e) { var t, i = this, s = e.name, n = b(e, V); return n && b(e, V, null), s = (s = e.id && ("#" + e.id in i.fields || !s || null !== n && (t = i.fields[s]) && n !== t.rule && e.id !== t.key) ? "#" + e.id : s) || "#" + (e.id = "N" + String(Math.random()).slice(-12)), (t = i.getField(s, !0)).rule = n || t.rule, (n = b(e, "data-display")) && (t.display = n), t.rule && (null === b(e, "data-must") && ! /\b(?:match|checked)\b/.test(t.rule) || (t.must = !0), /\brequired\b/.test(t.rule) && (t .required = !0), (n = b(e, O)) ? t.timely = +n : 3 < t.timely && b(e, O, t.timely), i._parseRule(t), t.old = {}), _(t.target) && b(e, D, t.target), _(t.tip) && b(e, l, t .tip), i.fields[s] = t }, _parseRule: function(t) { var e = H.exec(t.rule); e && (t._i = 0, e[1] && (t.display = e[1]), e[2]) && (t._rules = [], e[2].replace(s, function() { var e = arguments; e[4] = e[4] || e[5], t._rules.push({ and: "&" === e[1], not: "!" === e[2], or: "|" === e[6], method: e[3], params: e[4] ? g.map(e[4].split(", "), j) : c }) })) }, _multiValidate: function(e, t) { var i = this, s = i.options; return i.hasError = !1, (e = s.ignore ? e.not(s.ignore) : e).each(function() { if (i._validate(this), i.hasError && s.stopOnError) return !1 }), t && (i.validating = !0, g.when.apply(null, g.map(i.deferred, function(e) { return e })).done(function() { t.call(i, !i.hasError), i.validating = !1 })), g.isEmptyObject(i.deferred) ? !i.hasError : c }, _submit: function(e) { var s = this, n = s.options, a = e.target, l = "submit" === e.type && "FORM" === a.tagName && !e.isDefaultPrevented(); e.preventDefault(), (t ? ~(t = !1) : s.submiting) || "validate" === e.type && s.$el[0] !== a || q(n.beforeSubmit) && !1 === n.beforeSubmit.call(s, a) || (s.isAjaxSubmit === c && s ._guessAjax(a), s._debug("log", "\n<<< event: " + e.type), s._reset(), s.submiting = !0, s._multiValidate(s.$el.find(E), function(e) { var t, i = e || 2 === n.debug ? "valid" : "invalid"; e || (n.focusInvalid && s.$el.find("[" + C + "]:first").focus(), t = g.map(s .errors, function(e) { return e })), s.submiting = !1, s.isValid = e, q(n[i]) && n[i].call(s, a, t), s .$el.trigger(i + ".form", [a, t]), s._debug("log", ">>> " + i), e && (s .vetoed ? g(a).ajaxSubmit(s.ajaxFormOptions) : l && !s.isAjaxSubmit && document.createElement("form").submit.call(a)) })) }, _reset: function(e) { var t = this; t.errors = {}, e && (t.reseting = !0, t.$el.find(E).each(function() { t._resetElement(this) }), delete t.reseting) }, _resetElement: function(e, t) { this._setClass(e, null), this.hideMsg(e) }, _focusin: function(e) { var t = this, i = t.options, s = e.target; t.validating || "click" === e.type && document.activeElement === s || (i.focusCleanup && "true" === b(s, C) && (t._setClass(s, null), t.hideMsg(s)), (i = b(s, l)) ? t.showMsg( s, { type: "tip", msg: i }) : (b(s, V) && t._parse(s), !(i = b(s, O)) || 8 !== i && 9 !== i || t._focusout(e))) }, _focusout: function(e) { var t, i, s, n, a, l = this, r = l.options, o = e.target, u = e.type, d = "focusin" === u, c = "validate" === u, f = 0; if ("compositionstart" === u && (l.pauseValidate = !0), "compositionend" === u && (l .pauseValidate = !1), !l.pauseValidate && (t = o.name && m(o) ? l.$el.find( 'input[name="' + o.name + '"]').get(0) : o, i = l.getField(t)) && i.rule) { if (t = i._e, i._e = u, a = i.timely, !c) { if (!a || m(o) && "click" !== u) return; if (s = i.getValue(), i.ignoreBlank && !s && !d) return void l.hideMsg(o); if ("focusout" === u) { if ("change" === t) return; if (2 === a || 8 === a) { if (n = i.old, !s || !n) return; i.isValid && !n.showOk ? l.hideMsg(o) : l._makeMsg(o, i, n) } } else { if (a < 2 && !e.data) return; if ((n = +new Date) - (o._ts || 0) < 100) return; if (o._ts = n, "keyup" === u) { if ("input" === t) return; if (9 === (n = e.keyCode) && !s) return; if (n < 48 && !{ 8: 1, 9: 1, 16: 1, 32: 1, 46: 1 } [n]) return } d || (f = a < 100 ? "click" === u || "SELECT" === o.tagName ? 0 : 400 : a) } } r.ignore && g(o).is(r.ignore) || (clearTimeout(i._t), f ? i._t = setTimeout(function() { l._validate(o, i) }, f) : (c && (i.old = {}), l._validate(o, i))) } }, _setClass: function(e, t) { var e = g(e), i = this.options; (e = i.bindClassTo ? e.closest(i.bindClassTo) : e).removeClass(i.invalidClass + " " + i .validClass), null !== t && e.addClass(t ? i.validClass : i.invalidClass) }, _showmsg: function(e, t, i) { var s = this, e = e.target; s.$el.is(e) ? y(t) ? s.showMsg(t) : "tip" === t && s.$el.find(E + "[" + l + "]", e).each( function() { s.showMsg(this, { type: t, msg: i }) }) : s.showMsg(e, { type: t, msg: i }) }, _hidemsg: function(e) { e = g(e.target); e.is(E) && this.hideMsg(e) }, _validatedField: function(e, t, i) { var s = this, n = s.options, a = t.isValid = i.isValid = !!i.isValid, l = a ? "valid" : "invalid"; i.key = t.key, i.ruleName = t._r, i.id = e.id, i.value = t.value, s.elements[t.key] = i .element = e, s.isValid = s.$el[0].isValid = a && s.isFormValid(), a ? i.type = "ok" : (s .submiting && (s.errors[t.key] = i.msg), s.hasError = !0), t.old = i, q(t[l]) && t[l] .call(s, e, i), q(n.validation) && n.validation.call(s, e, i), g(e).attr(C, !a || null) .trigger(l + x, [i, s]), s.$el.triggerHandler("validation", [i, s]), s.checkOnly || (s ._setClass(e, i.skip || "tip" === i.type ? null : a), s._makeMsg.apply(s, arguments)) }, _makeMsg: function(e, t, i) { t.msgMaker && (i = g.extend({}, i), "focusin" === t._e && (i.type = "tip"), this[i.showOk || i .msg || "tip" === i.type ? "showMsg" : "hideMsg"](e, i, t)) }, _validatedRule: function(i, s, e, t) { s = s || r.getField(i), t = t || {}; var n, a, l, r = this, o = s._r, u = s.timely, u = 9 === u || 8 === u, d = !1; if (null === e) r._validatedField(i, s, { isValid: !0, skip: !0 }), s._i = 0; else { if (e === c ? a = !0 : !0 === e || "" === e ? d = !0 : _(e) ? n = e : y(e) ? e.error ? n = e .error : (n = e.ok, d = !0) : d = !!e, (e = s._rules[s._i]).not && (n = c, d = "required" === o || !d), e.or) if (d) for (; s._i < s._rules.length && s._rules[s._i].or;) s._i++; else a = !0; else !e.and || s.isValid || (a = !0); a ? d = !0 : (d && !1 !== s.showOk && (n = null === (l = b(i, "data-ok")) ? _(s.ok) ? s.ok : n : l, !_(n) && _(s.showOk) && (n = s.showOk), _(n)) && (t.showOk = d), d && ! u || (n = (f(i, s, n || e.msg || r.messages[o]) || r.messages.fallback).replace( /\{0\|?([^\}]*)\}/, function(e, t) { return r._getDisplay(i, s.display) || t || r.messages[0] })), d || (s.isValid = d), t.msg = n, g(i).trigger((d ? "valid" : "invalid") + ".rule", [o, n])), !u || a && !e.and || (d || s._m || (s._m = n), s._v = s._v || [], s._v.push({ type: d ? a ? "tip" : "ok" : "error", msg: n || e.msg })), r._debug("log", " " + s._i + ": " + o + " => " + (d || n)), (d || u) && s ._i < s._rules.length - 1 ? (s._i++, r._checkRule(i, s)) : (s._i = 0, u ? (t.isValid = s .isValid, t.result = s._v, t.msg = s._m || "", s.value || "focusin" !== s._e || (t.type = "tip")) : t.isValid = d, r._validatedField(i, s, t), delete s._m, delete s._v) } }, _checkRule: function(n, a) { var e, t, l = this, i = a.key, r = a._rules[a._i], s = r.method, o = r.params; l.submiting && l.deferred[i] || (t = a.old, a._r = s, t && !a.must && !r.must && r.result !== c && t.ruleName === s && t.id === n.id && a.value && t.value === a.value ? e = r .result : (e = (t = function(e, t) { if (e = (e = j(b(e, V + "-" + t))) && new Function("return " + e)()) return d(e) }(n, s) || l.rules[s] || Q).call(a, n, o, a), t.msg && (r.msg = t.msg)), y(e) && q(e .then) ? (l.deferred[i] = e, a.isValid = c, l.checkOnly || l.showMsg(n, { type: "loading", msg: l.messages.loading }, a), e.then(function(e, t, i) { var i = j(i.responseText), s = a.dataFilter; /jsonp?/.test(this.dataType) ? i = e : "{" === i.charAt(0) && (i = g .parseJSON(i)), (e = s.call(this, i, a)) === c && (e = s.call(this, i.data, a)), r.data = this.data, r.result = a.old ? e : c, l ._validatedRule(n, a, e) }, function(e, t) { l._validatedRule(n, a, l.messages[t] || t) }).always(function() { delete l.deferred[i] })) : l._validatedRule(n, a, e)) }, _validate: function(e, t) { var i = this; if (!e.disabled && null === b(e, F) && (t = t || i.getField(e)) && (t._rules || i._parse(e), t ._rules)) return i._debug("info", t.key), t.isValid = !0, t.element = e, t.value = t .getValue(), t.required || t.must || t.value || m(e) ? (i._checkRule(e, t), t.isValid) : (i._validatedField(e, t, { isValid: !0 }), !0) }, _debug: function(e, t) { window.console && this.options.debug && console[e](t) }, test: function(e, t) { var i, s, t = I.exec(t); return t && (s = t[1]) in this.rules && (t = (t = t[2] || t[3]) ? t.split(", ") : c, (i = this .getField(e, !0))._r = s, i.value = i.getValue(), i = this.rules[s].call(i, e, t)), ! 0 === i || i === c || null === i }, _getDisplay: function(e, t) { return _(t) ? t : q(t) ? t.call(this, e) : "" }, _getMsgOpt: function(e, t) { var i, s, t = t || this.options; return g.extend({ type: "error", pos: (i = t.msgClass, (s = i ? B.exec(i) : s) && s[0]), target: t.target, wrapper: t.msgWrapper, style: t.msgStyle, cls: t.msgClass, arrow: t.msgArrow, icon: t.msgIcon }, _(e) ? { msg: e } : e) }, _getMsgDOM: function(e, t) { var i, s, n, a, l = g(e); return l.is(E) ? ((a = t.target || b(e, D)) && (a = q(a) ? a.call(this, e) : "#" === a.charAt( 0) ? g(a) : this.$el.find(a)).length && (a.is(E) ? e = (l = a).get(0) : a.hasClass( M) ? i = a : n = a), i || (s = m(e) && e.name || !e.id ? e.name : e.id, i = (n || this.$el).find(t.wrapper + "." + M + '[for="' + s + '"]'))) : i = l, t.hide || i .length || (i = g("<" + t.wrapper + ">").attr({ class: M + (t.cls ? " " + t.cls : ""), style: t.style || c, for: s }), n ? i.appendTo(n) : m(e) ? (a = l.parent(), i.appendTo(a.is("label") ? a.parent() : a)) : i[t.pos && "right" !== t.pos ? "insertBefore" : "insertAfter"](l)), i }, showMsg: function(e, t, i) { var s, n, a, l; e && (l = (a = this).options, !y(e) || e.jquery || t ? (s = ((i = g(e).is(E) ? i || a.getField( e) : i) || l).msgMaker) && (t = a._getMsgOpt(t, i), e = (e.name && m(e) ? a.$el .find('input[name="' + e.name + '"]') : g(e)).get(0), t.msg || "error" === t .type || null !== (n = b(e, "data-" + t.type)) && (t.msg = n), _(t.msg)) && (n = a ._getMsgDOM(e, t), B.test(n[0].className) || n.addClass(t.cls), 6 === U && "bottom" === t.pos && (n[0].style.marginTop = g(e).outerHeight() + "px"), n.html(s .call(a, t))[0].style.display = "", q(s = i && i.msgShow || l.msgShow)) && s .call(a, n, t.type) : g.each(e, function(e, t) { e = a.elements[e] || a.$el.find(v(e))[0]; a.showMsg(e, t) })) }, hideMsg: function(e, t, i) { var s = this, n = s.options; e = g(e).get(0), g(e).is(E) && (i = i || s.getField(e)) && (i.isValid || s.reseting) && b(e, C, null), (t = s._getMsgOpt(t, i)).hide = !0, (e = s._getMsgDOM(e, t)).length && (q(i = i && i.msgHide || n.msgHide) ? i.call(s, e, t.type) : (e[0].style.display = "none", e[0].innerHTML = "")) }, getField: function(e, t) { var i, s; if (_(e)) i = e, e = c; else { if (b(e, V)) return this._parse(e); i = e.id && "#" + e.id in this.fields || !e.name ? "#" + e.id : e.name } return ((s = this.fields[i]) || t && (s = new this.Field(i))) && (s.element = e), s }, setField: function(e, t) { var i = {}; e && (_(e) ? i[e] = t : i = e, this._initFields(i)) }, isFormValid: function() { var e, t, i = this.fields; for (e in i) if (t = i[e], t._rules && (t.required || t.must || t.value) && !t.isValid) return !1; return !0 }, holdSubmit: function(e) { this.submiting = e === c || e }, cleanUp: function() { this._reset(1) }, destroy: function() { this._reset(1), this.$el.off(k).removeData(w), b(this.$el[0], F, this._NOVALIDATE) } }, g(window).on("beforeunload", function() { this.focus() }), g(document).on("click", ":submit", function() { var e; this.form && ((e = this.getAttributeNode("formnovalidate")) && null !== e.nodeValue || null !== b( this, F)) && (t = !0) }).on("focusin submit validate", "form,." + $, function(e) { var t, i; null === b(this, F) && !(i = g(this)).data(w) && (t = a(this)) && (g.isEmptyObject(t.fields) ? (b( this, F, F), i.off(k).removeData(w)) : "focusin" === e.type ? t._focusin(e) : t._submit( e)) }), new u({ fallback: "This field is not valid.", loading: "Validating..." }), new o({ required: function(e, t) { var i, s, n, a = this, l = j(a.value), r = !0; if (t) if (1 === t.length) { if (p(t[0])) { if (a.rules[t[0]]) { if (!l && !a.test(e, t[0])) return null; a._r = "required" } } else if (!l && !g(t[0], a.$el).length) return null } else if ("not" === t[0]) g.each(t.slice(1), function() { return r = l !== j(this) }); else if ("from" === t[0]) return s = a.$el.find(t[1]), n = "_validated_", (r = s.filter( function() { var e = a.getField(this); return e && !!j(e.getValue()) }).length >= (t[2] || 1)) ? l || (i = null) : i = f(s[0], a) || !1, g(e).data( n) || s.data(n, 1).each(function() { e !== this && a._validate(this) }).removeData(n), i; return r && !!l }, integer: function(e, t) { var i, s = "[1-9]\\d*", t = t ? t[0] : "*"; switch (t) { case "+": i = s; break; case "-": i = "-" + s; break; case "+0": i = "0|" + s; break; case "-0": i = "0|-" + s; break; default: i = "0|-?" + s } return i = "^(?:" + i + ")$", new RegExp(i).test(this.value) || this.messages.integer && this.messages.integer[t] }, match: function(e, t) { if (t) { var i, s, n, a, l = this, r = !0, o = "eq", u = 1 === t.length ? t[0] : (o = t[0], t[1]), d = v(u); if (n = l.$el.find(d)[0]) { if (a = l.getField(n), i = l.value, s = a.getValue(), l._match || (l.$el.on( "valid" + x + k, d, function() { g(e).trigger("validate") }), l._match = a._match = 1), !l.required && "" === i && "" === s) return null; if ((d = t[2]) && (/^date(time)?$/i.test(d) ? (i = h(i), s = h(s)) : "time" === d && (i = +i.replace(/:/g, ""), s = +s.replace(/:/g, ""))), "eq" !== o && !isNaN( +i) && isNaN(+s)) return !0; switch (o) { case "lt": r = +i < +s; break; case "lte": r = +i <= +s; break; case "gte": r = +s <= +i; break; case "gt": r = +s < +i; break; case "neq": r = i !== s; break; default: r = i === s } return r || y(l.messages.match) && l.messages.match[o].replace("{1}", l._getDisplay( n, a.display || u)) } } }, range: function(e, t) { return this.getRangeMsg(this.value, t) }, checked: function(e, t) { var i; if (m(e)) return e = e.name ? this.$el.find('input[name="' + e.name + '"]').filter( function() { return !i && m(this) && (i = this), !this.disabled && this.checked }).length : (i = e).checked, t ? this.getRangeMsg(e, t) : !!e || f(i, this, "") || this.messages.required || !1 }, length: function(e, t) { var i = this.value, i = ("true" === t[1] ? i.replace(L, "xx") : i).length; return this.getRangeMsg(i, t, t[1] ? "_2" : "") }, remote: function(e, t) { var i, s, n, a, l, r, o, u; if (t) return s = this, u = z.exec(t[0]), n = s._rules[s._i], a = {}, l = "", r = u[3], o = u[2] || "POST", u = (u[1] || "").toLowerCase(), n.must = !0, a[e.name] = s.value, t[ 1] && g.map(t.slice(1), function(e) { var t; ~e.indexOf("=") ? l += "&" + e : (t = e.split(":"), e = j(t[0]), t = j(t[ 1]) || e, a[e] = s.$el.find(v(t)).val()) }), a = g.param(a) + l, !s.must && n.data && n.data === a ? n.result : ("cors" !== u && /^https?:/.test(r) && !~r.indexOf(location.host) && (i = "jsonp"), g.ajax({ url: r, type: o, data: a, dataType: i })) }, filter: function(e, t) { var i = this.value, t = i.replace(t ? new RegExp("[" + t[0] + "]", "gm") : P, ""); t !== i && this.setValue(t) } }), r.config = function(e, t) { function i(e, t) { "rules" === e ? new o(t) : "messages" === e ? new u(t) : e in T ? T[e] = t : S[e] = t } y(e) ? g.each(e, i) : _(e) && i(e, t) }, r.setTheme = function(e, t) { y(e) ? g.extend(!0, N, e) : _(e) && y(t) && (N[e] = g.extend(N[e], t)) }, r.load = function(e) { var t, i, s, n, a, l; e && (n = document, a = {}, l = n.scripts[0], e.replace(/([^?=&]+)=([^&#]*)/g, function(e, t, i) { a[t] = i }), t = a.dir || r.dir, r.css || "" === a.css || ((i = n.createElement("link")).rel = "stylesheet", i.href = r.css = t + "jquery.validator.css", l.parentNode.insertBefore(i, l)), !r.local) && ~e.indexOf("local") && "" !== a.local && (r.local = (a.local || n.documentElement .lang || "en").replace("_", "-"), r.pending = 1, (i = n.createElement("script")).src = t + "local/" + r.local + ".js", s = "onload" in i ? "onload" : "onreadystatechange", i[s] = function() { i.readyState && !/loaded|complete/.test(i.readyState) || (i = i[s] = null, delete r.pending, g(window).triggerHandler("validatorready")) }, l.parentNode.insertBefore(i, l)) }; for (var e, i, W = document.scripts, X = W.length, J = /(.*validator(?:\.min)?.js)(\?.*(?:local|css|dir)(?:=[\w\-]*)?)?/; X-- && !i;) i = ((e = W[X]) .hasAttribute ? e.src : e.getAttribute("src", 4) || "").match(J); return i && (r.dir = i[1].split("/").slice(0, -1).join("/") + "/", r.load(i[2])), g[w] = r }), function(e) { "object" == typeof module && module.exports ? module.exports = e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery) }(function(i) { i.validator.config({ rules: { digits: [/^\d+$/, "请填写数字"], letters: [/^[a-z]+$/i, "请填写字母"], date: [/^\d{4}-\d{2}-\d{2}$/, "请填写有效的日期,格式:yyyy-mm-dd"], time: [/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/, "请填写有效的时间,00:00到23:59之间"], email: [/^[\w\+\-]+(\.[\w\+\-]+)*@[a-z\d\-]+(\.[a-z\d\-]+)*\.([a-z]{2,4})$/i, "请填写有效的邮箱"], url: [/^(https?|s?ftp):\/\/\S+$/i, "请填写有效的网址"], qq: [/^[1-9]\d{4,}$/, "请填写有效的QQ号"], IDcard: [/^\d{6}(19|2\d)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)?$/, "请填写正确的身份证号码"], tel: [/^(?:(?:0\d{2,3}[\- ]?[1-9]\d{6,7})|(?:[48]00[\- ]?[1-9]\d{6}))$/, "请填写有效的电话号码"], mobile: [/^1[3-9]\d{9}$/, "请填写有效的手机号"], zipcode: [/^\d{6}$/, "请检查邮政编码格式"], chinese: [/^[\u0391-\uFFE5]+$/, "请填写中文字符"], username: [/^\w{3,12}$/, "请填写3-12位数字、字母、下划线"], password: [/^[\S]{6,16}$/, "请填写6-16位字符,不能包含空格"], accept: function(e, t) { return !t || (t = t[0], e = i(e).val(), "*" === t) || new RegExp(".(?:" + t + ")$", "i") .test(e) || this.renderMsg("只接受{1}后缀的文件", t.replace(/\|/g, ",")) } }, messages: { 0: "此处", fallback: "{0}格式不正确", loading: "正在验证...", error: "网络异常", timeout: "请求超时", required: "{0}不能为空", remote: "{0}已被使用", integer: { "*": "请填写整数", "+": "请填写正整数", "+0": "请填写正整数或0", "-": "请填写负整数", "-0": "请填写负整数或0" }, match: { eq: "{0}与{1}不一致", neq: "{0}与{1}不能相同", lt: "{0}必须小于{1}", gt: "{0}必须大于{1}", lte: "{0}不能大于{1}", gte: "{0}不能小于{1}" }, range: { rg: "请填写{1}到{2}的数", gte: "请填写不小于{1}的数", lte: "请填写最大{1}的数", gtlt: "请填写{1}到{2}之间的数", gt: "请填写大于{1}的数", lt: "请填写小于{1}的数" }, checked: { eq: "请选择{1}项", rg: "请选择{1}到{2}项", gte: "请至少选择{1}项", lte: "请最多选择{1}项" }, length: { eq: "请填写{1}个字符", rg: "请填写{1}到{2}个字符", gte: "请至少填写{1}个字符", lte: "请最多填写{1}个字符", eq_2: "", rg_2: "", gte_2: "", lte_2: "" } } }); var e = ''; i.validator.setTheme({ simple_right: { formClass: "n-simple", msgClass: "n-right" }, simple_bottom: { formClass: "n-simple", msgClass: "n-bottom" }, yellow_top: { formClass: "n-yellow", msgClass: "n-top", msgArrow: e }, yellow_right: { formClass: "n-yellow", msgClass: "n-right", msgArrow: e }, yellow_right_effect: { formClass: "n-yellow", msgClass: "n-right", msgArrow: e, msgShow: function(e, t) { e = e.children(); e.is(":animated") || ("error" === t ? e.css({ left: "20px", opacity: 0 }).delay(100).show().stop().animate({ left: "-4px", opacity: 1 }, 150).animate({ left: "3px" }, 80).animate({ left: 0 }, 80) : e.css({ left: 0, opacity: 1 }).fadeIn(200)) }, msgHide: function(e, t) { e.children().stop().delay(100).show().animate({ left: "20px", opacity: 0 }, 300, function() { e.hide() }) } } }) }); ! function(t, i) { "function" == typeof define && define.amd ? define(["jquery"], i) : "object" == typeof exports ? module.exports = i( require("jquery")) : t.lightbox = i(t.jQuery) }(this, function(d) { function t(t) { this.album = [], this.currentImageIndex = void 0, this.init(), this.options = d.extend({}, this.constructor .defaults), this.option(t) } return t.defaults = { albumLabel: "Image %1 of %2", alwaysShowNavOnTouchDevices: !1, fadeDuration: 600, fitImagesInViewport: !0, imageFadeDuration: 600, positionFromTop: 50, resizeDuration: 700, showImageNumberLabel: !0, wrapAround: !1, disableScrolling: !1, sanitizeTitle: !1 }, t.prototype.option = function(t) { d.extend(this.options, t) }, t.prototype.imageCountLabel = function(t, i) { return this.options.albumLabel.replace(/%1/g, t).replace(/%2/g, i) }, t.prototype.init = function() { var t = this; d(document).ready(function() { t.enable(), t.build() }) }, t.prototype.enable = function() { var i = this; d("body").on("click", "a[rel^=lightbox], area[rel^=lightbox], a[data-lightbox], area[data-lightbox]", function(t) { return i.start(d(t.currentTarget)), !1 }) }, t.prototype.build = function() { var i; 0 < d("#lightbox").length || (i = this, d( '
' ).appendTo(d("body")), this.$lightbox = d("#lightbox"), this.$overlay = d( "#lightboxOverlay"), this.$outerContainer = this.$lightbox.find(".lb-outerContainer"), this .$container = this.$lightbox.find(".lb-container"), this.$image = this.$lightbox.find( ".lb-image"), this.$nav = this.$lightbox.find(".lb-nav"), this.containerPadding = { top: parseInt(this.$container.css("padding-top"), 10), right: parseInt(this.$container.css("padding-right"), 10), bottom: parseInt(this.$container.css("padding-bottom"), 10), left: parseInt(this.$container.css("padding-left"), 10) }, this.imageBorderWidth = { top: parseInt(this.$image.css("border-top-width"), 10), right: parseInt(this.$image.css("border-right-width"), 10), bottom: parseInt(this.$image.css("border-bottom-width"), 10), left: parseInt(this.$image.css("border-left-width"), 10) }, this.$overlay.hide().on("click", function() { return i.end(), !1 }), this.$lightbox.hide().on("click", function(t) { "lightbox" === d(t.target).attr("id") && i.end() }), this.$outerContainer.on("click", function(t) { return "lightbox" === d(t.target).attr("id") && i.end(), !1 }), this.$lightbox.find(".lb-prev").on("click", function() { return 0 === i.currentImageIndex ? i.changeImage(i.album.length - 1) : i.changeImage(i .currentImageIndex - 1), !1 }), this.$lightbox.find(".lb-next").on("click", function() { return i.currentImageIndex === i.album.length - 1 ? i.changeImage(0) : i.changeImage(i .currentImageIndex + 1), !1 }), this.$nav.on("mousedown", function(t) { 3 === t.which && (i.$nav.css("pointer-events", "none"), i.$lightbox.one("contextmenu", function() { setTimeout(function() { this.$nav.css("pointer-events", "auto") }.bind(i), 0) })) }), this.$lightbox.find(".lb-loader, .lb-close").on("click", function() { return i.end(), !1 })) }, t.prototype.start = function(t) { function i(t) { e.album.push({ alt: t.attr("data-alt"), link: t.attr("href"), title: t.attr("data-title") || t.attr("title") }) } var e = this, n = d(window); n.on("resize", d.proxy(this.sizeOverlay, this)), this.sizeOverlay(), this.album = []; var o = 0, a = t.attr("data-lightbox"); if (a) for (var s = d(t.prop("tagName") + '[data-lightbox="' + a + '"]'), h = 0; h < s.length; h = ++h) i( d(s[h])), s[h] === t[0] && (o = h); else if ("lightbox" === t.attr("rel")) i(t); else { s = d(t.prop("tagName") + '[rel="' + t.attr("rel") + '"]'); for (var r = 0; r < s.length; r = ++r) i(d(s[r])), s[r] === t[0] && (o = r) } a = n.scrollTop() + this.options.positionFromTop, n = n.scrollLeft(); this.$lightbox.css({ top: a + "px", left: n + "px" }).fadeIn(this.options.fadeDuration), this.options.disableScrolling && d("body").addClass( "lb-disable-scrolling"), this.changeImage(o) }, t.prototype.changeImage = function(o) { var a = this, s = this.album[o].link, h = s.split(".").slice(-1)[0], r = this.$lightbox.find(".lb-image"), l = (this.disableKeyboardNav(), this.$overlay.fadeIn(this.options.fadeDuration), d(".lb-loader") .fadeIn("slow"), this.$lightbox.find( ".lb-image, .lb-nav, .lb-prev, .lb-next, .lb-dataContainer, .lb-numbers, .lb-caption") .hide(), this.$outerContainer.addClass("animating"), new Image); l.onload = function() { var t, i, e, n; r.attr({ alt: a.album[o].alt, src: s }), d(l), r.width(l.width), r.height(l.height), n = d(window).width(), e = d(window) .height(), n = n - a.containerPadding.left - a.containerPadding.right - a.imageBorderWidth .left - a.imageBorderWidth.right - 20, e = e - a.containerPadding.top - a.containerPadding .bottom - a.imageBorderWidth.top - a.imageBorderWidth.bottom - a.options.positionFromTop - 70, "svg" === h && (r.width(n), r.height(e)), a.options.fitImagesInViewport ? (a.options .maxWidth && a.options.maxWidth < n && (n = a.options.maxWidth), a.options.maxHeight && a.options.maxHeight < e && (e = a.options.maxHeight)) : (n = a.options.maxWidth || l .width || n, e = a.options.maxHeight || l.height || e), (l.width > n || l.height > e) && (l.width / n > l.height / e ? (i = n, t = parseInt(l.height / (l.width / i), 10)) : (t = e, i = parseInt(l.width / (l.height / t), 10)), r.width(i), r.height(t)), a.sizeContainer(r .width(), r.height()) }, l.src = this.album[o].link, this.currentImageIndex = o }, t.prototype.sizeOverlay = function() { var t = this; setTimeout(function() { t.$overlay.width(d(document).width()).height(d(document).height()) }, 0) }, t.prototype.sizeContainer = function(t, i) { function e() { n.$lightbox.find(".lb-dataContainer").width(s), n.$lightbox.find(".lb-prevLink").height(h), n .$lightbox.find(".lb-nextLink").height(h), n.$overlay.focus(), n.showImage() } var n = this, o = this.$outerContainer.outerWidth(), a = this.$outerContainer.outerHeight(), s = t + this.containerPadding.left + this.containerPadding.right + this.imageBorderWidth.left + this .imageBorderWidth.right, h = i + this.containerPadding.top + this.containerPadding.bottom + this.imageBorderWidth.top + this .imageBorderWidth.bottom; o !== s || a !== h ? this.$outerContainer.animate({ width: s, height: h }, this.options.resizeDuration, "swing", function() { e() }) : e() }, t.prototype.showImage = function() { this.$lightbox.find(".lb-loader").stop(!0).hide(), this.$lightbox.find(".lb-image").fadeIn(this.options .imageFadeDuration), this.updateNav(), this.updateDetails(), this.preloadNeighboringImages(), this.enableKeyboardNav() }, t.prototype.updateNav = function() { var t = !1; try { document.createEvent("TouchEvent"), t = !!this.options.alwaysShowNavOnTouchDevices } catch (t) {} this.$lightbox.find(".lb-nav").show(), 1 < this.album.length && (this.options.wrapAround ? (t && this .$lightbox.find(".lb-prev, .lb-next").css("opacity", "1"), this.$lightbox.find( ".lb-prev, .lb-next").show()) : (0 < this.currentImageIndex && (this.$lightbox.find( ".lb-prev").show(), t) && this.$lightbox.find(".lb-prev").css("opacity", "1"), this .currentImageIndex < this.album.length - 1 && (this.$lightbox.find(".lb-next").show(), t) && this.$lightbox.find(".lb-next").css("opacity", "1"))) }, t.prototype.updateDetails = function() { var t, i = this; void 0 !== this.album[this.currentImageIndex].title && "" !== this.album[this.currentImageIndex] .title && (t = this.$lightbox.find(".lb-caption"), this.options.sanitizeTitle ? t.text(this.album[ this.currentImageIndex].title) : t.html(this.album[this.currentImageIndex].title), t.fadeIn( "fast")), 1 < this.album.length && this.options.showImageNumberLabel ? (t = this .imageCountLabel(this.currentImageIndex + 1, this.album.length), this.$lightbox.find( ".lb-number").text(t).fadeIn("fast")) : this.$lightbox.find(".lb-number").hide(), this .$outerContainer.removeClass("animating"), this.$lightbox.find(".lb-dataContainer").fadeIn(this .options.resizeDuration, function() { return i.sizeOverlay() }) }, t.prototype.preloadNeighboringImages = function() { this.album.length > this.currentImageIndex + 1 && ((new Image).src = this.album[this.currentImageIndex + 1].link), 0 < this.currentImageIndex && ((new Image).src = this.album[this.currentImageIndex - 1].link) }, t.prototype.enableKeyboardNav = function() { this.$lightbox.on("keyup.keyboard", d.proxy(this.keyboardAction, this)), this.$overlay.on( "keyup.keyboard", d.proxy(this.keyboardAction, this)) }, t.prototype.disableKeyboardNav = function() { this.$lightbox.off(".keyboard"), this.$overlay.off(".keyboard") }, t.prototype.keyboardAction = function(t) { var i = t.keyCode; 27 === i ? (t.stopPropagation(), this.end()) : 37 === i ? 0 !== this.currentImageIndex ? this .changeImage(this.currentImageIndex - 1) : this.options.wrapAround && 1 < this.album.length && this .changeImage(this.album.length - 1) : 39 === i && (this.currentImageIndex !== this.album.length - 1 ? this.changeImage(this.currentImageIndex + 1) : this.options.wrapAround && 1 < this.album .length && this.changeImage(0)) }, t.prototype.end = function() { this.disableKeyboardNav(), d(window).off("resize", this.sizeOverlay), this.$lightbox.fadeOut(this .options.fadeDuration), this.$overlay.fadeOut(this.options.fadeDuration), this.options .disableScrolling && d("body").removeClass("lb-disable-scrolling") }, new t }); ! function(a) { "use strict"; function u(t, e, r, n) { var o = a(r, e), i = (o.addData(t), o.make(), n = n || 0, o.getModuleCount()), h = o.getModuleCount() + 2 * n; this.text = t, this.level = e, this.version = r, this.moduleCount = h, this.isDark = function(t, e) { return e -= n, !((t -= n) < 0 || i <= t || e < 0 || i <= e) && o.isDark(t, e) }, this.addBlank = function(a, u, f, c) { var s = this.isDark, l = 1 / h; this.isDark = function(t, e) { var r = e * l, n = t * l, o = r + l, i = n + l; return s(t, e) && (o < a || f < r || i < u || c < n) } } } function L(t, e, r, n, o) { r = Math.max(1, r || 1), n = Math.min(40, n || 40); for (var i = r; i <= n; i += 1) try { return new u(t, e, i, o) } catch (t) {} } function S(t, e, r, n, o, i, a, u) { t.isDark(a, u) && e.rect(n, o, i, i) } function A(t, e, r, n, o, i, a, u) { var f, c, s, l, h, g, d, t = t.isDark, p = n + i, w = o + i, r = r.radius * i, i = a - 1, v = a + 1, m = u - 1, y = u + 1, k = t(a, u), T = t(i, m), b = t(i, u), i = t(i, y), C = t(a, y), y = t(v, y), u = t(v, u), v = t(v, m), t = t(a, m); k ? (a = e, m = n, k = o, f = p, c = w, s = r, h = !b && !C, g = !u && !C, d = !u && !t, (l = !b && !t) ? a .moveTo(m + s, k) : a.moveTo(m, k), h ? (a.lineTo(f - s, k), a.arcTo(f, k, f, c, s)) : a.lineTo(f, k), g ? (a.lineTo(f, c - s), a.arcTo(f, c, m, c, s)) : a.lineTo(f, c), d ? (a.lineTo(m + s, c), a.arcTo(m, c, m, k, s)) : a.lineTo(m, c), l ? (a.lineTo(m, k + s), a.arcTo(m, k, f, k, s)) : a.lineTo(m, k)) : (h = e, g = n, d = o, c = p, l = w, f = r, s = b && C && i, a = u && C && y, m = u && t && v, b && t && T && (h.moveTo(g + f, d), h.lineTo(g, d), h.lineTo(g, d + f), h.arcTo(g, d, g + f, d, f)), s && (h.moveTo(c - f, d), h.lineTo(c, d), h.lineTo(c, d + f), h.arcTo(c, d, c - f, d, f)), a && (h.moveTo(c - f, l), h .lineTo(c, l), h.lineTo(c, l - f), h.arcTo(c, l, c - f, l, f)), m && (h.moveTo(g + f, l), h.lineTo( g, l), h.lineTo(g, l - f), h.arcTo(g, l, g + f, l, f))) } function r(t, e) { var r, n, o, i, a, u, f, c, s, l, h, g, d = L(e.text, e.ecLevel, e.minVersion, e.maxVersion, e.quiet); if (d) { var p, w, v, t = x(t).data("qrcode", d), m = t[0].getContext("2d"), y = (v = d, r = m, x((n = e).background).is("img") ? r.drawImage(n.background, 0, 0, n.size, n.size) : n .background && (r.fillStyle = n.background, r.fillRect(n.left, n.top, n.size, n.size)), 1 === (g = n .mode) || 2 === g ? (o = v, i = r, u = (a = n).size, f = "bold " + a.mSize * u + "px " + a .fontname, (c = x("")[0].getContext("2d")).font = f, c = c.measureText(a.label).width, s = a.mSize, l = (1 - (c /= u)) * a.mPosX, h = (1 - s) * a.mPosY, c = l + c, s = h + s, 1 === a .mode ? o.addBlank(0, h - .01, u, s + .01) : o.addBlank(l - .01, h - .01, .01 + c, s + .01), i .fillStyle = a.fontcolor, i.font = f, i.fillText(a.label, l * u, h * u + .75 * a.mSize * u)) : 3 !== g && 4 !== g || (o = v, c = r, f = (s = n).size, i = s.image.naturalWidth || 1, l = s.image .naturalHeight || 1, h = s.mSize, l = (1 - (i = h * i / l)) * s.mPosX, a = (1 - h) * s.mPosY, u = l + i, g = a + h, 3 === s.mode ? o.addBlank(0, a - .01, f, g + .01) : o.addBlank(l - .01, a - .01, .01 + u, g + .01), c.drawImage(s.image, l * f, a * f, i * f, h * f)), d), k = m, T = e, b = y.moduleCount, C = T.size / b, B = S; for (E && 0 < T.radius && T.radius <= .5 && (B = A), k.beginPath(), p = 0; p < b; p += 1) for (w = 0; w < b; w += 1) B(y, k, T, T.left + w * C, T.top + p * C, C, p, w); return x(T.fill).is("img") ? (k.strokeStyle = "rgba(0,0,0,0.5)", k.lineWidth = 2, k.stroke(), v = k .globalCompositeOperation, k.globalCompositeOperation = "destination-out", k.fill(), k .globalCompositeOperation = v, k.clip(), k.drawImage(T.fill, 0, 0, T.size, T.size), k.restore()) : ( k.fillStyle = T.fill, k.fill()), t } return null } function h(t) { return r(x("").attr("width", t.size).attr("height", t.size), t) } var t, x = jQuery, g = (t = document.createElement("canvas"), Boolean(t.getContext && t.getContext("2d"))), E = "[object Opera]" !== Object.prototype.toString.call(window.opera), n = { render: "canvas", minVersion: 1, maxVersion: 40, ecLevel: "L", left: 0, top: 0, size: 200, fill: "#000", background: null, text: "no text", radius: 0, quiet: 0, mode: 0, mSize: .1, mPosX: .5, mPosY: .5, label: "no label", fontname: "sans", fontcolor: "#000", image: null }; x.fn.qrcode = function(t) { var e = x.extend({}, n, t); return this.each(function() { "canvas" === this.nodeName.toLowerCase() ? r(this, e) : x(this).append(function(t) { if (g && "canvas" === t.render) return h(t); if (g && "image" === t.render) return o = t, x("").attr("src", h(o)[0] .toDataURL("image/png")); var e = L((o = t).text, o.ecLevel, o.minVersion, o.maxVersion, o.quiet); if (!e) return null; var r, n, o, t = o.size, i = o.background, a = Math.floor, u = e.moduleCount, f = a(t / u), c = a(.5 * (t - f * u)), a = { position: "relative", left: 0, top: 0, padding: 0, margin: 0, width: t, height: t }, s = { position: "absolute", padding: 0, margin: 0, width: f, height: f, "background-color": o.fill }, l = x("
").data("qrcode", e).css(a); for (i && l.css("background-color", i), r = 0; r < u; r += 1) for (n = 0; n < u; n += 1) e.isDark(r, n) && x("
").css(s).css({ left: c + n * f, top: c + r * f }).appendTo(l); return l }(e)) }) } }(function() { o.stringToBytes = function(t) { for (var e = new Array, r = 0; r < t.length; r += 1) { var n = t.charCodeAt(r); e.push(255 & n) } return e }, o.createStringToBytes = function(u, f) { var o = function() { function t() { var t = e.read(); if (-1 == t) throw new Error; return t } for (var e = c(u), r = 0, n = {};;) { var o = e.read(); if (-1 == o) break; var i = t(), a = t() << 8 | t(); n[String.fromCharCode(o << 8 | i)] = a, r += 1 } if (r != f) throw new Error(r + " != " + f); return n }(), i = "?".charCodeAt(0); return function(t) { for (var e = new Array, r = 0; r < t.length; r += 1) { var n = t.charCodeAt(r); n < 128 ? e.push(n) : "number" == typeof(n = o[t.charAt(r)]) ? (255 & n) == n ? e.push(n) : (e.push(n >>> 8), e.push(255 & n)) : e.push(i) } return e } }, g = { L: 1, M: 0, Q: 3, H: 2 }, e = [ [], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170] ], (t = {}).getBCHTypeInfo = function(t) { for (var e = t << 10; 0 <= i(e) - i(1335);) e ^= 1335 << i(e) - i(1335); return 21522 ^ (t << 10 | e) }, t.getBCHTypeNumber = function(t) { for (var e = t << 12; 0 <= i(e) - i(7973);) e ^= 7973 << i(e) - i(7973); return t << 12 | e }, t.getPatternPosition = function(t) { return e[t - 1] }, t.getMaskFunction = function(t) { switch (t) { case 0: return function(t, e) { return (t + e) % 2 == 0 }; case 1: return function(t, e) { return t % 2 == 0 }; case 2: return function(t, e) { return e % 3 == 0 }; case 3: return function(t, e) { return (t + e) % 3 == 0 }; case 4: return function(t, e) { return (Math.floor(t / 2) + Math.floor(e / 3)) % 2 == 0 }; case 5: return function(t, e) { return t * e % 2 + t * e % 3 == 0 }; case 6: return function(t, e) { return (t * e % 2 + t * e % 3) % 2 == 0 }; case 7: return function(t, e) { return (t * e % 3 + (t + e) % 2) % 2 == 0 }; default: throw new Error("bad maskPattern:" + t) } }, t.getErrorCorrectPolynomial = function(t) { for (var e = Q([1], 0), r = 0; r < t; r += 1) e = e.multiply(Q([1, a.gexp(r)], 0)); return e }, t.getLengthInBits = function(t, e) { if (1 <= e && e < 10) switch (t) { case 1: return 10; case 2: return 9; case 4: case 8: return 8; default: throw new Error("mode:" + t) } else if (e < 27) switch (t) { case 1: return 12; case 2: return 11; case 4: return 16; case 8: return 10; default: throw new Error("mode:" + t) } else { if (!(e < 41)) throw new Error("type:" + e); switch (t) { case 1: return 14; case 2: return 13; case 4: return 16; case 8: return 12; default: throw new Error("mode:" + t) } } }, t.getLostPoint = function(t) { for (var e = t.getModuleCount(), r = 0, n = 0; n < e; n += 1) for (var o = 0; o < e; o += 1) { for (var i = 0, a = t.isDark(n, o), u = -1; u <= 1; u += 1) if (!(n + u < 0 || e <= n + u)) for (var f = -1; f <= 1; f += 1) o + f < 0 || e <= o + f || 0 == u && 0 == f || a != t .isDark(n + u, o + f) || (i += 1); 5 < i && (r += 3 + i - 5) } for (n = 0; n < e - 1; n += 1) for (o = 0; o < e - 1; o += 1) { var c = 0; t.isDark(n, o) && (c += 1), t.isDark(n + 1, o) && (c += 1), t.isDark(n, o + 1) && (c += 1), t .isDark(n + 1, o + 1) && (c += 1), 0 != c && 4 != c || (r += 3) } for (n = 0; n < e; n += 1) for (o = 0; o < e - 6; o += 1) t.isDark(n, o) && !t.isDark(n, o + 1) && t.isDark(n, o + 2) && t .isDark(n, o + 3) && t.isDark(n, o + 4) && !t.isDark(n, o + 5) && t.isDark(n, o + 6) && (r += 40); for (o = 0; o < e; o += 1) for (n = 0; n < e - 6; n += 1) t.isDark(n, o) && !t.isDark(n + 1, o) && t.isDark(n + 2, o) && t .isDark(n + 3, o) && t.isDark(n + 4, o) && !t.isDark(n + 5, o) && t.isDark(n + 6, o) && (r += 40); for (var s = 0, o = 0; o < e; o += 1) for (n = 0; n < e; n += 1) t.isDark(n, o) && (s += 1); return r + Math.abs(100 * s / e / e - 50) / 5 * 10 }, P = t, a = function() { for (var e = new Array(256), r = new Array(256), t = 0; t < 8; t += 1) e[t] = 1 << t; for (t = 8; t < 256; t += 1) e[t] = e[t - 4] ^ e[t - 5] ^ e[t - 6] ^ e[t - 8]; for (t = 0; t < 255; t += 1) r[e[t]] = t; return { glog: function(t) { if (t < 1) throw new Error("glog(" + t + ")"); return r[t] }, gexp: function(t) { for (; t < 0;) t += 255; for (; 256 <= t;) t -= 255; return e[t] } } }(), h = [ [1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12, 7, 37, 13], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16] ], (t = {}).getRSBlocks = function(t, e) { var r, n, o = function(t) { switch (e) { case g.L: return h[4 * (t - 1) + 0]; case g.M: return h[4 * (t - 1) + 1]; case g.Q: return h[4 * (t - 1) + 2]; case g.H: return h[4 * (t - 1) + 3]; default: return } }(t); if (void 0 === o) throw new Error("bad rs block @ typeNumber:" + t + "/errorCorrectLevel:" + e); for (var i = o.length / 3, a = new Array, u = 0; u < i; u += 1) for (var f = o[3 * u + 0], c = o[3 * u + 1], s = o[3 * u + 2], l = 0; l < f; l += 1) a.push((r = s, n = void 0, (n = {}).totalCount = c, n.dataCount = r, n)); return a }, U = t, O = function() { var r = new Array, n = 0, o = { getBuffer: function() { return r }, getAt: function(t) { var e = Math.floor(t / 8); return 1 == (r[e] >>> 7 - t % 8 & 1) }, put: function(t, e) { for (var r = 0; r < e; r += 1) o.putBit(1 == (t >>> e - r - 1 & 1)) }, getLengthInBits: function() { return n }, putBit: function(t) { var e = Math.floor(n / 8); r.length <= e && r.push(0), t && (r[e] |= 128 >>> n % 8), n += 1 } }; return o }, r = function(t) { var r = o.stringToBytes(t); return { getMode: function() { return 4 }, getLength: function(t) { return r.length }, write: function(t) { for (var e = 0; e < r.length; e += 1) t.put(r[e], 8) } } }, c = function(t) { var r = t, n = 0, o = 0, i = 0, a = function(t) { if (65 <= t && t <= 90) return t - 65; if (97 <= t && t <= 122) return t - 97 + 26; if (48 <= t && t <= 57) return t - 48 + 52; if (43 == t) return 62; if (47 == t) return 63; throw new Error("c:" + t) }; return { read: function() { for (; i < 8;) { if (n >= r.length) { if (0 == i) return -1; throw new Error("unexpected end of file./" + i) } var t = r.charAt(n); if (n += 1, "=" == t) return i = 0, -1; t.match(/^\s$/) || (o = o << 6 | a(t.charCodeAt(0)), i += 6) } var e = o >>> i - 8 & 255; return i -= 8, e } } }, u = function(t, e, r, n) { for (var o = y(t, e), i = 0; i < e; i += 1) for (var a = 0; a < t; a += 1) o.setPixel(a, i, r(a, i)); var u = m(); o.write(u); s = c = f = 0, l = "", h = function(t) { if (!(t < 0)) { if (t < 26) return 65 + t; if (t < 52) return t - 26 + 97; if (t < 62) return t - 52 + 48; if (62 == t) return 43; if (63 == t) return 47 } throw new Error("n:" + t) }, (v = {}).writeByte = function(t) { for (f = f << 8 | 255 & t, c += 8, s += 1; 6 <= c;) w(f >>> c - 6), c -= 6 }, v.flush = function() { if (0 < c && (w(f << 6 - c), c = f = 0), s % 3 != 0) for (var t = 3 - s % 3, e = 0; e < t; e += 1) l += "=" }, v.toString = function() { return l }; for (var f, c, s, l, h, g = v, d = u.toByteArray(), p = 0; p < d.length; p += 1) g.writeByte(d[p]); function w(t) { l += String.fromCharCode(h(63 & t)) } g.flush(); var v = "", v = (v = (v = (v = (v = (v += "" }; var h, e, t, g, P, a, U, O, r, c, u, n = o; function Q(n, o) { if (void 0 === n.length) throw new Error(n.length + "/" + o); var e = function() { for (var t = 0; t < n.length && 0 == n[t];) t += 1; for (var e = new Array(n.length - t + o), r = 0; r < n.length - t; r += 1) e[r] = n[r + t]; return e }(), i = { getAt: function(t) { return e[t] }, getLength: function() { return e.length }, multiply: function(t) { for (var e = new Array(i.getLength() + t.getLength() - 1), r = 0; r < i.getLength(); r += 1) for (var n = 0; n < t.getLength(); n += 1) e[r + n] ^= a.gexp(a.glog(i.getAt(r)) + a .glog(t.getAt(n))); return Q(e, 0) }, mod: function(t) { if (i.getLength() - t.getLength() < 0) return i; for (var e = a.glog(i.getAt(0)) - a.glog(t.getAt(0)), r = new Array(i.getLength()), n = 0; n < i.getLength(); n += 1) r[n] = i.getAt(n); for (n = 0; n < t.getLength(); n += 1) r[n] ^= a.gexp(a.glog(t.getAt(n)) + e); return Q(r, 0).mod(t) } }; return i } function o(t, e) { function o(t, e) { M = function(t) { for (var e = new Array(t), r = 0; r < t; r += 1) { e[r] = new Array(t); for (var n = 0; n < t; n += 1) e[r][n] = null } return e }(z = 4 * I + 17), E(0, 0), E(z - 7, 0), E(0, z - 7); for (var r = P.getPatternPosition(I), n = 0; n < r.length; n += 1) for (var o = 0; o < r.length; o += 1) { var i = r[n], a = r[o]; if (null == M[i][a]) for (var u = -2; u <= 2; u += 1) for (var f = -2; f <= 2; f += 1) M[i + u][a + f] = -2 == u || 2 == u || -2 == f || 2 == f || 0 == u && 0 == f } for (var c = 8; c < z - 8; c += 1) null == M[c][6] && (M[c][6] = c % 2 == 0); for (var s = 8; s < z - 8; s += 1) null == M[6][s] && (M[6][s] = s % 2 == 0); for (var l = t, h = D << 3 | e, g = P.getBCHTypeInfo(h), d = 0; d < 15; d += 1) { var p = !l && 1 == (g >> d & 1); d < 6 ? M[d][8] = p : d < 8 ? M[d + 1][8] = p : M[z - 15 + d][8] = p } for (d = 0; d < 15; d += 1) p = !l && 1 == (g >> d & 1), d < 8 ? M[8][z - d - 1] = p : d < 9 ? M[8][15 - d - 1 + 1 ] = p : M[8][15 - d - 1] = p; if (M[z - 8][8] = !l, 7 <= I) { for (var w = t, v = P.getBCHTypeNumber(I), m = 0; m < 18; m += 1) { var y = !w && 1 == (v >> m & 1); M[Math.floor(m / 3)][m % 3 + z - 8 - 3] = y } for (m = 0; m < 18; m += 1) y = !w && 1 == (v >> m & 1), M[m % 3 + z - 8 - 3][Math.floor(m / 3)] = y } for (var k = q = null == q ? function(t, e, r) { for (var n = U.getRSBlocks(t, e), o = O(), i = 0; i < r.length; i += 1) { var a = r[i]; o.put(a.getMode(), 4), o.put(a.getLength(), P.getLengthInBits(a.getMode(), t)), a.write( o) } for (var u = 0, i = 0; i < n.length; i += 1) u += n[i].dataCount; if (o.getLengthInBits() > 8 * u) throw new Error("code length overflow. (" + o .getLengthInBits() + ">" + 8 * u + ")"); for (o.getLengthInBits() + 4 <= 8 * u && o.put(0, 4); o.getLengthInBits() % 8 != 0;) o .putBit(!1); for (; !(o.getLengthInBits() >= 8 * u) && (o.put(236, 8), !(o.getLengthInBits() >= 8 * u));) o.put(17, 8); for (var f = o, c = n, s = 0, l = 0, h = 0, g = new Array(c.length), d = new Array(c .length), p = 0; p < c.length; p += 1) { var w = c[p].dataCount, v = c[p].totalCount - w; l = Math.max(l, w), h = Math.max(h, v), g[p] = new Array(w); for (var m = 0; m < g[p].length; m += 1) g[p][m] = 255 & f.getBuffer()[m + s]; s += w; var y = P.getErrorCorrectPolynomial(v), k = Q(g[p], y.getLength() - 1).mod(y); d[p] = new Array(y.getLength() - 1); for (m = 0; m < d[p].length; m += 1) { var T = m + k.getLength() - d[p].length; d[p][m] = 0 <= T ? k.getAt(T) : 0 } } var b = 0; for (m = 0; m < c.length; m += 1) b += c[m].totalCount; var C = new Array(b), B = 0; for (m = 0; m < l; m += 1) for (p = 0; p < c.length; p += 1) m < g[p].length && (C[B] = g[p][m], B += 1); for (m = 0; m < h; m += 1) for (p = 0; p < c.length; p += 1) m < d[p].length && (C[B] = d[p][m], B += 1); return C }(I, D, R) : q, h = e, T = -1, b = z - 1, C = 7, B = 0, L = P.getMaskFunction(h), S = z - 1; 0 < S; S -= 2) for (6 == S && --S;;) { for (var A = 0, x; A < 2; A += 1) null == M[b][S - A] && (x = !1, B < k.length && (x = 1 == (k[ B] >>> C & 1)), L(b, S - A) && (x = !x), M[b][S - A] = x, -1 == --C) && (B += 1, C = 7); if ((b += T) < 0 || z <= b) { b -= T, T = -T; break } } } function E(t, e) { for (var r = -1; r <= 7; r += 1) if (!(t + r <= -1 || z <= t + r)) for (var n = -1; n <= 7; n += 1) e + n <= -1 || z <= e + n || (M[t + r][e + n] = 0 <= r && r <= 6 && (0 == n || 6 == n) || 0 <= n && n <= 6 && (0 == r || 6 == r) || 2 <= r && r <= 4 && 2 <= n && n <= 4) } var I = t, D = g[e], M = null, z = 0, q = null, R = new Array, i = {}; return i.addData = function(t) { t = r(t); R.push(t), q = null }, i.isDark = function(t, e) { if (t < 0 || z <= t || e < 0 || z <= e) throw new Error(t + "," + e); return M[t][e] }, i.getModuleCount = function() { return z }, i.make = function() { o(!1, function() { for (var t = 0, e = 0, r = 0; r < 8; r += 1) { o(!0, r); var n = P.getLostPoint(i); (0 == r || n < t) && (t = n, e = r) } return e }()) }, i.createTableTag = function(t, e) { t = t || 2; for (var r = (r = (r = (r = "") + '' + "", n = 0; n < i.getModuleCount(); n += 1) { r += ""; for (var o = 0; o < i.getModuleCount(); o += 1) r = (r = (r = (r = (r = (r += '" } return r + "
'; r += "
" }, i.createImgTag = function(r, t) { r = r || 2, t = void 0 === t ? 4 * r : t; var e = i.getModuleCount() * r + 2 * t, n = t, o = e - t; return u(e, e, function(t, e) { return n <= t && t < o && n <= e && e < o && (t = Math.floor((t - n) / r), e = Math .floor((e - n) / r), i.isDark(e, t)) ? 0 : 1 }) }, i } function m() { var r = new Array, o = { writeByte: function(t) { r.push(255 & t) }, writeShort: function(t) { o.writeByte(t), o.writeByte(t >>> 8) }, writeBytes: function(t, e, r) { e = e || 0, r = r || t.length; for (var n = 0; n < r; n += 1) o.writeByte(t[n + e]) }, writeString: function(t) { for (var e = 0; e < t.length; e += 1) o.writeByte(t.charCodeAt(e)) }, toByteArray: function() { return r }, toString: function() { var t = ""; t += "["; for (var e = 0; e < r.length; e += 1) 0 < e && (t += ","), t += r[e]; return t + "]" } }; return o } function y(t, e) { var n = t, o = e, g = new Array(t * e), i = function(t) { for (var e = 1 << t, r = 1 + (1 << t), n = t + 1, o = d(), i = 0; i < e; i += 1) o.add(String .fromCharCode(i)); o.add(String.fromCharCode(e)), o.add(String.fromCharCode(r)); var a, u, f, t = m(), c = (a = t, f = u = 0, { write: function(t, e) { if (t >>> e != 0) throw new Error("length over"); for (; 8 <= u + e;) a.writeByte(255 & (t << u | f)), e -= 8 - u, t >>>= 8 - u, u = f = 0; f |= t << u, u += e }, flush: function() { 0 < u && a.writeByte(f) } }), s = (c.write(e, n), 0), l = String.fromCharCode(g[s]); for (s += 1; s < g.length;) { var h = String.fromCharCode(g[s]); s += 1, o.contains(l + h) ? l += h : (c.write(o.indexOf(l), n), o.size() < 4095 && (o.size() == 1 << n && (n += 1), o.add(l + h)), l = h) } return c.write(o.indexOf(l), n), c.write(r, n), c.flush(), t.toByteArray() }, d = function() { var e = {}, r = 0, n = { add: function(t) { if (n.contains(t)) throw new Error("dup key:" + t); e[t] = r, r += 1 }, size: function() { return r }, indexOf: function(t) { return e[t] }, contains: function(t) { return void 0 !== e[t] } }; return n }; return { setPixel: function(t, e, r) { g[e * n + t] = r }, write: function(t) { t.writeString("GIF87a"), t.writeShort(n), t.writeShort(o), t.writeByte(128), t.writeByte(0), t .writeByte(0), t.writeByte(0), t.writeByte(0), t.writeByte(0), t.writeByte(255), t .writeByte(255), t.writeByte(255), t.writeString(","), t.writeShort(0), t.writeShort(0), t .writeShort(n), t.writeShort(o), t.writeByte(0); var e = i(2); t.writeByte(2); for (var r = 0; 255 < e.length - r;) t.writeByte(255), t.writeBytes(e, r, 255), r += 255; t.writeByte(e.length - r), t.writeBytes(e, r, e.length - r), t.writeByte(0), t.writeString(";") } } } function i(t) { for (var e = 0; 0 != t;) e += 1, t >>>= 1; return e } return t = function() { return n }, "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports && (module .exports = n), n.stringToBytes = function(t) { for (var e = t, r = [], n = 0; n < e.length; n++) { var o = e.charCodeAt(n); o < 128 ? r.push(o) : o < 2048 ? r.push(192 | o >> 6, 128 | 63 & o) : o < 55296 || 57344 <= o ? r .push(224 | o >> 12, 128 | o >> 6 & 63, 128 | 63 & o) : (n++, o = 65536 + ((1023 & o) << 10 | 1023 & e.charCodeAt(n)), r.push(240 | o >> 18, 128 | o >> 12 & 63, 128 | o >> 6 & 63, 128 | 63 & o)) } return r }, n }()), function(c) { c.fn.share = function(t) { var e = c(document.head), e = { url: location.href, site_url: location.origin, source: e.find("[name=site], [name=Site]").attr("content") || document.title, title: e.find("[name=title], [name=Title]").attr("content") || document.title, description: e.find("[name=description], [name=Description]").attr("content") || "", image: c("img:first").prop("src") || "", imageSelector: void 0, weiboKey: "", wechatQrcodeTitle: "微信扫一扫:分享", wechatQrcodeHelper: "

微信里点“发现”,扫一下

二维码便可将本文分享至朋友圈。

", wechatQrcodeSize: 100, mobileSites: [], sites: ["weibo", "qq", "wechat", "tencent", "douban", "qzone", "linkedin", "diandian", "facebook", "twitter", "google" ], disabled: [], initialized: !1 }, a = c.extend({}, e, t), u = { qzone: "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITLE}}&desc={{DESCRIPTION}}&summary={{SUMMARY}}&site={{SOURCE}}&pics={{IMAGE}}", qq: "http://connect.qq.com/widget/shareqq/index.html?url={{URL}}&title={{TITLE}}&source={{SOURCE}}&desc={{DESCRIPTION}}&pics={{IMAGE}}", tencent: "http://share.v.t.qq.com/index.php?c=share&a=index&title={{TITLE}}&url={{URL}}&pic={{IMAGE}}", weibo: "https://service.weibo.com/share/share.php?url={{URL}}&title={{TITLE}}&pic={{IMAGE}}&appkey={{WEIBOKEY}}", wechat: "javascript:;", douban: "http://shuo.douban.com/!service/share?href={{URL}}&name={{TITLE}}&text={{DESCRIPTION}}&image={{IMAGE}}&starid=0&aid=0&style=11", diandian: "http://www.diandian.com/share?lo={{URL}}&ti={{TITLE}}&type=link", linkedin: "http://www.linkedin.com/shareArticle?mini=true&ro=true&title={{TITLE}}&url={{URL}}&summary={{SUMMARY}}&source={{SOURCE}}&armin=armin", facebook: "https://www.facebook.com/sharer/sharer.php?u={{URL}}&title={{TITLE}}&description={{DESCRIPTION}}&caption={{SUBHEAD}}&link={{URL}}&picture={{IMAGE}}", twitter: "https://twitter.com/intent/tweet?text={{TITLE}}&url={{URL}}&via={{SITE_URL}}", google: "https://plus.google.com/share?url={{URL}}" }, f = { qzone: "QQ空间", qq: "QQ", tencent: "腾讯微博", weibo: "微博", wechat: "微信", douban: "豆瓣", diandian: "点点", linkedin: "LinkedIn", facebook: "Facebook", twitter: "Twitter", google: "Google" }; this.each(function() { if (c(this).data("initialized")) return !0; var o, i, r, t, e = c.extend({}, a, c(this).data()), n = (e.imageSelector && (e.image = c(e.imageSelector).map(function() { return c(this).prop("src") }).get().join("||")), c(this).addClass("share-component social-share")); o = n, 0 === (t = i = e).mobileSites.length && t.sites.length && (t.mobileSites = t.sites), r = (c(window).width() <= 768 ? t.mobileSites : t.sites.length ? t.sites : []).slice(0), t = t .disabled, "string" == typeof r && (r = r.split(/\s*,\s*/)), "string" == typeof t && (t = t .split(/\s*,\s*/)), /MicroMessenger/i.test(navigator.userAgent) && t.push("wechat"), t .length && c.each(t, function(t, e) { e = c.inArray(e, r); - 1 !== e && r.splice(e, 1) }), t = r, "prepend" == i.mode && t.reverse(), t.length && c.each(t, function(t, e) { var r = function(t, e) { var r, n, o = u[t]; for (r in e.summary = e.description, e) e.hasOwnProperty(r) && (n = t + r .replace(/^[a-z]/, function(t) { return t.toUpperCase() }), n = encodeURIComponent(void 0 === e[n] ? e[r] : e[n]), o = o .replace(new RegExp("{{" + r.toUpperCase() + "}}", "g"), n)); return o }(e, i), n = i.initialized ? o.find(".icon-" + e) : c( ''); if (!n.length) return !0; n.prop("aria-label", "分享到 " + f[e]), n.prop("href", r), "wechat" === e ? n.prop( "tabindex", -1) : n.prop("target", "_blank"), i.initialized || ("prepend" == i.mode ? o.prepend(n) : o.append(n)) }), t = e, (e = n.find("a.icon-wechat")).length && (e.append( '

' + t.wechatQrcodeTitle + '

' + t.wechatQrcodeHelper + "
"), e.find(".qrcode").qrcode({ render: "image", size: t.wechatQrcodeSize, text: t.url }), e.offset().top < 100) && e.find(".wechat-qrcode").addClass("bottom"), c(this).data( "initialized", !0) }) }, c(function() { c(".share-component,.social-share").share() }) }(jQuery); window.scrollTo || (window.scrollTo = function(e, t) { window.pageXOffset = e, window.pageYOffset = t }), document.body.scrollTo || (Element.prototype.scrollTo = function(e, t) { this.scrollLeft = e, this.scrollTop = t }), function(e, t) { "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = e || self).Swiper = t() }(this, function() { "use strict"; function l(e) { for (var t = 0; t < e.length; t += 1) this[t] = e[t]; return this.length = e.length, this } var c = "undefined" == typeof document ? { body: {}, addEventListener: function() {}, removeEventListener: function() {}, activeElement: { blur: function() {}, nodeName: "" }, querySelector: function() { return null }, querySelectorAll: function() { return [] }, getElementById: function() { return null }, createEvent: function() { return { initEvent: function() {} } }, createElement: function() { return { children: [], childNodes: [], style: {}, setAttribute: function() {}, getElementsByTagName: function() { return [] } } }, location: { hash: "" } } : document, R = "undefined" == typeof window ? { document: c, navigator: { userAgent: "" }, location: {}, history: {}, CustomEvent: function() { return this }, addEventListener: function() {}, removeEventListener: function() {}, getComputedStyle: function() { return { getPropertyValue: function() { return "" } } }, Image: function() {}, Date: function() {}, screen: {}, setTimeout: function() {}, clearTimeout: function() {} } : window; function E(e, t) { var a = [], i = 0; if (e && !t && e instanceof l) return e; if (e) if ("string" == typeof e) { var s, n, r = e.trim(); if (0 <= r.indexOf("<") && 0 <= r.indexOf(">")) { var o = "div"; for (0 === r.indexOf(":~]/) ? (t || c).querySelectorAll(e.trim()) : [c .getElementById(e.trim().split("#")[1]) ], i = 0; i < s.length; i += 1) s[i] && a.push(s[i]) } else if (e.nodeType || e === R || e === c) a.push(e); else if (0 < e.length && e[0].nodeType) for (i = 0; i < e.length; i += 1) a.push(e[i]); return new l(a) } function n(e) { for (var t = [], a = 0; a < e.length; a += 1) - 1 === t.indexOf(e[a]) && t.push(e[a]); return t } E.fn = l.prototype, E.Class = l, E.Dom7 = l; var L = { addClass: function(e) { if (void 0 !== e) for (var t = e.split(" "), a = 0; a < t.length; a += 1) for (var i = 0; i < this.length; i += 1) void 0 !== this[i] && void 0 !== this[i] .classList && this[i].classList.add(t[a]); return this }, removeClass: function(e) { for (var t = e.split(" "), a = 0; a < t.length; a += 1) for (var i = 0; i < this.length; i += 1) void 0 !== this[i] && void 0 !== this[i] .classList && this[i].classList.remove(t[a]); return this }, hasClass: function(e) { return !!this[0] && this[0].classList.contains(e) }, toggleClass: function(e) { for (var t = e.split(" "), a = 0; a < t.length; a += 1) for (var i = 0; i < this.length; i += 1) void 0 !== this[i] && void 0 !== this[i] .classList && this[i].classList.toggle(t[a]); return this }, attr: function(e, t) { var a = arguments; if (1 === arguments.length && "string" == typeof e) return this[0] ? this[0].getAttribute( e) : void 0; for (var i = 0; i < this.length; i += 1) if (2 === a.length) this[i].setAttribute(e, t); else for (var s in e) this[i][s] = e[s], this[i].setAttribute(s, e[s]); return this }, removeAttr: function(e) { for (var t = 0; t < this.length; t += 1) this[t].removeAttribute(e); return this }, data: function(e, t) { var a; if (void 0 !== t) { for (var i = 0; i < this.length; i += 1)(a = this[i]).dom7ElementDataStorage || (a .dom7ElementDataStorage = {}), a.dom7ElementDataStorage[e] = t; return this } if (a = this[0]) return a.dom7ElementDataStorage && e in a.dom7ElementDataStorage ? a .dom7ElementDataStorage[e] : a.getAttribute("data-" + e) || void 0 }, transform: function(e) { for (var t = 0; t < this.length; t += 1) { var a = this[t].style; a.webkitTransform = e, a.transform = e } return this }, transition: function(e) { "string" != typeof e && (e += "ms"); for (var t = 0; t < this.length; t += 1) { var a = this[t].style; a.webkitTransitionDuration = e, a.transitionDuration = e } return this }, on: function() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; var a = e[0], n = e[1], r = e[2], i = e[3]; function s(e) { var t = e.target; if (t) { var a = e.target.dom7EventData || []; if (a.indexOf(e) < 0 && a.unshift(e), E(t).is(n)) r.apply(t, a); else for (var i = E(t).parents(), s = 0; s < i.length; s += 1) E(i[s]).is(n) && r .apply(i[s], a) } } function o(e) { var t = e && e.target && e.target.dom7EventData || []; t.indexOf(e) < 0 && t.unshift(e), r.apply(this, t) } "function" == typeof e[1] && (a = e[0], r = e[1], i = e[2], n = void 0); for (var l, i = i || !1, d = a.split(" "), p = 0; p < this.length; p += 1) { var c = this[p]; if (n) for (l = 0; l < d.length; l += 1) { var u = d[l]; c.dom7LiveListeners || (c.dom7LiveListeners = {}), c.dom7LiveListeners[u] || (c .dom7LiveListeners[u] = []), c.dom7LiveListeners[u].push({ listener: r, proxyListener: s }), c.addEventListener(u, s, i) } else for (l = 0; l < d.length; l += 1) { var h = d[l]; c.dom7Listeners || (c.dom7Listeners = {}), c.dom7Listeners[h] || (c .dom7Listeners[h] = []), c.dom7Listeners[h].push({ listener: r, proxyListener: o }), c.addEventListener(h, o, i) } } return this }, off: function() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; var a = e[0], i = e[1], s = e[2], n = e[3]; "function" == typeof e[1] && (a = e[0], s = e[1], n = e[2], i = void 0); for (var n = n || !1, r = a.split(" "), o = 0; o < r.length; o += 1) for (var l = r[o], d = 0; d < this.length; d += 1) { var p = this[d], c = void 0; if (!i && p.dom7Listeners ? c = p.dom7Listeners[l] : i && p.dom7LiveListeners && ( c = p.dom7LiveListeners[l]), c && c.length) for (var u = c.length - 1; 0 <= u; --u) { var h = c[u]; (s && h.listener === s || s && h.listener && h.listener.dom7proxy && h .listener.dom7proxy === s || !s) && (p.removeEventListener(l, h .proxyListener, n), c.splice(u, 1)) } } return this }, trigger: function() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; for (var a = e[0].split(" "), i = e[1], s = 0; s < a.length; s += 1) for (var n = a[s], r = 0; r < this.length; r += 1) { var o = this[r], l = void 0; try { l = new R.CustomEvent(n, { detail: i, bubbles: !0, cancelable: !0 }) } catch (e) { (l = c.createEvent("Event")).initEvent(n, !0, !0), l.detail = i } o.dom7EventData = e.filter(function(e, t) { return 0 < t }), o.dispatchEvent(l), o.dom7EventData = [], delete o.dom7EventData } return this }, transitionEnd: function(t) { var a, i = ["webkitTransitionEnd", "transitionend"], s = this; function n(e) { if (e.target === this) for (t.call(this, e), a = 0; a < i.length; a += 1) s.off(i[a], n) } if (t) for (a = 0; a < i.length; a += 1) s.on(i[a], n); return this }, outerWidth: function(e) { return 0 < this.length ? e ? (e = this.styles(), this[0].offsetWidth + parseFloat(e .getPropertyValue("margin-right")) + parseFloat(e.getPropertyValue( "margin-left"))) : this[0].offsetWidth : null }, outerHeight: function(e) { return 0 < this.length ? e ? (e = this.styles(), this[0].offsetHeight + parseFloat(e .getPropertyValue("margin-top")) + parseFloat(e.getPropertyValue( "margin-bottom"))) : this[0].offsetHeight : null }, offset: function() { var e, t, a, i, s; return 0 < this.length ? (e = (s = this[0]).getBoundingClientRect(), a = c.body, t = s .clientTop || a.clientTop || 0, a = s.clientLeft || a.clientLeft || 0, i = s === R ? R.scrollY : s.scrollTop, s = s === R ? R.scrollX : s.scrollLeft, { top: e.top + i - t, left: e.left + s - a }) : null }, css: function(e, t) { var a; if (1 === arguments.length) { if ("string" != typeof e) { for (a = 0; a < this.length; a += 1) for (var i in e) this[a].style[i] = e[i]; return this } if (this[0]) return R.getComputedStyle(this[0], null).getPropertyValue(e) } if (2 === arguments.length && "string" == typeof e) for (a = 0; a < this.length; a += 1) this[a].style[e] = t; return this }, each: function(e) { if (e) for (var t = 0; t < this.length; t += 1) if (!1 === e.call(this[t], t, this[t])) return this; return this }, html: function(e) { if (void 0 === e) return this[0] ? this[0].innerHTML : void 0; for (var t = 0; t < this.length; t += 1) this[t].innerHTML = e; return this }, text: function(e) { if (void 0 === e) return this[0] ? this[0].textContent.trim() : null; for (var t = 0; t < this.length; t += 1) this[t].textContent = e; return this }, is: function(e) { var t, a, i = this[0]; if (i && void 0 !== e) if ("string" == typeof e) { if (i.matches) return i.matches(e); if (i.webkitMatchesSelector) return i.webkitMatchesSelector(e); if (i.msMatchesSelector) return i.msMatchesSelector(e); for (t = E(e), a = 0; a < t.length; a += 1) if (t[a] === i) return !0 } else { if (e === c) return i === c; if (e === R) return i === R; if (e.nodeType || e instanceof l) for (t = e.nodeType ? [e] : e, a = 0; a < t.length; a += 1) if (t[a] === i) return !0 } return !1 }, index: function() { var e, t = this[0]; if (t) { for (e = 0; null !== (t = t.previousSibling);) 1 === t.nodeType && (e += 1); return e } }, eq: function(e) { var t; return void 0 === e ? this : (t = this.length, new l(t - 1 < e ? [] : e < 0 ? (t = t + e) < 0 ? [] : [this[t]] : [this[e]])) }, append: function() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; for (var a = 0; a < e.length; a += 1) for (var i = e[a], s = 0; s < this.length; s += 1) if ("string" == typeof i) { var n = c.createElement("div"); for (n.innerHTML = i; n.firstChild;) this[s].appendChild(n.firstChild) } else if (i instanceof l) for (var r = 0; r < i.length; r += 1) this[s].appendChild(i[r]); else this[s].appendChild(i); return this }, prepend: function(e) { for (var t, a = 0; a < this.length; a += 1) if ("string" == typeof e) { var i = c.createElement("div"); for (i.innerHTML = e, t = i.childNodes.length - 1; 0 <= t; --t) this[a] .insertBefore(i.childNodes[t], this[a].childNodes[0]) } else if (e instanceof l) for (t = 0; t < e.length; t += 1) this[a].insertBefore(e[t], this[a].childNodes[0]); else this[a].insertBefore(e, this[a].childNodes[0]); return this }, next: function(e) { return 0 < this.length ? e ? this[0].nextElementSibling && E(this[0].nextElementSibling).is( e) ? new l([this[0].nextElementSibling]) : new l([]) : this[0].nextElementSibling ? new l([this[0].nextElementSibling]) : new l([]) : new l([]) }, nextAll: function(e) { var t = [], a = this[0]; if (!a) return new l([]); for (; a.nextElementSibling;) { var i = a.nextElementSibling; e && !E(i).is(e) || t.push(i), a = i } return new l(t) }, prev: function(e) { var t; return 0 < this.length ? (t = this[0], e ? t.previousElementSibling && E(t .previousElementSibling).is(e) ? new l([t.previousElementSibling]) : new l([]) : t.previousElementSibling ? new l([t.previousElementSibling]) : new l([])) : new l( []) }, prevAll: function(e) { var t = [], a = this[0]; if (!a) return new l([]); for (; a.previousElementSibling;) { var i = a.previousElementSibling; e && !E(i).is(e) || t.push(i), a = i } return new l(t) }, parent: function(e) { for (var t = [], a = 0; a < this.length; a += 1) null === this[a].parentNode || e && !E( this[a].parentNode).is(e) || t.push(this[a].parentNode); return E(n(t)) }, parents: function(e) { for (var t = [], a = 0; a < this.length; a += 1) for (var i = this[a].parentNode; i;) e && !E(i).is(e) || t.push(i), i = i.parentNode; return E(n(t)) }, closest: function(e) { var t = this; return void 0 === e ? new l([]) : t = t.is(e) ? t : t.parents(e).eq(0) }, find: function(e) { for (var t = [], a = 0; a < this.length; a += 1) for (var i = this[a].querySelectorAll(e), s = 0; s < i.length; s += 1) t.push(i[s]); return new l(t) }, children: function(e) { for (var t = [], a = 0; a < this.length; a += 1) for (var i = this[a].childNodes, s = 0; s < i.length; s += 1) e ? 1 === i[s].nodeType && E(i[s]).is(e) && t.push(i[s]) : 1 === i[s].nodeType && t.push(i[s]); return new l(n(t)) }, remove: function() { for (var e = 0; e < this.length; e += 1) this[e].parentNode && this[e].parentNode .removeChild(this[e]); return this }, add: function() { for (var e, t = [], a = arguments.length; a--;) t[a] = arguments[a]; for (e = 0; e < t.length; e += 1) for (var i = E(t[e]), s = 0; s < i.length; s += 1) this[this.length] = i[s], this .length += 1; return this }, styles: function() { return this[0] ? R.getComputedStyle(this[0], null) : {} } }; function e(e) { var t = this; t.params = e = void 0 === e ? {} : e, t.eventsListeners = {}, t.params && t.params.on && Object.keys(t .params.on).forEach(function(e) { t.on(e, t.params.on[e]) }) } Object.keys(L).forEach(function(e) { E.fn[e] = E.fn[e] || L[e] }); var i, q = { deleteProps: function(e) { var t = e; Object.keys(t).forEach(function(e) { try { t[e] = null } catch (e) {} try { delete t[e] } catch (e) {} }) }, nextTick: function(e, t) { return void 0 === t && (t = 0), setTimeout(e, t) }, now: function() { return Date.now() }, getTranslate: function(e, t) { void 0 === t && (t = "x"); var a, i, s, e = R.getComputedStyle(e, null); return R.WebKitCSSMatrix ? (6 < (i = e.transform || e.webkitTransform).split(",").length && (i = i.split(", ").map(function(e) { return e.replace(",", ".") }).join(", ")), s = new R.WebKitCSSMatrix("none" === i ? "" : i)) : a = (s = e .MozTransform || e.OTransform || e.MsTransform || e.msTransform || e.transform || e .getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,")) .toString().split(","), "x" === t && (i = R.WebKitCSSMatrix ? s.m41 : 16 === a.length ? parseFloat(a[12]) : parseFloat(a[4])), (i = "y" === t ? R.WebKitCSSMatrix ? s.m42 : 16 === a.length ? parseFloat(a[13]) : parseFloat(a[5]) : i) || 0 }, parseUrlQuery: function(e) { var t, a, i, s, n = {}, e = e || R.location.href; if ("string" == typeof e && e.length) for (s = (a = (e = -1 < e.indexOf("?") ? e.replace(/\S*\?/, "") : "").split("&").filter( function(e) { return "" !== e })).length, t = 0; t < s; t += 1) i = a[t].replace(/#\S+/g, "").split("="), n[ decodeURIComponent(i[0])] = void 0 === i[1] ? void 0 : decodeURIComponent(i[ 1]) || ""; return n }, isObject: function(e) { return "object" == typeof e && null !== e && e.constructor && e.constructor === Object }, extend: function() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; for (var a = Object(e[0]), i = 1; i < e.length; i += 1) { var s = e[i]; if (null != s) for (var n = Object.keys(Object(s)), r = 0, o = n.length; r < o; r += 1) { var l = n[r], d = Object.getOwnPropertyDescriptor(s, l); void 0 !== d && d.enumerable && (q.isObject(a[l]) && q.isObject(s[l]) ? q .extend(a[l], s[l]) : !q.isObject(a[l]) && q.isObject(s[l]) ? (a[ l] = {}, q.extend(a[l], s[l])) : a[l] = s[l]) } } return a } }, W = (i = c.createElement("div"), { touch: R.Modernizr && !0 === R.Modernizr.touch || !!(0 < R.navigator.maxTouchPoints || "ontouchstart" in R || R.DocumentTouch && c instanceof R.DocumentTouch), pointerEvents: !!(R.navigator.pointerEnabled || R.PointerEvent || "maxTouchPoints" in R .navigator && 0 < R.navigator.maxTouchPoints), prefixedPointerEvents: !!R.navigator.msPointerEnabled, transition: "transition" in (t = i.style) || "webkitTransition" in t || "MozTransition" in t, transforms3d: R.Modernizr && !0 === R.Modernizr.csstransforms3d || "webkitPerspective" in (t = i .style) || "MozPerspective" in t || "OPerspective" in t || "MsPerspective" in t || "perspective" in t, flexbox: function() { for (var e = i.style, t = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient" .split(" "), a = 0; a < t.length; a += 1) if (t[a] in e) return !0; return !1 }(), observer: "MutationObserver" in R || "WebkitMutationObserver" in R, passiveListener: function() { var e = !1; try { var t = Object.defineProperty({}, "passive", { get: function() { e = !0 } }); R.addEventListener("testPassiveListener", null, t) } catch (e) {} return e }(), gestures: "ongesturestart" in R }), j = { isIE: !!R.navigator.userAgent.match(/Trident/g) || !!R.navigator.userAgent.match(/MSIE/g), isEdge: !!R.navigator.userAgent.match(/Edge/g), isSafari: 0 <= (t = R.navigator.userAgent.toLowerCase()).indexOf("safari") && t.indexOf("chrome") < 0 && t.indexOf("android") < 0, isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(R.navigator.userAgent) }, t = { components: { configurable: !0 } }, t = (e.prototype.on = function(e, t, a) { var i, s = this; return "function" == typeof t && (i = a ? "unshift" : "push", e.split(" ").forEach(function(e) { s.eventsListeners[e] || (s.eventsListeners[e] = []), s.eventsListeners[e][i](t) })), s }, e.prototype.once = function(a, i, e) { var s = this; return "function" != typeof i ? s : (n.f7proxy = i, s.on(a, n, e)); function n() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; i.apply(s, e), s.off(a, n), n.f7proxy && delete n.f7proxy } }, e.prototype.off = function(e, i) { var s = this; return s.eventsListeners && e.split(" ").forEach(function(a) { void 0 === i ? s.eventsListeners[a] = [] : s.eventsListeners[a] && s .eventsListeners[a].length && s.eventsListeners[a].forEach(function(e, t) { (e === i || e.f7proxy && e.f7proxy === i) && s.eventsListeners[a] .splice(t, 1) }) }), s }, e.prototype.emit = function() { for (var e = [], t = arguments.length; t--;) e[t] = arguments[t]; var a, i, s, n = this; return n.eventsListeners && (s = "string" == typeof e[0] || Array.isArray(e[0]) ? (a = e[0], i = e.slice(1, e.length), n) : (a = e[0].events, i = e[0].data, e[0].context || n), ( Array.isArray(a) ? a : a.split(" ")).forEach(function(e) { var t; n.eventsListeners && n.eventsListeners[e] && (t = [], n.eventsListeners[e] .forEach(function(e) { t.push(e) }), t.forEach(function(e) { e.apply(s, i) })) })), n }, e.prototype.useModulesParams = function(t) { var a = this; a.modules && Object.keys(a.modules).forEach(function(e) { e = a.modules[e]; e.params && q.extend(t, e.params) }) }, e.prototype.useModules = function(t) { void 0 === t && (t = {}); var i = this; i.modules && Object.keys(i.modules).forEach(function(e) { var a = i.modules[e], e = t[e] || {}; a.instance && Object.keys(a.instance).forEach(function(e) { var t = a.instance[e]; i[e] = "function" == typeof t ? t.bind(i) : t }), a.on && i.on && Object.keys(a.on).forEach(function(e) { i.on(e, a.on[e]) }), a.create && a.create.bind(i)(e) }) }, t.components.set = function(e) { this.use && this.use(e) }, e.installModule = function(t) { for (var e = [], a = arguments.length - 1; 0 < a--;) e[a] = arguments[a + 1]; var i = this, s = (i.prototype.modules || (i.prototype.modules = {}), t.name || Object.keys(i.prototype .modules).length + "_" + q.now()); return (i.prototype.modules[s] = t).proto && Object.keys(t.proto).forEach(function(e) { i.prototype[e] = t.proto[e] }), t.static && Object.keys(t.static).forEach(function(e) { i[e] = t.static[e] }), t.install && t.install.apply(i, e), i }, e.use = function(e) { for (var t = [], a = arguments.length - 1; 0 < a--;) t[a] = arguments[a + 1]; var i = this; return Array.isArray(e) ? (e.forEach(function(e) { return i.installModule(e) }), i) : i.installModule.apply(i, [e].concat(t)) }, Object.defineProperties(e, t), { updateSize: function() { var e = this, t = e.$el, a = void 0 !== e.params.width ? e.params.width : t[0].clientWidth, i = void 0 !== e.params.height ? e.params.height : t[0].clientHeight; 0 === a && e.isHorizontal() || 0 === i && e.isVertical() || (a = a - parseInt(t.css( "padding-left"), 10) - parseInt(t.css("padding-right"), 10), i = i - parseInt(t.css("padding-top"), 10) - parseInt(t.css("padding-bottom"), 10), q .extend(e, { width: a, height: i, size: e.isHorizontal() ? a : i })) }, updateSlides: function() { var e, t = this, a = t.params, i = t.$wrapperEl, s = t.size, n = t.rtlTranslate, H = t.wrongRTL, r = t.virtual && a.virtual.enabled, G = (r ? t.virtual : t).slides.length, o = i.children("." + t.params.slideClass), l = (r ? t.virtual.slides : o).length, d = [], p = [], c = [], r = a.slidesOffsetBefore, u = ("function" == typeof r && (r = a.slidesOffsetBefore.call(t)), a .slidesOffsetAfter), N = ("function" == typeof u && (u = a.slidesOffsetAfter.call(t)), t.snapGrid .length), B = t.snapGrid.length, h = a.spaceBetween, m = -r, v = 0, f = 0; if (void 0 !== s) { "string" == typeof h && 0 <= h.indexOf("%") && (h = parseFloat(h.replace("%", "")) / 100 * s), t.virtualSize = -h, n ? o.css({ marginLeft: "", marginTop: "" }) : o.css({ marginRight: "", marginBottom: "" }), 1 < a.slidesPerColumn && (e = Math.floor(l / a.slidesPerColumn) === l / t .params.slidesPerColumn ? l : Math.ceil(l / a.slidesPerColumn) * a .slidesPerColumn, "auto" !== a.slidesPerView) && "row" === a .slidesPerColumnFill && (e = Math.max(e, a.slidesPerView * a.slidesPerColumn)); for (var g, b, w = a.slidesPerColumn, V = e / w, X = Math.floor(l / a .slidesPerColumn), y = 0; y < l; y += 1) { C = 0; var x, T, E, S, C, M, P, k, z, $, Y, I = o.eq(y); 1 < a.slidesPerColumn && (S = E = T = void 0, "column" === a .slidesPerColumnFill || "row" === a.slidesPerColumnFill && 1 < a .slidesPerGroup ? ("column" === a.slidesPerColumnFill ? (S = y - (E = Math.floor(y / w)) * w, (X < E || E === X && S === w - 1) && w <= (S += 1) && (S = 0, E += 1)) : (x = Math.floor(y / a .slidesPerGroup), E = y - (S = Math.floor(y / a .slidesPerView) - x * a.slidesPerColumn) * a.slidesPerView - x * a.slidesPerView), I.css({ "-webkit-box-ordinal-group": T = E + S * e / w, "-moz-box-ordinal-group": T, "-ms-flex-order": T, "-webkit-order": T, order: T })) : E = y - (S = Math.floor(y / V)) * V, I.css("margin-" + (t .isHorizontal() ? "top" : "left"), 0 !== S && a.spaceBetween && a.spaceBetween + "px").attr("data-swiper-column", E).attr( "data-swiper-row", S)), "none" !== I.css("display") && ("auto" === a .slidesPerView ? (x = R.getComputedStyle(I[0], null), T = I[0].style .transform, E = I[0].style.webkitTransform, T && (I[0].style .transform = "none"), E && (I[0].style.webkitTransform = "none"), C = a.roundLengths ? t.isHorizontal() ? I.outerWidth(!0) : I.outerHeight(!0) : t.isHorizontal() ? (S = parseFloat(x .getPropertyValue("width")), P = parseFloat(x .getPropertyValue("padding-left")), k = parseFloat(x .getPropertyValue("padding-right")), z = parseFloat(x .getPropertyValue("margin-left")), $ = parseFloat(x .getPropertyValue("margin-right")), (M = x.getPropertyValue( "box-sizing")) && "border-box" === M && !j.isIE ? S + z + $ : S + P + k + z + $) : (M = parseFloat(x.getPropertyValue( "height")), P = parseFloat(x.getPropertyValue( "padding-top")), k = parseFloat(x.getPropertyValue( "padding-bottom")), z = parseFloat(x.getPropertyValue( "margin-top")), $ = parseFloat(x.getPropertyValue( "margin-bottom")), (Y = x.getPropertyValue("box-sizing")) && "border-box" === Y && !j.isIE ? M + z + $ : M + P + k + z + $), T && (I[0].style.transform = T), E && (I[0].style.webkitTransform = E), a.roundLengths && (C = Math.floor(C))) : (C = (s - (a .slidesPerView - 1) * h) / a.slidesPerView, a.roundLengths && ( C = Math.floor(C)), o[y] && (t.isHorizontal() ? o[y].style .width = C + "px" : o[y].style.height = C + "px")), o[y] && (o[y] .swiperSlideSize = C), c.push(C), a.centeredSlides ? (m = m + C / 2 + v / 2 + h, 0 === v && 0 !== y && (m = m - s / 2 - h), 0 === y && (m = m - s / 2 - h), Math.abs(m) < .001 && (m = 0), a .roundLengths && (m = Math.floor(m)), f % a.slidesPerGroup == 0 && d .push(m), p.push(m)) : (a.roundLengths && (m = Math.floor(m)), f % a .slidesPerGroup == 0 && d.push(m), p.push(m), m = m + C + h), t .virtualSize += C + h, v = C, f += 1) } if (t.virtualSize = Math.max(t.virtualSize, s) + u, n && H && ("slide" === a .effect || "coverflow" === a.effect) && i.css({ width: t.virtualSize + a.spaceBetween + "px" }), W.flexbox && !a.setWrapperSize || (t.isHorizontal() ? i.css({ width: t.virtualSize + a.spaceBetween + "px" }) : i.css({ height: t.virtualSize + a.spaceBetween + "px" })), 1 < a.slidesPerColumn && (t.virtualSize = (C + a.spaceBetween) * e, t .virtualSize = Math.ceil(t.virtualSize / a.slidesPerColumn) - a .spaceBetween, t.isHorizontal() ? i.css({ width: t.virtualSize + a.spaceBetween + "px" }) : i.css({ height: t.virtualSize + a.spaceBetween + "px" }), a.centeredSlides)) { for (var L = [], D = 0; D < d.length; D += 1) { var O = d[D]; a.roundLengths && (O = Math.floor(O)), d[D] < t.virtualSize + d[0] && L .push(O) } d = L } if (!a.centeredSlides) { L = []; for (var A = 0; A < d.length; A += 1) { var F = d[A]; a.roundLengths && (F = Math.floor(F)), d[A] <= t.virtualSize - s && L.push( F) } d = L, 1 < Math.floor(t.virtualSize - s) - Math.floor(d[d.length - 1]) && d .push(t.virtualSize - s) } 0 === d.length && (d = [0]), 0 !== a.spaceBetween && (t.isHorizontal() ? n ? o.css({ marginLeft: h + "px" }) : o.css({ marginRight: h + "px" }) : o.css({ marginBottom: h + "px" })), a.centerInsufficientSlides && (g = 0, c.forEach(function(e) { g += e + (a.spaceBetween || 0) }), (g -= a.spaceBetween) < s) && (b = (s - g) / 2, d.forEach(function(e, t) { d[t] = e - b }), p.forEach(function(e, t) { p[t] = e + b })), q.extend(t, { slides: o, snapGrid: d, slidesGrid: p, slidesSizesGrid: c }), l !== G && t.emit("slidesLengthChange"), d.length !== N && (t.params .watchOverflow && t.checkOverflow(), t.emit("snapGridLengthChange")), p .length !== B && t.emit("slidesGridLengthChange"), (a.watchSlidesProgress || a .watchSlidesVisibility) && t.updateSlidesOffset() } }, updateAutoHeight: function(e) { var t, a, i = this, s = [], n = 0; if ("number" == typeof e ? i.setTransition(e) : !0 === e && i.setTransition(i.params .speed), "auto" !== i.params.slidesPerView && 1 < i.params.slidesPerView) for (t = 0; t < Math.ceil(i.params.slidesPerView); t += 1) { var r = i.activeIndex + t; if (r > i.slides.length) break; s.push(i.slides.eq(r)[0]) } else s.push(i.slides.eq(i.activeIndex)[0]); for (t = 0; t < s.length; t += 1) void 0 !== s[t] && (n = n < (a = s[t].offsetHeight) ? a : n); n && i.$wrapperEl.css("height", n + "px") }, updateSlidesOffset: function() { for (var e = this.slides, t = 0; t < e.length; t += 1) e[t].swiperSlideOffset = this .isHorizontal() ? e[t].offsetLeft : e[t].offsetTop }, updateSlidesProgress: function(e) { var t = this, a = t.params, i = (void 0 === e && (e = t && t.translate || 0), t.slides), s = t.rtlTranslate; if (0 !== i.length) { void 0 === i[0].swiperSlideOffset && t.updateSlidesOffset(); var n = s ? e : -e; i.removeClass(a.slideVisibleClass), t.visibleSlidesIndexes = [], t .visibleSlides = []; for (var r = 0; r < i.length; r += 1) { var o, l, d = i[r], p = (n + (a.centeredSlides ? t.minTranslate() : 0) - d.swiperSlideOffset) / (d.swiperSlideSize + a.spaceBetween); a.watchSlidesVisibility && (l = (o = -(n - d.swiperSlideOffset)) + t .slidesSizesGrid[r], 0 <= o && o < t.size - 1 || 1 < l && l <= t.size || o <= 0 && l >= t.size) && (t.visibleSlides.push(d), t .visibleSlidesIndexes.push(r), i.eq(r).addClass(a.slideVisibleClass)), d .progress = s ? -p : p } t.visibleSlides = E(t.visibleSlides) } }, updateProgress: function(e) { var t = this, a = t.params, i = (void 0 === e && (i = t.rtlTranslate ? -1 : 1, e = t && t.translate && t .translate * i || 0), t.maxTranslate() - t.minTranslate()), s = t.progress, n = t.isBeginning, r = n, o = t.isEnd, i = 0 == i ? n = !(s = 0) : (n = (s = (e - t.minTranslate()) / i) <= 0, 1 <= s); q.extend(t, { progress: s, isBeginning: n, isEnd: i }), (a.watchSlidesProgress || a.watchSlidesVisibility) && t.updateSlidesProgress(e), n && !r && t.emit("reachBeginning toEdge"), i && !o && t.emit("reachEnd toEdge"), ( r && !n || o && !i) && t.emit("fromEdge"), t.emit("progress", s) }, updateSlidesClasses: function() { var e = this, t = e.slides, a = e.params, i = e.$wrapperEl, s = e.activeIndex, n = e.realIndex, r = e.virtual && a.virtual.enabled, e = (t.removeClass(a.slideActiveClass + " " + a.slideNextClass + " " + a .slidePrevClass + " " + a.slideDuplicateActiveClass + " " + a .slideDuplicateNextClass + " " + a.slideDuplicatePrevClass), (r = r ? e .$wrapperEl.find("." + a.slideClass + '[data-swiper-slide-index="' + s + '"]') : t.eq(s)).addClass(a.slideActiveClass), a.loop && (r.hasClass(a .slideDuplicateClass) ? i.children("." + a.slideClass + ":not(." + a .slideDuplicateClass + ')[data-swiper-slide-index="' + n + '"]') : i .children("." + a.slideClass + "." + a.slideDuplicateClass + '[data-swiper-slide-index="' + n + '"]')).addClass(a .slideDuplicateActiveClass), r.nextAll("." + a.slideClass).eq(0).addClass(a .slideNextClass)), s = (a.loop && 0 === e.length && (e = t.eq(0)).addClass(a.slideNextClass), r .prevAll("." + a.slideClass).eq(0).addClass(a.slidePrevClass)); a.loop && 0 === s.length && (s = t.eq(-1)).addClass(a.slidePrevClass), a.loop && ((e .hasClass(a.slideDuplicateClass) ? i.children("." + a.slideClass + ":not(." + a.slideDuplicateClass + ')[data-swiper-slide-index="' + e .attr("data-swiper-slide-index") + '"]') : i.children("." + a .slideClass + "." + a.slideDuplicateClass + '[data-swiper-slide-index="' + e.attr("data-swiper-slide-index") + '"]') ).addClass(a.slideDuplicateNextClass), (s.hasClass(a.slideDuplicateClass) ? i.children("." + a.slideClass + ":not(." + a.slideDuplicateClass + ')[data-swiper-slide-index="' + s.attr("data-swiper-slide-index") + '"]' ) : i.children("." + a.slideClass + "." + a.slideDuplicateClass + '[data-swiper-slide-index="' + s.attr("data-swiper-slide-index") + '"]') ).addClass(a.slideDuplicatePrevClass)) }, updateActiveIndex: function(e) { var t = this, a = t.rtlTranslate ? t.translate : -t.translate, i = t.slidesGrid, s = t.snapGrid, n = t.params, r = t.activeIndex, o = t.realIndex, l = t.snapIndex, d = e; if (void 0 === d) { for (var p = 0; p < i.length; p += 1) void 0 !== i[p + 1] ? a >= i[p] && a < i[p + 1] - (i[p + 1] - i[p]) / 2 ? d = p : a >= i[p] && a < i[p + 1] && (d = p + 1) : a >= i[p] && (d = p); n.normalizeSlideIndex && (d < 0 || void 0 === d) && (d = 0) }(e = 0 <= s.indexOf(a) ? s.indexOf(a) : Math.floor(d / n.slidesPerGroup)) >= s .length && (e = s.length - 1), d !== r ? (n = parseInt(t.slides.eq(d).attr( "data-swiper-slide-index") || d, 10), q.extend(t, { snapIndex: e, realIndex: n, previousIndex: r, activeIndex: d }), t.emit("activeIndexChange"), t.emit("snapIndexChange"), o !== n && t.emit( "realIndexChange"), (t.initialized || t.runCallbacksOnInit) && t.emit( "slideChange")) : e !== l && (t.snapIndex = e, t.emit("snapIndexChange")) }, updateClickedSlide: function(e) { var t = this, a = t.params, i = E(e.target).closest("." + a.slideClass)[0], s = !1; if (i) for (var n = 0; n < t.slides.length; n += 1) t.slides[n] === i && (s = !0); i && s ? (t.clickedSlide = i, t.virtual && t.params.virtual.enabled ? t.clickedIndex = parseInt(E(i).attr("data-swiper-slide-index"), 10) : t.clickedIndex = E(i) .index(), a.slideToClickedSlide && void 0 !== t.clickedIndex && t .clickedIndex !== t.activeIndex && t.slideToClickedSlide()) : (t.clickedSlide = void 0, t.clickedIndex = void 0) } }), a = { getTranslate: function(e) { void 0 === e && (e = this.isHorizontal() ? "x" : "y"); var t = this.params, a = this.rtlTranslate, i = this.translate, s = this.$wrapperEl; return t.virtualTranslate ? a ? -i : i : (t = q.getTranslate(s[0], e), (t = a ? -t : t) || 0) }, setTranslate: function(e, t) { var a = this, i = a.rtlTranslate, s = a.params, n = a.$wrapperEl, r = a.progress, o = 0, l = 0, i = (a.isHorizontal() ? o = i ? -e : e : l = e, s.roundLengths && (o = Math.floor(o), l = Math.floor(l)), s.virtualTranslate || (W.transforms3d ? n.transform( "translate3d(" + o + "px, " + l + "px, 0px)") : n.transform("translate(" + o + "px, " + l + "px)")), a.previousTranslate = a.translate, a.translate = a .isHorizontal() ? o : l, a.maxTranslate() - a.minTranslate()); (0 == i ? 0 : (e - a.minTranslate()) / i) !== r && a.updateProgress(e), a.emit( "setTranslate", a.translate, t) }, minTranslate: function() { return -this.snapGrid[0] }, maxTranslate: function() { return -this.snapGrid[this.snapGrid.length - 1] } }, s = { slideTo: function(e, t, a, i) { void 0 === t && (t = this.params.speed), void 0 === a && (a = !0); var s = this, n = e = void 0 === e ? 0 : e, e = (n < 0 && (n = 0), s.params), r = s.snapGrid, o = s.slidesGrid, l = s.previousIndex, d = s.activeIndex, p = s.rtlTranslate; if (s.animating && e.preventInteractionOnTransition) return !1; var c = Math.floor(n / e.slidesPerGroup); c >= r.length && (c = r.length - 1), (d || e.initialSlide || 0) === (l || 0) && a && s.emit( "beforeSlideChangeStart"); var u, h = -r[c]; if (s.updateProgress(h), e.normalizeSlideIndex) for (var m = 0; m < o.length; m += 1) - Math.floor(100 * h) >= Math.floor(100 * o[m]) && (n = m); if (s.initialized && n !== d) { if (!s.allowSlideNext && h < s.translate && h < s.minTranslate()) return !1; if (!s.allowSlidePrev && h > s.translate && h > s.maxTranslate() && (d || 0) !== n) return !1 } return u = d < n ? "next" : n < d ? "prev" : "reset", p && -h === s.translate || !p && h === s.translate ? (s.updateActiveIndex(n), e.autoHeight && s.updateAutoHeight(), s .updateSlidesClasses(), "slide" !== e.effect && s.setTranslate(h), "reset" != u && ( s.transitionStart(a, u), s.transitionEnd(a, u)), !1) : (0 !== t && W .transition ? (s.setTransition(t), s.setTranslate(h), s.updateActiveIndex(n), s .updateSlidesClasses(), s.emit("beforeTransitionStart", t, i), s .transitionStart(a, u), s.animating || (s.animating = !0, s .onSlideToWrapperTransitionEnd || (s.onSlideToWrapperTransitionEnd = function(e) { s && !s.destroyed && e.target === this && (s.$wrapperEl[0] .removeEventListener("transitionend", s .onSlideToWrapperTransitionEnd), s.$wrapperEl[0] .removeEventListener("webkitTransitionEnd", s .onSlideToWrapperTransitionEnd), s .onSlideToWrapperTransitionEnd = null, delete s .onSlideToWrapperTransitionEnd, s.transitionEnd(a, u)) }), s.$wrapperEl[0].addEventListener("transitionend", s .onSlideToWrapperTransitionEnd), s.$wrapperEl[0].addEventListener( "webkitTransitionEnd", s.onSlideToWrapperTransitionEnd))) : (s .setTransition(0), s.setTranslate(h), s.updateActiveIndex(n), s .updateSlidesClasses(), s.emit("beforeTransitionStart", t, i), s .transitionStart(a, u), s.transitionEnd(a, u)), !0) }, slideToLoop: function(e, t, a, i) { void 0 === t && (t = this.params.speed); e = void 0 === e ? 0 : e; return this.params.loop && (e += this.loopedSlides), this.slideTo(e, t, a = void 0 === a ? ! 0 : a, i) }, slideNext: function(e, t, a) { void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); var i = this, s = i.params, n = i.animating; return s.loop ? !n && (i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft, i.slideTo(i .activeIndex + s.slidesPerGroup, e, t, a)) : i.slideTo(i.activeIndex + s .slidesPerGroup, e, t, a) }, slidePrev: function(e, t, a) { void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); var i = this, s = i.params, n = i.animating, r = i.snapGrid, o = i.slidesGrid, l = i.rtlTranslate; if (s.loop) { if (n) return !1; i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft } function d(e) { return e < 0 ? -Math.floor(Math.abs(e)) : Math.floor(e) } var p, s = d(l ? i.translate : -i.translate), n = r.map(d), l = (o.map(d), r[n.indexOf(s)], r[n.indexOf(s) - 1]); return void 0 !== l && (p = o.indexOf(l)) < 0 && (p = i.activeIndex - 1), i.slideTo(p, e, t, a) }, slideReset: function(e, t, a) { return void 0 === e && (e = this.params.speed), this.slideTo(this.activeIndex, e, t = void 0 === t ? !0 : t, a) }, slideToClosest: function(e, t, a) { void 0 === e && (e = this.params.speed), void 0 === t && (t = !0); var i, s, n = this, r = n.activeIndex, o = Math.floor(r / n.params.slidesPerGroup); return o < n.snapGrid.length - 1 && (i = n.rtlTranslate ? n.translate : -n.translate, s = n .snapGrid[o], (n.snapGrid[o + 1] - s) / 2 < i - s) && (r = n.params.slidesPerGroup), n.slideTo(r, e, t, a) }, slideToClickedSlide: function() { var e, t = this, a = t.params, i = t.$wrapperEl, s = "auto" === a.slidesPerView ? t.slidesPerViewDynamic() : a.slidesPerView, n = t.clickedIndex; a.loop ? t.animating || (e = parseInt(E(t.clickedSlide).attr("data-swiper-slide-index"), 10), a.centeredSlides ? n < t.loopedSlides - s / 2 || n > t.slides.length - t .loopedSlides + s / 2 ? (t.loopFix(), n = i.children("." + a.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + a.slideDuplicateClass + ")") .eq(0).index(), q.nextTick(function() { t.slideTo(n) })) : t.slideTo(n) : n > t.slides.length - s ? (t.loopFix(), n = i.children( "." + a.slideClass + '[data-swiper-slide-index="' + e + '"]:not(.' + a .slideDuplicateClass + ")").eq(0).index(), q.nextTick(function() { t.slideTo(n) })) : t.slideTo(n)) : t.slideTo(n) } }, r = { loopCreate: function() { var i = this, e = i.params, t = i.$wrapperEl, s = (t.children("." + e.slideClass + "." + e.slideDuplicateClass).remove(), t.children( "." + e.slideClass)); if (e.loopFillGroupWithBlank) { var a = e.slidesPerGroup - s.length % e.slidesPerGroup; if (a !== e.slidesPerGroup) { for (var n = 0; n < a; n += 1) { var r = E(c.createElement("div")).addClass(e.slideClass + " " + e .slideBlankClass); t.append(r) } s = t.children("." + e.slideClass) } } "auto" !== e.slidesPerView || e.loopedSlides || (e.loopedSlides = s.length), i .loopedSlides = parseInt(e.loopedSlides || e.slidesPerView, 10), i.loopedSlides += e .loopAdditionalSlides, i.loopedSlides > s.length && (i.loopedSlides = s.length); var o = [], l = []; s.each(function(e, t) { var a = E(t); e < i.loopedSlides && l.push(t), e < s.length && e >= s.length - i .loopedSlides && o.push(t), a.attr("data-swiper-slide-index", e) }); for (var d = 0; d < l.length; d += 1) t.append(E(l[d].cloneNode(!0)).addClass(e .slideDuplicateClass)); for (var p = o.length - 1; 0 <= p; --p) t.prepend(E(o[p].cloneNode(!0)).addClass(e .slideDuplicateClass)) }, loopFix: function() { var e, t = this, a = t.params, i = t.activeIndex, s = t.slides, n = t.loopedSlides, r = t.allowSlidePrev, o = t.allowSlideNext, l = t.snapGrid, d = t.rtlTranslate, l = (t.allowSlidePrev = !0, t.allowSlideNext = !0, -l[i] - t.getTranslate()); i < n ? (e = s.length - 3 * n + i, t.slideTo(e += n, 0, !1, !0) && 0 != l && t.setTranslate( (d ? -t.translate : t.translate) - l)) : ("auto" === a.slidesPerView && 2 * n <= i || i >= s.length - n) && (e = -s.length + i + n, t.slideTo(e += n, 0, !1, !0)) && 0 != l && t.setTranslate((d ? -t.translate : t.translate) - l), t.allowSlidePrev = r, t .allowSlideNext = o }, loopDestroy: function() { var e = this.$wrapperEl, t = this.params, a = this.slides; e.children("." + t.slideClass + "." + t.slideDuplicateClass + ",." + t.slideClass + "." + t .slideBlankClass).remove(), a.removeAttr("data-swiper-slide-index") } }, D = { setGrabCursor: function(e) { var t; W.touch || !this.params.simulateTouch || this.params.watchOverflow && this.isLocked || ((t = this.el).style.cursor = "move", t.style.cursor = e ? "-webkit-grabbing" : "-webkit-grab", t.style.cursor = e ? "-moz-grabbin" : "-moz-grab", t.style.cursor = e ? "grabbing" : "grab") }, unsetGrabCursor: function() { W.touch || this.params.watchOverflow && this.isLocked || (this.el.style.cursor = "") } }, O = { appendSlide: function(e) { var t = this, a = t.$wrapperEl, i = t.params; if (i.loop && t.loopDestroy(), "object" == typeof e && "length" in e) for (var s = 0; s < e.length; s += 1) e[s] && a.append(e[s]); else a.append(e); i.loop && t.loopCreate(), i.observer && W.observer || t.update() }, prependSlide: function(e) { var t = this, a = t.params, i = t.$wrapperEl, s = t.activeIndex, n = (a.loop && t.loopDestroy(), s + 1); if ("object" == typeof e && "length" in e) { for (var r = 0; r < e.length; r += 1) e[r] && i.prepend(e[r]); n = s + e.length } else i.prepend(e); a.loop && t.loopCreate(), a.observer && W.observer || t.update(), t.slideTo(n, 0, !1) }, addSlide: function(e, t) { var a = this, i = a.$wrapperEl, s = a.params, n = a.activeIndex, r = (s.loop && (n -= a.loopedSlides, a.loopDestroy(), a.slides = i.children("." + s .slideClass)), a.slides.length); if (e <= 0) a.prependSlide(t); else if (r <= e) a.appendSlide(t); else { for (var o = e < n ? n + 1 : n, l = [], d = r - 1; e <= d; --d) { var p = a.slides.eq(d); p.remove(), l.unshift(p) } if ("object" == typeof t && "length" in t) { for (var c = 0; c < t.length; c += 1) t[c] && i.append(t[c]); o = e < n ? n + t.length : n } else i.append(t); for (var u = 0; u < l.length; u += 1) i.append(l[u]); s.loop && a.loopCreate(), s.observer && W.observer || a.update(), s.loop ? a.slideTo(o + a.loopedSlides, 0, !1) : a.slideTo(o, 0, !1) } }, removeSlide: function(e) { var t = this, a = t.params, i = t.$wrapperEl, s = t.activeIndex; a.loop && (s -= t.loopedSlides, t.loopDestroy(), t.slides = i.children("." + a.slideClass)); var n, r = s; if ("object" == typeof e && "length" in e) for (var o = 0; o < e.length; o += 1) n = e[o], t.slides[n] && t.slides.eq(n).remove(), n < r && --r; else t.slides[n = e] && t.slides.eq(n).remove(), n < r && --r; r = Math.max(r, 0), a.loop && t.loopCreate(), a.observer && W.observer || t.update(), a .loop ? t.slideTo(r + t.loopedSlides, 0, !1) : t.slideTo(r, 0, !1) }, removeAllSlides: function() { for (var e = [], t = 0; t < this.slides.length; t += 1) e.push(t); this.removeSlide(e) } }, o = (m = R.navigator.userAgent, x = { ios: !1, android: !1, androidChrome: !1, desktop: !1, windows: !1, iphone: !1, ipod: !1, ipad: !1, cordova: R.cordova || R.phonegap, phonegap: R.cordova || R.phonegap }, g = m.match(/(Windows Phone);?[\s\/]+([\d.]+)?/), w = m.match(/(Android);?[\s\/]+([\d.]+)?/), p = m.match(/(iPad).*OS\s([\d_]+)/), v = m.match(/(iPod)(.*OS\s([\d_]+))?/), f = !p && m.match( /(iPhone\sOS|iOS)\s([\d_]+)/), g && (x.os = "windows", x.osVersion = g[2], x.windows = !0), w && !g && (x.os = "android", x.osVersion = w[2], x.android = !0, x.androidChrome = 0 <= m.toLowerCase() .indexOf("chrome")), (p || f || v) && (x.os = "ios", x.ios = !0), f && !v && (x.osVersion = f[2] .replace(/_/g, "."), x.iphone = !0), p && (x.osVersion = p[2].replace(/_/g, "."), x.ipad = !0), v && (x.osVersion = v[3] ? v[3].replace(/_/g, ".") : null, x.iphone = !0), x.ios && x.osVersion && 0 <= m.indexOf("Version/") && "10" === x.osVersion.split(".")[0] && (x.osVersion = m.toLowerCase() .split("version/")[1].split(" ")[0]), x.desktop = !(x.os || x.android || x.webView), x.webView = (f || p || v) && m.match(/.*AppleWebKit(?!.*Safari)/i), x.os && "ios" === x.os && (g = x.osVersion .split("."), w = c.querySelector('meta[name="viewport"]'), x.minimalUi = !x.webView && (v || f) && (7 == +g[0] ? 1 <= +g[1] : 7 < +g[0]) && w && 0 <= w.getAttribute("content").indexOf( "minimal-ui")), x.pixelRatio = R.devicePixelRatio || 1, x); function A() { var e, t, a, i = this, s = i.params, n = i.el; n && 0 === n.offsetWidth || (s.breakpoints && i.setBreakpoint(), n = i.allowSlideNext, e = i .allowSlidePrev, t = i.snapGrid, i.allowSlideNext = !0, i.allowSlidePrev = !0, i.updateSize(), i .updateSlides(), s.freeMode ? (a = Math.min(Math.max(i.translate, i.maxTranslate()), i .minTranslate()), i.setTranslate(a), i.updateActiveIndex(), i.updateSlidesClasses(), s .autoHeight && i.updateAutoHeight()) : (i.updateSlidesClasses(), ("auto" === s .slidesPerView || 1 < s.slidesPerView) && i.isEnd && !i.params.centeredSlides ? i .slideTo(i.slides.length - 1, 0, !1, !0) : i.slideTo(i.activeIndex, 0, !1, !0)), i .autoplay && i.autoplay.running && i.autoplay.paused && i.autoplay.run(), i.allowSlidePrev = e, i.allowSlideNext = n, i.params.watchOverflow && t !== i.snapGrid && i.checkOverflow()) } var H = !1; function G() {} var d, p, N = { init: !0, direction: "horizontal", touchEventsTarget: "container", initialSlide: 0, speed: 300, preventInteractionOnTransition: !1, edgeSwipeDetection: !1, edgeSwipeThreshold: 20, freeMode: !1, freeModeMomentum: !0, freeModeMomentumRatio: 1, freeModeMomentumBounce: !0, freeModeMomentumBounceRatio: 1, freeModeMomentumVelocityRatio: 1, freeModeSticky: !1, freeModeMinimumVelocity: .02, autoHeight: !1, setWrapperSize: !1, virtualTranslate: !1, effect: "slide", breakpoints: void 0, breakpointsInverse: !1, spaceBetween: 0, slidesPerView: 1, slidesPerColumn: 1, slidesPerColumnFill: "column", slidesPerGroup: 1, centeredSlides: !1, slidesOffsetBefore: 0, slidesOffsetAfter: 0, normalizeSlideIndex: !0, centerInsufficientSlides: !1, watchOverflow: !1, roundLengths: !1, touchRatio: 1, touchAngle: 45, simulateTouch: !0, shortSwipes: !0, longSwipes: !0, longSwipesRatio: .5, longSwipesMs: 300, followFinger: !0, allowTouchMove: !0, threshold: 0, touchMoveStopPropagation: !0, touchStartPreventDefault: !0, touchStartForcePreventDefault: !1, touchReleaseOnEdges: !1, uniqueNavElements: !0, resistance: !0, resistanceRatio: .85, watchSlidesProgress: !1, watchSlidesVisibility: !1, grabCursor: !1, preventClicks: !0, preventClicksPropagation: !0, slideToClickedSlide: !1, preloadImages: !0, updateOnImagesReady: !0, loop: !1, loopAdditionalSlides: 0, loopedSlides: null, loopFillGroupWithBlank: !1, allowSlidePrev: !0, allowSlideNext: !0, swipeHandler: null, noSwiping: !0, noSwipingClass: "swiper-no-swiping", noSwipingSelector: null, passiveListeners: !0, containerModifierClass: "swiper-container-", slideClass: "swiper-slide", slideBlankClass: "swiper-slide-invisible-blank", slideActiveClass: "swiper-slide-active", slideDuplicateActiveClass: "swiper-slide-duplicate-active", slideVisibleClass: "swiper-slide-visible", slideDuplicateClass: "swiper-slide-duplicate", slideNextClass: "swiper-slide-next", slideDuplicateNextClass: "swiper-slide-duplicate-next", slidePrevClass: "swiper-slide-prev", slideDuplicatePrevClass: "swiper-slide-duplicate-prev", wrapperClass: "swiper-wrapper", runCallbacksOnInit: !0 }, u = { update: t, translate: a, transition: { setTransition: function(e, t) { this.$wrapperEl.transition(e), this.emit("setTransition", e, t) }, transitionStart: function(e, t) { void 0 === e && (e = !0); var a = this, i = a.activeIndex, s = a.params, n = a.previousIndex, s = (s.autoHeight && a.updateAutoHeight(), t || (n < i ? "next" : i < n ? "prev" : "reset")); a.emit("transitionStart"), e && i !== n && ("reset" === s ? a.emit( "slideResetTransitionStart") : (a.emit("slideChangeTransitionStart"), "next" === s ? a.emit("slideNextTransitionStart") : a.emit( "slidePrevTransitionStart"))) }, transitionEnd: function(e, t) { void 0 === e && (e = !0); var a = this, i = a.activeIndex, s = a.previousIndex, t = (a.animating = !1, a.setTransition(0), t || (s < i ? "next" : i < s ? "prev" : "reset")); a.emit("transitionEnd"), e && i !== s && ("reset" === t ? a.emit( "slideResetTransitionEnd") : (a.emit("slideChangeTransitionEnd"), "next" === t ? a.emit("slideNextTransitionEnd") : a.emit("slidePrevTransitionEnd"))) } }, slide: s, loop: r, grabCursor: D, manipulation: O, events: { attachEvents: function() { var e, t = this, a = t.params, i = t.touchEvents, s = t.el, n = t.wrapperEl, s = (t.onTouchStart = function(e) { var t, a, i, s, n = this, r = n.touchEventsData, o = n.params, l = n.touches; n.animating && o.preventInteractionOnTransition || ((e = e).originalEvent && (e = e.originalEvent), r.isTouchEvent = "touchstart" === e.type, !r .isTouchEvent && "which" in e && 3 === e.which) || !r .isTouchEvent && "button" in e && 0 < e.button || r.isTouched && r .isMoved || (o.noSwiping && E(e.target).closest(o.noSwipingSelector || "." + o.noSwipingClass)[0] ? n.allowClick = !0 : o .swipeHandler && !E(e).closest(o.swipeHandler)[0] || (l.currentX = ( "touchstart" === e.type ? e.targetTouches[0] : e).pageX, l .currentY = ("touchstart" === e.type ? e.targetTouches[0] : e) .pageY, t = l.currentX, a = l.currentY, i = o .edgeSwipeDetection || o.iOSEdgeSwipeDetection, s = o .edgeSwipeThreshold || o.iOSEdgeSwipeThreshold, i && (t <= s || t >= R.screen.width - s)) || (q.extend(r, { isTouched: !0, isMoved: !1, allowTouchCallbacks: !0, isScrolling: void 0, startMoving: void 0 }), l.startX = t, l.startY = a, r.touchStartTime = q.now(), n .allowClick = !0, n.updateSize(), n.swipeDirection = void 0, 0 < o.threshold && (r.allowThresholdMove = !1), "touchstart" !== e .type && (i = !0, E(e.target).is(r.formElements) && (i = !1), c .activeElement && E(c.activeElement).is(r.formElements) && c .activeElement !== e.target && c.activeElement.blur(), s = i && n.allowTouchMove && o.touchStartPreventDefault, o .touchStartForcePreventDefault || s) && e.preventDefault(), n.emit("touchStart", e))) }.bind(t), t.onTouchMove = function(e) { var t = this, a = t.touchEventsData, i = t.params, s = t.touches, n = t.rtlTranslate; if (e.originalEvent && (e = e.originalEvent), a.isTouched) { if (!a.isTouchEvent || "mousemove" !== e.type) { var r = "touchmove" === e.type && e.targetTouches && (e .targetTouches[0] || e.changedTouches[0]), o = ("touchmove" === e.type ? r : e).pageX, r = ("touchmove" === e.type ? r : e).pageY; if (e.preventedByNestedSwiper) s.startX = o, s.startY = r; else if (t.allowTouchMove) { if (a.isTouchEvent && i.touchReleaseOnEdges && !i.loop) if (t.isVertical()) { if (r < s.startY && t.translate <= t.maxTranslate() || r > s.startY && t.translate >= t.minTranslate()) return a.isTouched = !1, void(a.isMoved = !1) } else if (o < s.startX && t.translate <= t .maxTranslate() || o > s.startX && t.translate >= t .minTranslate()) return; if (a.isTouchEvent && c.activeElement && e.target === c .activeElement && E(e.target).is(a.formElements)) a .isMoved = !0, t.allowClick = !1; else if (a.allowTouchCallbacks && t.emit("touchMove", e), !(e .targetTouches && 1 < e.targetTouches.length)) { s.currentX = o, s.currentY = r; var l = s.currentX - s.startX, d = s.currentY - s.startY; if (!(t.params.threshold && Math.sqrt(Math.pow(l, 2) + Math .pow(d, 2)) < t.params.threshold)) if (void 0 === a.isScrolling && (t.isHorizontal() && s .currentY === s.startY || t.isVertical() && s .currentX === s.startX ? a.isScrolling = !1 : 25 <= l * l + d * d && (p = 180 * Math.atan2( Math.abs(d), Math.abs(l)) / Math.PI, a .isScrolling = t.isHorizontal() ? p > i .touchAngle : 90 - p > i.touchAngle)), a .isScrolling && t.emit("touchMoveOpposite", e), void 0 !== a.startMoving || s.currentX === s .startX && s.currentY === s.startY || (a .startMoving = !0), a.isScrolling) a .isTouched = !1; else if (a.startMoving) { t.allowClick = !1, e.preventDefault(), i .touchMoveStopPropagation && !i.nested && e .stopPropagation(), a.isMoved || (i.loop && t .loopFix(), a.startTranslate = t.getTranslate(), t.setTransition(0), t.animating && t.$wrapperEl .trigger("webkitTransitionEnd transitionend"), a .allowMomentumBounce = !1, !i.grabCursor || ! 0 !== t.allowSlideNext && !0 !== t .allowSlidePrev || t.setGrabCursor(!0), t.emit( "sliderFirstMove", e)), t.emit("sliderMove", e), a.isMoved = !0; var p = t.isHorizontal() ? l : d, l = (s.diff = p, p *= i.touchRatio, t .swipeDirection = 0 < (p = n ? -p : p) ? "prev" : "next", a.currentTranslate = p + a .startTranslate, !0), d = i.resistanceRatio; if (i.touchReleaseOnEdges && (d = 0), 0 < p && a .currentTranslate > t.minTranslate() ? (l = !1, i .resistance && (a.currentTranslate = t .minTranslate() - 1 + Math.pow(-t .minTranslate() + a.startTranslate + p, d))) : p < 0 && a.currentTranslate < t .maxTranslate() && (l = !1, i.resistance) && (a .currentTranslate = t.maxTranslate() + 1 - Math .pow(t.maxTranslate() - a.startTranslate - p, d) ), l && (e.preventedByNestedSwiper = !0), !t .allowSlideNext && "next" === t.swipeDirection && a .currentTranslate < a.startTranslate && (a .currentTranslate = a.startTranslate), !t .allowSlidePrev && "prev" === t.swipeDirection && a .currentTranslate > a.startTranslate && (a .currentTranslate = a.startTranslate), 0 < i .threshold) { if (!(Math.abs(p) > i.threshold || a .allowThresholdMove)) return void(a .currentTranslate = a.startTranslate); if (!a.allowThresholdMove) return a .allowThresholdMove = !0, s.startX = s .currentX, s.startY = s.currentY, a .currentTranslate = a.startTranslate, void(s .diff = t.isHorizontal() ? s.currentX - s.startX : s.currentY - s.startY) } i.followFinger && ((i.freeMode || i .watchSlidesProgress || i .watchSlidesVisibility) && (t .updateActiveIndex(), t .updateSlidesClasses()), i.freeMode && ( 0 === a.velocities.length && a.velocities .push({ position: s[t.isHorizontal() ? "startX" : "startY"], time: a.touchStartTime }), a.velocities.push({ position: s[t.isHorizontal() ? "currentX" : "currentY"], time: q.now() })), t.updateProgress(a.currentTranslate), t .setTranslate(a.currentTranslate)) } } } else t.allowClick = !1, a.isTouched && (q.extend(s, { startX: o, startY: r, currentX: o, currentY: r }), a.touchStartTime = q.now()) } } else a.startMoving && a.isScrolling && t.emit("touchMoveOpposite", e) }.bind(t), t.onTouchEnd = function(e) { var t = this, a = t.touchEventsData, i = t.params, s = t.touches, n = t.rtlTranslate, r = t.$wrapperEl, o = t.slidesGrid, l = t.snapGrid, d = e; if (d.originalEvent && (d = d.originalEvent), a.allowTouchCallbacks && t .emit("touchEnd", d), a.allowTouchCallbacks = !1, a.isTouched) { i.grabCursor && a.isMoved && a.isTouched && (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) && t.setGrabCursor(!1); var p, e = q.now(), c = e - a.touchStartTime; if (t.allowClick && (t.updateClickedSlide(d), t.emit("tap", d), c < 300 && 300 < e - a.lastClickTime && (a.clickTimeout && clearTimeout(a.clickTimeout), a.clickTimeout = q.nextTick( function() { t && !t.destroyed && t.emit("click", d) }, 300)), c < 300) && e - a.lastClickTime < 300 && (a .clickTimeout && clearTimeout(a.clickTimeout), t.emit( "doubleTap", d)), a.lastClickTime = q.now(), q.nextTick( function() { t.destroyed || (t.allowClick = !0) }), a.isTouched && a.isMoved && t.swipeDirection && 0 !== s .diff && a.currentTranslate !== a.startTranslate) if (a.isTouched = !1, a.isMoved = !1, a.startMoving = !1, p = i .followFinger ? n ? t.translate : -t.translate : -a .currentTranslate, i.freeMode) if (p < -t.minTranslate()) t.slideTo(t.activeIndex); else if (p > -t.maxTranslate()) t.slides.length < l.length ? t .slideTo(l.length - 1) : t.slideTo(t.slides.length - 1); else { if (i.freeModeMomentum) { (!(1 < a.velocities.length) || (e = a.velocities.pop(), s = a .velocities.pop(), u = e.position - s.position, s = e .time - s.time, t.velocity = u / s, t.velocity /= 2, Math.abs(t.velocity) < i.freeModeMinimumVelocity && (t .velocity = 0), 150 < s) || 300 < q.now() - e.time) && ( t.velocity = 0), t.velocity *= i .freeModeMomentumVelocityRatio, a.velocities.length = 0; var u = 1e3 * i.freeModeMomentumRatio, s = t.velocity * u, h = t.translate + s; n && (h = -h); var m, v, e = !1, s = 20 * Math.abs(t.velocity) * i .freeModeMomentumBounceRatio; if (h < t.maxTranslate()) i.freeModeMomentumBounce ? (h + t .maxTranslate() < -s && (h = t.maxTranslate() - s), m = t.maxTranslate(), a.allowMomentumBounce = e = !0) : h = t.maxTranslate(), i.loop && i.centeredSlides && (v = !0); else if (h > t.minTranslate()) i.freeModeMomentumBounce ? (h - t .minTranslate() > s && (h = t.minTranslate() + s), m = t .minTranslate(), a.allowMomentumBounce = e = !0) : h = t .minTranslate(), i.loop && i.centeredSlides && (v = !0); else if (i.freeModeSticky) { for (var f, g = 0; g < l.length; g += 1) if (l[g] > -h) { f = g; break } h = -(Math.abs(l[f] - h) < Math.abs(l[f - 1] - h) || "next" === t.swipeDirection ? l[f] : l[f - 1]) } if (v && t.once("transitionEnd", function() { t.loopFix() }), 0 !== t.velocity) u = n ? Math.abs((-h - t.translate) / t.velocity) : Math.abs((h - t.translate) / t.velocity); else if (i.freeModeSticky) return void t.slideToClosest(); i.freeModeMomentumBounce && e ? (t.updateProgress(m), t .setTransition(u), t.setTranslate(h), t.transitionStart( !0, t.swipeDirection), t.animating = !0, r .transitionEnd(function() { t && !t.destroyed && a.allowMomentumBounce && (t .emit("momentumBounce"), t .setTransition(i.speed), t.setTranslate( m), r.transitionEnd(function() { t && !t.destroyed && t .transitionEnd() })) })) : t.velocity ? (t.updateProgress(h), t .setTransition(u), t.setTranslate(h), t.transitionStart( !0, t.swipeDirection), t.animating || (t .animating = !0, r.transitionEnd(function() { t && !t.destroyed && t.transitionEnd() }))) : t.updateProgress(h), t.updateActiveIndex(), t .updateSlidesClasses() } else if (i.freeModeSticky) return void t.slideToClosest(); (!i.freeModeMomentum || c >= i.longSwipesMs) && (t.updateProgress(), t.updateActiveIndex(), t.updateSlidesClasses()) } else { for (var b = 0, w = t.slidesSizesGrid[0], y = 0; y < o.length; y += i.slidesPerGroup) void 0 !== o[y + i.slidesPerGroup] ? p >= o[ y] && p < o[y + i.slidesPerGroup] && (w = o[(b = y) + i .slidesPerGroup] - o[y]) : p >= o[y] && (b = y, w = o[o .length - 1] - o[o.length - 2]); s = (p - o[b]) / w; c > i.longSwipesMs ? i.longSwipes ? ("next" === t.swipeDirection && (s >= i.longSwipesRatio ? t.slideTo(b + i.slidesPerGroup) : t.slideTo(b)), "prev" === t.swipeDirection && (s > 1 - i .longSwipesRatio ? t.slideTo(b + i.slidesPerGroup) : t .slideTo(b))) : t.slideTo(t.activeIndex) : i .shortSwipes ? ("next" === t.swipeDirection && t.slideTo(b + i .slidesPerGroup), "prev" === t.swipeDirection && t .slideTo(b)) : t.slideTo(t.activeIndex) } else a.isTouched = !1, a.isMoved = !1, a.startMoving = !1 } else a.isMoved && i.grabCursor && t.setGrabCursor(!1), a.isMoved = !1, a .startMoving = !1 }.bind(t), t.onClick = function(e) { this.allowClick || (this.params.preventClicks && e.preventDefault(), this .params.preventClicksPropagation && this.animating && (e .stopPropagation(), e.stopImmediatePropagation())) }.bind(t), "container" === a.touchEventsTarget ? s : n), n = !!a.nested; W.touch || !W.pointerEvents && !W.prefixedPointerEvents ? (W.touch && (e = !( "touchstart" !== i.start || !W.passiveListener || !a.passiveListeners ) && { passive: !0, capture: !1 }, s.addEventListener(i.start, t.onTouchStart, e), s.addEventListener(i .move, t.onTouchMove, W.passiveListener ? { passive: !1, capture: n } : n), s.addEventListener(i.end, t.onTouchEnd, e), H || (c .addEventListener("touchstart", G), H = !0)), (a.simulateTouch && !o .ios && !o.android || a.simulateTouch && !W.touch && o.ios) && (s .addEventListener("mousedown", t.onTouchStart, !1), c.addEventListener( "mousemove", t.onTouchMove, n), c.addEventListener("mouseup", t .onTouchEnd, !1))) : (s.addEventListener(i.start, t.onTouchStart, !1), c .addEventListener(i.move, t.onTouchMove, n), c.addEventListener(i.end, t .onTouchEnd, !1)), (a.preventClicks || a.preventClicksPropagation) && s .addEventListener("click", t.onClick, !0), t.on(o.ios || o.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", A, !0) }, detachEvents: function() { var e, t = this, a = t.params, i = t.touchEvents, s = t.el, n = t.wrapperEl, s = "container" === a.touchEventsTarget ? s : n, n = !!a.nested; W.touch || !W.pointerEvents && !W.prefixedPointerEvents ? (W.touch && (e = !( "onTouchStart" !== i.start || !W.passiveListener || !a.passiveListeners ) && { passive: !0, capture: !1 }, s.removeEventListener(i.start, t.onTouchStart, e), s.removeEventListener( i.move, t.onTouchMove, n), s.removeEventListener(i.end, t.onTouchEnd, e) ), (a.simulateTouch && !o.ios && !o.android || a.simulateTouch && !W .touch && o.ios) && (s.removeEventListener("mousedown", t.onTouchStart, !1), c.removeEventListener("mousemove", t.onTouchMove, n), c.removeEventListener( "mouseup", t.onTouchEnd, !1))) : (s.removeEventListener(i.start, t .onTouchStart, !1), c.removeEventListener(i.move, t.onTouchMove, n), c .removeEventListener(i.end, t.onTouchEnd, !1)), (a.preventClicks || a .preventClicksPropagation) && s.removeEventListener("click", t.onClick, !0), t .off(o.ios || o.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", A) } }, breakpoints: { setBreakpoint: function() { var e, a, t, i = this, s = i.activeIndex, n = i.initialized, r = i.loopedSlides, o = (void 0 === r && (r = 0), i.params), l = o.breakpoints; l && 0 !== Object.keys(l).length && (e = i.getBreakpoint(l)) && i.currentBreakpoint !== e && ((a = e in l ? l[e] : void 0) && ["slidesPerView", "spaceBetween", "slidesPerGroup" ].forEach(function(e) { var t = a[e]; void 0 !== t && (a[e] = "slidesPerView" !== e || "AUTO" !== t && "auto" !== t ? "slidesPerView" === e ? parseFloat(t) : parseInt( t, 10) : "auto") }), t = (l = a || i.originalParams).direction && l.direction !== o.direction, o = o.loop && (l.slidesPerView !== o.slidesPerView || t), t && n && i .changeDirection(), q.extend(i.params, l), q.extend(i, { allowTouchMove: i.params.allowTouchMove, allowSlideNext: i.params.allowSlideNext, allowSlidePrev: i.params.allowSlidePrev }), i.currentBreakpoint = e, o && n && (i.loopDestroy(), i.loopCreate(), i .updateSlides(), i.slideTo(s - r + i.loopedSlides, 0, !1)), i.emit( "breakpoint", l)) }, getBreakpoint: function(e) { if (e) { var t = !1, a = []; Object.keys(e).forEach(function(e) { a.push(e) }), a.sort(function(e, t) { return parseInt(e, 10) - parseInt(t, 10) }); for (var i = 0; i < a.length; i += 1) { var s = a[i]; this.params.breakpointsInverse ? s <= R.innerWidth && (t = s) : s >= R .innerWidth && !t && (t = s) } return t || "max" } } }, checkOverflow: { checkOverflow: function() { var e = this, t = e.isLocked; e.isLocked = 1 === e.snapGrid.length, e.allowSlideNext = !e.isLocked, e .allowSlidePrev = !e.isLocked, t !== e.isLocked && e.emit(e.isLocked ? "lock" : "unlock"), t && t !== e.isLocked && (e.isEnd = !1, e.navigation.update()) } }, classes: { addClasses: function() { var t = this.classNames, a = this.params, e = this.rtl, i = this.$el, s = []; s.push("initialized"), s.push(a.direction), a.freeMode && s.push("free-mode"), W .flexbox || s.push("no-flexbox"), a.autoHeight && s.push("autoheight"), e && s.push( "rtl"), 1 < a.slidesPerColumn && s.push("multirow"), o.android && s.push( "android"), o.ios && s.push("ios"), (j.isIE || j.isEdge) && (W.pointerEvents || W.prefixedPointerEvents) && s.push("wp8-" + a.direction), s.forEach(function( e) { t.push(a.containerModifierClass + e) }), i.addClass(t.join(" ")) }, removeClasses: function() { var e = this.$el, t = this.classNames; e.removeClass(t.join(" ")) } }, images: { loadImage: function(e, t, a, i, s, n) { function r() { n && n() }(!e.complete || !s) && t ? ((e = new R.Image).onload = r, e.onerror = r, i && (e .sizes = i), a && (e.srcset = a), t && (e.src = t)) : r() }, preloadImages: function() { var e = this; function t() { null != e && e && !e.destroyed && (void 0 !== e.imagesLoaded && (e.imagesLoaded += 1), e.imagesLoaded === e.imagesToLoad.length) && (e.params .updateOnImagesReady && e.update(), e.emit("imagesReady")) } e.imagesToLoad = e.$el.find("img"); for (var a = 0; a < e.imagesToLoad.length; a += 1) { var i = e.imagesToLoad[a]; e.loadImage(i, i.currentSrc || i.getAttribute("src"), i.srcset || i.getAttribute( "srcset"), i.sizes || i.getAttribute("sizes"), !0, t) } } } }, B = {}, h = ((d = e) && (T.__proto__ = d), p = { extendedDefaults: { configurable: !0 }, defaults: { configurable: !0 }, Class: { configurable: !0 }, $: { configurable: !0 } }, ((T.prototype = Object.create(d && d.prototype)).constructor = T).prototype .slidesPerViewDynamic = function() { var e = this, t = e.params, a = e.slides, i = e.slidesGrid, s = e.size, n = e.activeIndex, r = 1; if (t.centeredSlides) { for (var o, l = a[n].swiperSlideSize, d = n + 1; d < a.length; d += 1) a[d] && !o && (r += 1, s < (l += a[d].swiperSlideSize)) && (o = !0); for (var p = n - 1; 0 <= p; --p) a[p] && !o && (r += 1, s < (l += a[p].swiperSlideSize)) && (o = !0) } else for (var c = n + 1; c < a.length; c += 1) i[c] - i[n] < s && (r += 1); return r }, T.prototype.update = function() { var e, t, a = this; function i() { var e = a.rtlTranslate ? -1 * a.translate : a.translate, e = Math.min(Math.max(e, a.maxTranslate()), a.minTranslate()); a.setTranslate(e), a.updateActiveIndex(), a.updateSlidesClasses() } a && !a.destroyed && (e = a.snapGrid, (t = a.params).breakpoints && a.setBreakpoint(), a .updateSize(), a.updateSlides(), a.updateProgress(), a.updateSlidesClasses(), a.params .freeMode ? (i(), a.params.autoHeight && a.updateAutoHeight()) : (("auto" === a.params .slidesPerView || 1 < a.params.slidesPerView) && a.isEnd && !a.params .centeredSlides ? a.slideTo(a.slides.length - 1, 0, !1, !0) : a.slideTo(a .activeIndex, 0, !1, !0)) || i(), t.watchOverflow && e !== a.snapGrid && a .checkOverflow(), a.emit("update")) }, T.prototype.changeDirection = function(a, e) { void 0 === e && (e = !0); var t = this, i = t.params.direction; return (a = a || ("horizontal" === i ? "vertical" : "horizontal")) === i || "horizontal" !== a && "vertical" !== a || (t.$el.removeClass("" + t.params.containerModifierClass + i + " wp8-" + i).addClass("" + t.params.containerModifierClass + a), (j.isIE || j .isEdge) && (W.pointerEvents || W.prefixedPointerEvents) && t.$el.addClass(t.params .containerModifierClass + "wp8-" + a), t.params.direction = a, t.slides.each( function(e, t) { "vertical" === a ? t.style.width = "" : t.style.height = "" }), t.emit("changeDirection"), e && t.update()), t }, T.prototype.init = function() { var e = this; e.initialized || (e.emit("beforeInit"), e.params.breakpoints && e.setBreakpoint(), e .addClasses(), e.params.loop && e.loopCreate(), e.updateSize(), e.updateSlides(), e .params.watchOverflow && e.checkOverflow(), e.params.grabCursor && e.setGrabCursor(), e .params.preloadImages && e.preloadImages(), e.params.loop ? e.slideTo(e.params .initialSlide + e.loopedSlides, 0, e.params.runCallbacksOnInit) : e.slideTo(e.params .initialSlide, 0, e.params.runCallbacksOnInit), e.attachEvents(), e.initialized = ! 0, e.emit("init")) }, T.prototype.destroy = function(e, t) { void 0 === e && (e = !0), void 0 === t && (t = !0); var a = this, i = a.params, s = a.$el, n = a.$wrapperEl, r = a.slides; return void 0 === a.params || a.destroyed || (a.emit("beforeDestroy"), a.initialized = !1, a .detachEvents(), i.loop && a.loopDestroy(), t && (a.removeClasses(), s.removeAttr( "style"), n.removeAttr("style"), r) && r.length && r.removeClass([i .slideVisibleClass, i.slideActiveClass, i.slideNextClass, i.slidePrevClass ].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index").removeAttr( "data-swiper-column").removeAttr("data-swiper-row"), a.emit("destroy"), Object.keys( a.eventsListeners).forEach(function(e) { a.off(e) }), !1 !== e && (a.$el[0].swiper = null, a.$el.data("swiper", null), q.deleteProps(a)), a.destroyed = !0), null }, T.extendDefaults = function(e) { q.extend(B, e) }, p.extendedDefaults.get = function() { return B }, p.defaults.get = function() { return N }, p.Class.get = function() { return d }, p.$.get = function() { return E }, Object.defineProperties(T, p), T), m = { name: "device", proto: { device: o }, static: { device: o } }, v = { name: "support", proto: { support: W }, static: { support: W } }, f = { name: "browser", proto: { browser: j }, static: { browser: j } }, g = { name: "resize", create: function() { var e = this; q.extend(e, { resize: { resizeHandler: function() { e && !e.destroyed && e.initialized && (e.emit("beforeResize"), e .emit("resize")) }, orientationChangeHandler: function() { e && !e.destroyed && e.initialized && e.emit("orientationchange") } } }) }, on: { init: function() { R.addEventListener("resize", this.resize.resizeHandler), R.addEventListener( "orientationchange", this.resize.orientationChangeHandler) }, destroy: function() { R.removeEventListener("resize", this.resize.resizeHandler), R.removeEventListener( "orientationchange", this.resize.orientationChangeHandler) } } }, b = { func: R.MutationObserver || R.WebkitMutationObserver, attach: function(e, t) { void 0 === t && (t = {}); var a = this, i = new b.func(function(e) { var t; 1 !== e.length ? (t = function() { a.emit("observerUpdate", e[0]) }, R.requestAnimationFrame ? R.requestAnimationFrame(t) : R.setTimeout( t, 0)) : a.emit("observerUpdate", e[0]) }); i.observe(e, { attributes: void 0 === t.attributes || t.attributes, childList: void 0 === t.childList || t.childList, characterData: void 0 === t.characterData || t.characterData }), a.observer.observers.push(i) }, init: function() { var e = this; if (W.observer && e.params.observer) { if (e.params.observeParents) for (var t = e.$el.parents(), a = 0; a < t.length; a += 1) e.observer.attach(t[a]); e.observer.attach(e.$el[0], { childList: e.params.observeSlideChildren }), e.observer.attach(e.$wrapperEl[0], { attributes: !1 }) } }, destroy: function() { this.observer.observers.forEach(function(e) { e.disconnect() }), this.observer.observers = [] } }, w = { name: "observer", params: { observer: !1, observeParents: !1, observeSlideChildren: !1 }, create: function() { q.extend(this, { observer: { init: b.init.bind(this), attach: b.attach.bind(this), destroy: b.destroy.bind(this), observers: [] } }) }, on: { init: function() { this.observer.init() }, destroy: function() { this.observer.destroy() } } }, y = { update: function(e) { var t = this, a = t.params, i = a.slidesPerView, s = a.slidesPerGroup, a = a.centeredSlides, n = t.params.virtual, r = n.addSlidesBefore, n = n.addSlidesAfter, o = t.virtual, l = o.from, d = o.to, p = o.slides, c = o.slidesGrid, u = o.renderSlide, o = o.offset; t.updateActiveIndex(); var h, m = t.activeIndex || 0, v = t.rtlTranslate ? "right" : t.isHorizontal() ? "left" : "top", a = a ? (h = Math.floor(i / 2) + s + r, Math.floor(i / 2) + s + n) : (h = i + (s - 1) + r, s + n), f = Math.max((m || 0) - a, 0), g = Math.min((m || 0) + h, p.length - 1), i = (t.slidesGrid[f] || 0) - (t.slidesGrid[0] || 0); function b() { t.updateSlides(), t.updateProgress(), t.updateSlidesClasses(), t.lazy && t.params.lazy .enabled && t.lazy.load() } if (q.extend(t.virtual, { from: f, to: g, offset: i, slidesGrid: t.slidesGrid }), l !== f || d !== g || e) { if (t.params.virtual.renderExternal) t.params.virtual.renderExternal.call(t, { offset: i, from: f, to: g, slides: function() { for (var e = [], t = f; t <= g; t += 1) e.push(p[t]); return e }() }); else { var w = [], y = []; if (e) t.$wrapperEl.find("." + t.params.slideClass).remove(); else for (var x = l; x <= d; x += 1)(x < f || g < x) && t.$wrapperEl.find("." + t .params.slideClass + '[data-swiper-slide-index="' + x + '"]').remove(); for (var T = 0; T < p.length; T += 1) f <= T && T <= g && (void 0 === d || e ? y .push(T) : (d < T && y.push(T), T < l && w.push(T))); y.forEach(function(e) { t.$wrapperEl.append(u(p[e], e)) }), w.sort(function(e, t) { return t - e }).forEach(function(e) { t.$wrapperEl.prepend(u(p[e], e)) }), t.$wrapperEl.children(".swiper-slide").css(v, i + "px") } b() } else t.slidesGrid !== c && i !== o && t.slides.css(v, i + "px"), t.updateProgress() }, renderSlide: function(e, t) { var a = this, i = a.params.virtual; return i.cache && a.virtual.cache[t] ? a.virtual.cache[t] : ((e = i.renderSlide ? E(i .renderSlide.call(a, e, t)) : E('
' + e + "
")).attr( "data-swiper-slide-index") || e.attr("data-swiper-slide-index", t), i.cache && ( a.virtual.cache[t] = e), e) }, appendSlide: function(e) { if ("object" == typeof e && "length" in e) for (var t = 0; t < e.length; t += 1) e[t] && this.virtual.slides.push(e[t]); else this.virtual.slides.push(e); this.virtual.update(!0) }, prependSlide: function(e) { var t, a, i = this, s = i.activeIndex, n = s + 1, r = 1; if (Array.isArray(e)) { for (var o = 0; o < e.length; o += 1) e[o] && i.virtual.slides.unshift(e[o]); n = s + e.length, r = e.length } else i.virtual.slides.unshift(e); i.params.virtual.cache && (t = i.virtual.cache, a = {}, Object.keys(t).forEach(function(e) { a[parseInt(e, 10) + r] = t[e] }), i.virtual.cache = a), i.virtual.update(!0), i.slideTo(n, 0) }, removeSlide: function(e) { var t = this; if (null != e) { var a = t.activeIndex; if (Array.isArray(e)) for (var i = e.length - 1; 0 <= i; --i) t.virtual.slides.splice(e[i], 1), t.params .virtual.cache && delete t.virtual.cache[e[i]], e[i] < a && --a, a = Math.max(a, 0); else t.virtual.slides.splice(e, 1), t.params.virtual.cache && delete t.virtual.cache[e], e < a && --a, a = Math.max(a, 0); t.virtual.update(!0), t.slideTo(a, 0) } }, removeAllSlides: function() { var e = this; e.virtual.slides = [], e.params.virtual.cache && (e.virtual.cache = {}), e.virtual.update(! 0), e.slideTo(0, 0) } }, x = { name: "virtual", params: { virtual: { enabled: !1, slides: [], cache: !0, renderSlide: null, renderExternal: null, addSlidesBefore: 0, addSlidesAfter: 0 } }, create: function() { var e = this; q.extend(e, { virtual: { update: y.update.bind(e), appendSlide: y.appendSlide.bind(e), prependSlide: y.prependSlide.bind(e), removeSlide: y.removeSlide.bind(e), removeAllSlides: y.removeAllSlides.bind(e), renderSlide: y.renderSlide.bind(e), slides: e.params.virtual.slides, cache: {} } }) }, on: { beforeInit: function() { var e, t = this; t.params.virtual.enabled && (t.classNames.push(t.params.containerModifierClass + "virtual"), q.extend(t.params, e = { watchSlidesProgress: !0 }), q.extend(t.originalParams, e), t.params.initialSlide || t.virtual.update()) }, setTranslate: function() { this.params.virtual.enabled && this.virtual.update() } } }, V = { handle: function(e) { var t = this, a = t.rtlTranslate, i = (e = e.originalEvent ? e.originalEvent : e).keyCode || e.charCode; if (!t.allowSlideNext && (t.isHorizontal() && 39 === i || t.isVertical() && 40 === i || 34 === i)) return !1; if (!t.allowSlidePrev && (t.isHorizontal() && 37 === i || t.isVertical() && 38 === i || 33 === i)) return !1; if (!(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || c.activeElement && c.activeElement .nodeName && ("input" === c.activeElement.nodeName.toLowerCase() || "textarea" === c .activeElement.nodeName.toLowerCase()))) { if (t.params.keyboard.onlyInViewport && (33 === i || 34 === i || 37 === i || 39 === i || 38 === i || 40 === i)) { var s = !1; if (0 < t.$el.parents("." + t.params.slideClass).length && 0 === t.$el.parents("." + t.params.slideActiveClass).length) return; var n = R.innerWidth, r = R.innerHeight, o = t.$el.offset(); a && (o.left -= t.$el[0].scrollLeft); for (var l = [ [o.left, o.top], [o.left + t.width, o.top], [o.left, o.top + t.height], [o.left + t.width, o.top + t.height] ], d = 0; d < l.length; d += 1) { var p = l[d]; 0 <= p[0] && p[0] <= n && 0 <= p[1] && p[1] <= r && (s = !0) } if (!s) return } t.isHorizontal() ? (33 !== i && 34 !== i && 37 !== i && 39 !== i || (e.preventDefault ? e.preventDefault() : e.returnValue = !1), (34 !== i && 39 !== i || a) && ( 33 !== i && 37 !== i || !a) || t.slideNext(), (33 !== i && 37 !== i || a) && (34 !== i && 39 !== i || !a) || t.slidePrev()) : (33 !== i && 34 !== i && 38 !== i && 40 !== i || (e.preventDefault ? e.preventDefault() : e.returnValue = !1), 34 !== i && 40 !== i || t.slideNext(), 33 !== i && 38 !== i || t.slidePrev()), t .emit("keyPress", i) } }, enable: function() { this.keyboard.enabled || (E(c).on("keydown", this.keyboard.handle), this.keyboard .enabled = !0) }, disable: function() { this.keyboard.enabled && (E(c).off("keydown", this.keyboard.handle), this.keyboard .enabled = !1) } }, t = { name: "keyboard", params: { keyboard: { enabled: !1, onlyInViewport: !0 } }, create: function() { q.extend(this, { keyboard: { enabled: !1, enable: V.enable.bind(this), disable: V.disable.bind(this), handle: V.handle.bind(this) } }) }, on: { init: function() { this.params.keyboard.enabled && this.keyboard.enable() }, destroy: function() { this.keyboard.enabled && this.keyboard.disable() } } }; function T() { for (var a, e = [], t = arguments.length; t--;) e[t] = arguments[t]; a = (1 === e.length && e[0].constructor && e[0].constructor === Object ? e[0] : (r = e[0], e[1])) || {}, a = q.extend({}, a), r && !a.el && (a.el = r), d.call(this, a), Object.keys(u).forEach(function(t) { Object.keys(u[t]).forEach(function(e) { T.prototype[e] || (T.prototype[e] = u[t][e]) }) }); var i, s = this, n = (void 0 === s.modules && (s.modules = {}), Object.keys(s.modules).forEach(function(e) { var t, e = s.modules[e]; e.params && (t = Object.keys(e.params)[0], "object" == typeof(e = e.params[t])) && null !== e && t in a && "enabled" in e && (!0 === a[t] && (a[t] = { enabled: !0 }), "object" != typeof a[t] || "enabled" in a[t] || (a[t].enabled = !0), a[t] || (a[t] = { enabled: !1 })) }), q.extend({}, N)), n = (s.useModulesParams(n), s.params = q.extend({}, n, B, a), s.originalParams = q.extend({}, s .params), s.passedParams = q.extend({}, a), (s.$ = E)(s.params.el)); if (r = n[0]) { if (1 < n.length) return i = [], n.each(function(e, t) { t = q.extend({}, a, { el: t }); i.push(new T(t)) }), i; r.swiper = s, n.data("swiper", s); var r, o = n.children("." + s.params.wrapperClass); return q.extend(s, { $el: n, el: r, $wrapperEl: o, wrapperEl: o[0], classNames: [], slides: E(), slidesGrid: [], snapGrid: [], slidesSizesGrid: [], isHorizontal: function() { return "horizontal" === s.params.direction }, isVertical: function() { return "vertical" === s.params.direction }, rtl: "rtl" === r.dir.toLowerCase() || "rtl" === n.css("direction"), rtlTranslate: "horizontal" === s.params.direction && ("rtl" === r.dir.toLowerCase() || "rtl" === n.css("direction")), wrongRTL: "-webkit-box" === o.css("display"), activeIndex: 0, realIndex: 0, isBeginning: !0, isEnd: !1, translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: !1, allowSlideNext: s.params.allowSlideNext, allowSlidePrev: s.params.allowSlidePrev, touchEvents: (r = ["mousedown", "mousemove", "mouseup"], W.pointerEvents ? r = [ "pointerdown", "pointermove", "pointerup" ] : W.prefixedPointerEvents && (r = ["MSPointerDown", "MSPointerMove", "MSPointerUp" ]), s.touchEventsTouch = { start: (n = ["touchstart", "touchmove", "touchend"])[0], move: n[1], end: n[2] }, s.touchEventsDesktop = { start: r[0], move: r[1], end: r[2] }, W.touch || !s.params.simulateTouch ? s.touchEventsTouch : s .touchEventsDesktop), touchEventsData: { isTouched: void 0, isMoved: void 0, allowTouchCallbacks: void 0, touchStartTime: void 0, isScrolling: void 0, currentTranslate: void 0, startTranslate: void 0, allowThresholdMove: void 0, formElements: "input, select, option, textarea, button, video", lastClickTime: q.now(), clickTimeout: void 0, velocities: [], allowMomentumBounce: void 0, isTouchEvent: void 0, startMoving: void 0 }, allowClick: !0, allowTouchMove: s.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, imagesToLoad: [], imagesLoaded: 0 }), s.useModules(), s.params.init && s.init(), s } } var S = { lastScrollTime: q.now(), event: -1 < R.navigator.userAgent.indexOf("firefox") ? "DOMMouseScroll" : ((s = (a = "onwheel") in c) || ((r = c.createElement("div")).setAttribute(a, "return;"), s = "function" == typeof r[a]), (s = !s && c.implementation && c.implementation.hasFeature && !0 !== c .implementation.hasFeature("", "") ? c.implementation.hasFeature("Events.wheel", "3.0") : s) ? "wheel" : "mousewheel"), normalize: function(e) { var t = 0, a = 0, i = 0, s = 0; return "detail" in e && (a = e.detail), "wheelDelta" in e && (a = -e.wheelDelta / 120), "wheelDeltaY" in e && (a = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e .wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (t = a, a = 0), i = 10 * t, s = 10 * a, "deltaY" in e && (s = e.deltaY), ((i = "deltaX" in e ? e .deltaX : i) || s) && e.deltaMode && (1 === e.deltaMode ? (i *= 40, s *= 40) : (i *= 800, s *= 800)), { spinX: t = i && !t ? i < 1 ? -1 : 1 : t, spinY: a = s && !a ? s < 1 ? -1 : 1 : a, pixelX: i, pixelY: s } }, handleMouseEnter: function() { this.mouseEntered = !0 }, handleMouseLeave: function() { this.mouseEntered = !1 }, handle: function(e) { var t = this, a = t.params.mousewheel; if (!t.mouseEntered && !a.releaseOnEdges) return !0; e.originalEvent && (e = e.originalEvent); var i = 0, s = t.rtlTranslate ? -1 : 1, n = S.normalize(e); if (a.forceToAxis) if (t.isHorizontal()) { if (!(Math.abs(n.pixelX) > Math.abs(n.pixelY))) return !0; i = n.pixelX * s } else { if (!(Math.abs(n.pixelY) > Math.abs(n.pixelX))) return !0; i = n.pixelY } else i = Math.abs(n.pixelX) > Math.abs(n.pixelY) ? -n.pixelX * s : -n.pixelY; if (0 === i) return !0; if (a.invert && (i = -i), t.params.freeMode) { t.params.loop && t.loopFix(); var s = t.getTranslate() + i * a.sensitivity, n = t.isBeginning, r = t.isEnd; if ((s = s >= t.minTranslate() ? t.minTranslate() : s) <= t.maxTranslate() && (s = t .maxTranslate()), t.setTransition(0), t.setTranslate(s), t.updateProgress(), t .updateActiveIndex(), t.updateSlidesClasses(), (!n && t.isBeginning || !r && t .isEnd) && t.updateSlidesClasses(), t.params.freeModeSticky && (clearTimeout(t .mousewheel.timeout), t.mousewheel.timeout = q.nextTick(function() { t.slideToClosest() }, 300)), t.emit("scroll", e), t.params.autoplay && t.params .autoplayDisableOnInteraction && t.autoplay.stop(), s === t.minTranslate() || s === t.maxTranslate()) return !0 } else { if (60 < q.now() - t.mousewheel.lastScrollTime) if (i < 0) if (t.isEnd && !t.params.loop || t.animating) { if (a.releaseOnEdges) return !0 } else t.slideNext(), t.emit("scroll", e); else if (t.isBeginning && !t.params.loop || t.animating) { if (a.releaseOnEdges) return !0 } else t.slidePrev(), t.emit("scroll", e); t.mousewheel.lastScrollTime = (new R.Date).getTime() } return e.preventDefault ? e.preventDefault() : e.returnValue = !1, !1 }, enable: function() { var e, t = this; return !!S.event && !t.mousewheel.enabled && (e = t.$el, (e = "container" !== t.params .mousewheel.eventsTarged ? E(t.params.mousewheel.eventsTarged) : e).on( "mouseenter", t.mousewheel.handleMouseEnter), e.on("mouseleave", t.mousewheel .handleMouseLeave), e.on(S.event, t.mousewheel.handle), t.mousewheel.enabled = ! 0) }, disable: function() { var e, t = this; return !!S.event && !(!t.mousewheel.enabled || (e = t.$el, (e = "container" !== t.params .mousewheel.eventsTarged ? E(t.params.mousewheel.eventsTarged) : e).off(S .event, t.mousewheel.handle), t.mousewheel.enabled = !1)) } }, C = { update: function() { var e, t, a = this, i = a.params.navigation; a.params.loop || (e = (t = a.navigation).$nextEl, (t = t.$prevEl) && 0 < t.length && (a .isBeginning ? t.addClass(i.disabledClass) : t.removeClass(i.disabledClass), t[a .params.watchOverflow && a.isLocked ? "addClass" : "removeClass"](i .lockClass)), e && 0 < e.length && (a.isEnd ? e.addClass(i.disabledClass) : e.removeClass(i.disabledClass), e[a.params.watchOverflow && a.isLocked ? "addClass" : "removeClass"](i.lockClass))) }, onPrevClick: function(e) { e.preventDefault(), this.isBeginning && !this.params.loop || this.slidePrev() }, onNextClick: function(e) { e.preventDefault(), this.isEnd && !this.params.loop || this.slideNext() }, init: function() { var e, t, a = this, i = a.params.navigation; (i.nextEl || i.prevEl) && (i.nextEl && (e = E(i.nextEl), a.params.uniqueNavElements) && "string" == typeof i.nextEl && 1 < e.length && 1 === a.$el.find(i.nextEl).length && (e = a.$el.find(i.nextEl)), i.prevEl && (t = E(i.prevEl), a.params.uniqueNavElements) && "string" == typeof i.prevEl && 1 < t.length && 1 === a.$el.find(i.prevEl).length && (t = a.$el.find(i.prevEl)), e && 0 < e.length && e.on("click", a.navigation.onNextClick), t && 0 < t.length && t.on("click", a.navigation.onPrevClick), q.extend(a.navigation, { $nextEl: e, nextEl: e && e[0], $prevEl: t, prevEl: t && t[0] })) }, destroy: function() { var e = this, t = e.navigation, a = t.$nextEl, t = t.$prevEl; a && a.length && (a.off("click", e.navigation.onNextClick), a.removeClass(e.params .navigation.disabledClass)), t && t.length && (t.off("click", e.navigation .onPrevClick), t.removeClass(e.params.navigation.disabledClass)) } }, M = { update: function() { var e = this, t = e.rtl, i = e.params.pagination; if (i.el && e.pagination.el && e.pagination.$el && 0 !== e.pagination.$el.length) { var s, a = (e.virtual && e.params.virtual.enabled ? e.virtual : e).slides.length, n = e.pagination.$el, r = e.params.loop ? Math.ceil((a - 2 * e.loopedSlides) / e.params.slidesPerGroup) : e.snapGrid.length; if (e.params.loop ? ((s = Math.ceil((e.activeIndex - e.loopedSlides) / e.params .slidesPerGroup)) > a - 1 - 2 * e.loopedSlides && (s -= a - 2 * e .loopedSlides), r - 1 < s && (s -= r), s < 0 && "bullets" !== e.params .paginationType && (s = r + s)) : s = void 0 !== e.snapIndex ? e.snapIndex : e .activeIndex || 0, "bullets" === i.type && e.pagination.bullets && 0 < e.pagination .bullets.length) { var o, l, d, p = e.pagination.bullets; if (i.dynamicBullets && (e.pagination.bulletSize = p.eq(0)[e.isHorizontal() ? "outerWidth" : "outerHeight"](!0), n.css(e.isHorizontal() ? "width" : "height", e.pagination.bulletSize * (i.dynamicMainBullets + 4) + "px"), 1 < i.dynamicMainBullets && void 0 !== e.previousIndex && (e.pagination .dynamicBulletIndex += s - e.previousIndex, e.pagination .dynamicBulletIndex > i.dynamicMainBullets - 1 ? e.pagination .dynamicBulletIndex = i.dynamicMainBullets - 1 : e.pagination .dynamicBulletIndex < 0 && (e.pagination.dynamicBulletIndex = 0)), o = s - e.pagination.dynamicBulletIndex, d = ((l = o + (Math.min(p.length, i .dynamicMainBullets) - 1)) + o) / 2), p.removeClass(i .bulletActiveClass + " " + i.bulletActiveClass + "-next " + i .bulletActiveClass + "-next-next " + i.bulletActiveClass + "-prev " + i .bulletActiveClass + "-prev-prev " + i.bulletActiveClass + "-main"), 1 < n .length) p.each(function(e, t) { var t = E(t), a = t.index(); a === s && t.addClass(i.bulletActiveClass), i.dynamicBullets && (o <= a && a <= l && t.addClass(i.bulletActiveClass + "-main"), a === o && t.prev().addClass(i.bulletActiveClass + "-prev").prev() .addClass(i.bulletActiveClass + "-prev-prev"), a === l) && t .next().addClass(i.bulletActiveClass + "-next").next().addClass(i .bulletActiveClass + "-next-next") }); else if (p.eq(s).addClass(i.bulletActiveClass), i.dynamicBullets) { for (var a = p.eq(o), c = p.eq(l), u = o; u <= l; u += 1) p.eq(u).addClass(i .bulletActiveClass + "-main"); a.prev().addClass(i.bulletActiveClass + "-prev").prev().addClass(i .bulletActiveClass + "-prev-prev"), c.next().addClass(i .bulletActiveClass + "-next").next().addClass(i.bulletActiveClass + "-next-next") } i.dynamicBullets && (a = Math.min(p.length, i.dynamicMainBullets + 4), c = (e .pagination.bulletSize * a - e.pagination.bulletSize) / 2 - d * e .pagination.bulletSize, a = t ? "right" : "left", p.css(e.isHorizontal() ? a : "top", c + "px")) } "fraction" === i.type && (n.find("." + i.currentClass).text(i.formatFractionCurrent(s + 1)), n.find("." + i.totalClass).text(i.formatFractionTotal(r))), "progressbar" === i.type && (d = i.progressbarOpposite ? e.isHorizontal() ? "vertical" : "horizontal" : e.isHorizontal() ? "horizontal" : "vertical", t = ( s + 1) / r, c = a = 1, "horizontal" == d ? a = t : c = t, n.find("." + i .progressbarFillClass).transform("translate3d(0,0,0) scaleX(" + a + ") scaleY(" + c + ")").transition(e.params.speed)), "custom" === i.type && i .renderCustom ? (n.html(i.renderCustom(e, s + 1, r)), e.emit("paginationRender", e, n[0])) : e.emit("paginationUpdate", e, n[0]), n[e.params.watchOverflow && e .isLocked ? "addClass" : "removeClass"](i.lockClass) } }, render: function() { var e = this, t = e.params.pagination; if (t.el && e.pagination.el && e.pagination.$el && 0 !== e.pagination.$el.length) { var a = (e.virtual && e.params.virtual.enabled ? e.virtual : e).slides.length, i = e.pagination.$el, s = ""; if ("bullets" === t.type) { for (var n = e.params.loop ? Math.ceil((a - 2 * e.loopedSlides) / e.params .slidesPerGroup) : e.snapGrid.length, r = 0; r < n; r += 1) t.renderBullet ? s += t.renderBullet.call(e, r, t.bulletClass) : s += "<" + t.bulletElement + ' class="' + t.bulletClass + '">"; i.html(s), e.pagination.bullets = i.find("." + t.bulletClass) } "fraction" === t.type && (s = t.renderFraction ? t.renderFraction.call(e, t .currentClass, t.totalClass) : ' / ', i.html(s)), "progressbar" === t.type && (s = t.renderProgressbar ? t.renderProgressbar.call(e, t .progressbarFillClass) : '', i.html(s)), "custom" !== t.type && e.emit("paginationRender", e .pagination.$el[0]) } }, init: function() { var e, t = this, a = t.params.pagination; a.el && 0 !== (e = E(a.el)).length && (t.params.uniqueNavElements && "string" == typeof a .el && 1 < e.length && 1 === t.$el.find(a.el).length && (e = t.$el.find(a.el)), "bullets" === a.type && a.clickable && e.addClass(a.clickableClass), e.addClass(a .modifierClass + a.type), "bullets" === a.type && a.dynamicBullets && (e .addClass("" + a.modifierClass + a.type + "-dynamic"), t.pagination .dynamicBulletIndex = 0, a.dynamicMainBullets < 1) && (a.dynamicMainBullets = 1), "progressbar" === a.type && a.progressbarOpposite && e.addClass(a .progressbarOppositeClass), a.clickable && e.on("click", "." + a.bulletClass, function(e) { e.preventDefault(); e = E(this).index() * t.params.slidesPerGroup; t.params.loop && (e += t.loopedSlides), t.slideTo(e) }), q.extend(t.pagination, { $el: e, el: e[0] })) }, destroy: function() { var e, t = this, a = t.params.pagination; a.el && t.pagination.el && t.pagination.$el && 0 !== t.pagination.$el.length && ((e = t .pagination.$el).removeClass(a.hiddenClass), e.removeClass(a.modifierClass + a .type), t.pagination.bullets && t.pagination.bullets.removeClass(a .bulletActiveClass), a.clickable) && e.off("click", "." + a.bulletClass) } }, P = { setTranslate: function() { var e, t, a, i, s, n, r, o, l = this; l.params.scrollbar.el && l.scrollbar.el && (n = l.scrollbar, e = l.rtlTranslate, o = l .progress, t = n.dragSize, a = n.trackSize, i = n.$dragEl, s = n.$el, n = l.params .scrollbar, o = (a - (r = t)) * o, e ? 0 < (o = -o) ? (r = t - o, o = 0) : a < -o + t && (r = a + o) : o < 0 ? (r = t + o, o = 0) : a < o + t && (r = a - o), l .isHorizontal() ? (W.transforms3d ? i.transform("translate3d(" + o + "px, 0, 0)") : i.transform("translateX(" + o + "px)"), i[0].style.width = r + "px") : (W .transforms3d ? i.transform("translate3d(0px, " + o + "px, 0)") : i.transform( "translateY(" + o + "px)"), i[0].style.height = r + "px"), n.hide) && ( clearTimeout(l.scrollbar.timeout), s[0].style.opacity = 1, l.scrollbar.timeout = setTimeout(function() { s[0].style.opacity = 0, s.transition(400) }, 1e3)) }, setTransition: function(e) { this.params.scrollbar.el && this.scrollbar.el && this.scrollbar.$dragEl.transition(e) }, updateSize: function() { var e, t, a, i, s, n, r, o = this; o.params.scrollbar.el && o.scrollbar.el && (t = (e = o.scrollbar).$dragEl, a = e.$el, t[0] .style.width = "", t[0].style.height = "", i = o.isHorizontal() ? a[0].offsetWidth : a[0].offsetHeight, n = (s = o.size / o.virtualSize) * (i / o.size), r = "auto" === o .params.scrollbar.dragSize ? i * s : parseInt(o.params.scrollbar.dragSize, 10), o .isHorizontal() ? t[0].style.width = r + "px" : t[0].style.height = r + "px", a[0] .style.display = 1 <= s ? "none" : "", o.params.scrollbar.hide && (a[0].style .opacity = 0), q.extend(e, { trackSize: i, divider: s, moveDivider: n, dragSize: r }), e.$el[o.params.watchOverflow && o.isLocked ? "addClass" : "removeClass"](o .params.scrollbar.lockClass)) }, getPointerPosition: function(e) { return this.isHorizontal() ? "touchstart" === e.type || "touchmove" === e.type ? e .targetTouches[0].pageX : e.pageX || e.clientX : "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY || e.clientY }, setDragPosition: function(e) { var t = this, a = t.scrollbar, i = t.rtlTranslate, s = a.$el, n = a.dragSize, r = a.trackSize, o = a.dragStartPos, a = (a.getPointerPosition(e) - s.offset()[t.isHorizontal() ? "left" : "top"] - (null !== o ? o : n / 2)) / (r - n), e = (a = Math.max(Math.min(a, 1), 0), i && (a = 1 - a), t.minTranslate() + (t .maxTranslate() - t.minTranslate()) * a); t.updateProgress(e), t.setTranslate(e), t.updateActiveIndex(), t.updateSlidesClasses() }, onDragStart: function(e) { var t = this, a = t.params.scrollbar, i = t.scrollbar, s = t.$wrapperEl, n = i.$el, r = i.$dragEl; t.scrollbar.isTouched = !0, t.scrollbar.dragStartPos = e.target === r[0] || e.target === r ? i.getPointerPosition(e) - e.target.getBoundingClientRect()[t.isHorizontal() ? "left" : "top"] : null, e.preventDefault(), e.stopPropagation(), s.transition(100), r .transition(100), i.setDragPosition(e), clearTimeout(t.scrollbar.dragTimeout), n .transition(0), a.hide && n.css("opacity", 1), t.emit("scrollbarDragStart", e) }, onDragMove: function(e) { var t = this.scrollbar, a = this.$wrapperEl, i = t.$el, s = t.$dragEl; this.scrollbar.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1, t .setDragPosition(e), a.transition(0), i.transition(0), s.transition(0), this.emit( "scrollbarDragMove", e)) }, onDragEnd: function(e) { var t = this, a = t.params.scrollbar, i = t.scrollbar.$el; t.scrollbar.isTouched && (t.scrollbar.isTouched = !1, a.hide && (clearTimeout(t.scrollbar .dragTimeout), t.scrollbar.dragTimeout = q.nextTick(function() { i.css("opacity", 0), i.transition(400) }, 1e3)), t.emit("scrollbarDragEnd", e), a.snapOnRelease) && t.slideToClosest() }, enableDraggable: function() { var e, t, a, i, s, n = this; n.params.scrollbar.el && (a = n.scrollbar, e = n.touchEventsTouch, t = n.touchEventsDesktop, s = n.params, a = a.$el[0], i = !(!W.passiveListener || !s.passiveListeners) && { passive: !1, capture: !1 }, s = !(!W.passiveListener || !s.passiveListeners) && { passive: !0, capture: !1 }, W.touch ? (a.addEventListener(e.start, n.scrollbar.onDragStart, i), a .addEventListener(e.move, n.scrollbar.onDragMove, i), a.addEventListener(e.end, n.scrollbar.onDragEnd, s)) : (a.addEventListener(t.start, n.scrollbar .onDragStart, i), c.addEventListener(t.move, n.scrollbar.onDragMove, i), c .addEventListener(t.end, n.scrollbar.onDragEnd, s))) }, disableDraggable: function() { var e, t, a, i, s, n = this; n.params.scrollbar.el && (a = n.scrollbar, e = n.touchEventsTouch, t = n.touchEventsDesktop, s = n.params, a = a.$el[0], i = !(!W.passiveListener || !s.passiveListeners) && { passive: !1, capture: !1 }, s = !(!W.passiveListener || !s.passiveListeners) && { passive: !0, capture: !1 }, W.touch ? (a.removeEventListener(e.start, n.scrollbar.onDragStart, i), a .removeEventListener(e.move, n.scrollbar.onDragMove, i), a.removeEventListener(e .end, n.scrollbar.onDragEnd, s)) : (a.removeEventListener(t.start, n .scrollbar.onDragStart, i), c.removeEventListener(t.move, n.scrollbar .onDragMove, i), c.removeEventListener(t.end, n.scrollbar.onDragEnd, s))) }, init: function() { var e, t, a, i, s = this; s.params.scrollbar.el && (e = s.scrollbar, i = s.$el, a = E((t = s.params.scrollbar).el), 0 === (i = (a = s.params.uniqueNavElements && "string" == typeof t.el && 1 < a .length && 1 === i.find(t.el).length ? i.find(t.el) : a).find("." + s.params .scrollbar.dragClass)).length && (i = E('
'), a.append(i)), q.extend(e, { $el: a, el: a[0], $dragEl: i, dragEl: i[0] }), t.draggable) && e.enableDraggable() }, destroy: function() { this.scrollbar.disableDraggable() } }, X = { setTransform: function(e, t) { var a = this.rtl, e = E(e), a = a ? -1 : 1, i = e.attr("data-swiper-parallax") || "0", s = e.attr("data-swiper-parallax-x"), n = e.attr("data-swiper-parallax-y"), r = e.attr("data-swiper-parallax-scale"), o = e.attr("data-swiper-parallax-opacity"); s || n ? (s = s || "0", n = n || "0") : this.isHorizontal() ? (s = i, n = "0") : (n = i, s = "0"), s = 0 <= s.indexOf("%") ? parseInt(s, 10) * t * a + "%" : s * t * a + "px", n = 0 <= n.indexOf("%") ? parseInt(n, 10) * t + "%" : n * t + "px", null != o && (i = o - (o - 1) * (1 - Math.abs(t)), e[0].style.opacity = i), null == r ? e.transform( "translate3d(" + s + ", " + n + ", 0px)") : (a = r - (r - 1) * (1 - Math.abs(t)), e .transform("translate3d(" + s + ", " + n + ", 0px) scale(" + a + ")")) }, setTranslate: function() { var i = this, e = i.$el, t = i.slides, s = i.progress, n = i.snapGrid; e.children( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each(function(e, t) { i.parallax.setTransform(t, s) }), t.each(function(e, t) { var a = t.progress; 1 < i.params.slidesPerGroup && "auto" !== i.params.slidesPerView && (a += Math .ceil(e / 2) - s * (n.length - 1)), a = Math.min(Math.max(a, -1), 1), E( t).find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each(function(e, t) { i.parallax.setTransform(t, a) }) }) }, setTransition: function(i) { void 0 === i && (i = this.params.speed), this.$el.find( "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]" ).each(function(e, t) { var t = E(t), a = parseInt(t.attr("data-swiper-parallax-duration"), 10) || i; 0 === i && (a = 0), t.transition(a) }) } }, Y = { getDistanceBetweenTouches: function(e) { var t, a, i; return e.targetTouches.length < 2 ? 1 : (t = e.targetTouches[0].pageX, a = e.targetTouches[ 0].pageY, i = e.targetTouches[1].pageX, e = e.targetTouches[1].pageY, Math.sqrt( Math.pow(i - t, 2) + Math.pow(e - a, 2))) }, onGestureStart: function(e) { var t = this, a = t.params.zoom, i = t.zoom, s = i.gesture; if (i.fakeGestureTouched = !1, i.fakeGestureMoved = !1, !W.gestures) { if ("touchstart" !== e.type || "touchstart" === e.type && e.targetTouches.length < 2) return; i.fakeGestureTouched = !0, s.scaleStart = Y.getDistanceBetweenTouches(e) } s.$slideEl && s.$slideEl.length || (s.$slideEl = E(e.target).closest(".swiper-slide"), 0 === s.$slideEl.length && (s.$slideEl = t.slides.eq(t.activeIndex)), s.$imageEl = s .$slideEl.find("img, svg, canvas"), s.$imageWrapEl = s.$imageEl.parent("." + a .containerClass), s.maxRatio = s.$imageWrapEl.attr("data-swiper-zoom") || a .maxRatio, 0 !== s.$imageWrapEl.length) ? (s.$imageEl.transition(0), t.zoom .isScaling = !0) : s.$imageEl = void 0 }, onGestureChange: function(e) { var t = this.params.zoom, a = this.zoom, i = a.gesture; if (!W.gestures) { if ("touchmove" !== e.type || "touchmove" === e.type && e.targetTouches.length < 2) return; a.fakeGestureMoved = !0, i.scaleMove = Y.getDistanceBetweenTouches(e) } i.$imageEl && 0 !== i.$imageEl.length && (a.scale = W.gestures ? e.scale * a.currentScale : i.scaleMove / i.scaleStart * a.currentScale, a.scale > i.maxRatio && (a.scale = i .maxRatio - 1 + Math.pow(a.scale - i.maxRatio + 1, .5)), a.scale < t.minRatio && (a.scale = t.minRatio + 1 - Math.pow(t.minRatio - a.scale + 1, .5)), i.$imageEl .transform("translate3d(0,0,0) scale(" + a.scale + ")")) }, onGestureEnd: function(e) { var t = this.params.zoom, a = this.zoom, i = a.gesture; if (!W.gestures) { if (!a.fakeGestureTouched || !a.fakeGestureMoved) return; if ("touchend" !== e.type || "touchend" === e.type && e.changedTouches.length < 2 && !o .android) return; a.fakeGestureTouched = !1, a.fakeGestureMoved = !1 } i.$imageEl && 0 !== i.$imageEl.length && (a.scale = Math.max(Math.min(a.scale, i.maxRatio), t.minRatio), i.$imageEl.transition(this.params.speed).transform( "translate3d(0,0,0) scale(" + a.scale + ")"), a.currentScale = a.scale, a .isScaling = !1, 1 === a.scale) && (i.$slideEl = void 0) }, onTouchStart: function(e) { var t = this.zoom, a = t.gesture, t = t.image; a.$imageEl && 0 !== a.$imageEl.length && !t.isTouched && (o.android && e.preventDefault(), t .isTouched = !0, t.touchesStart.x = ("touchstart" === e.type ? e.targetTouches[0] : e).pageX, t.touchesStart.y = ("touchstart" === e.type ? e.targetTouches[0] : e) .pageY) }, onTouchMove: function(e) { var t = this, a = t.zoom, i = a.gesture, s = a.image, n = a.velocity; if (i.$imageEl && 0 !== i.$imageEl.length && (t.allowClick = !1, s.isTouched) && i .$slideEl) { s.isMoved || (s.width = i.$imageEl[0].offsetWidth, s.height = i.$imageEl[0] .offsetHeight, s.startX = q.getTranslate(i.$imageWrapEl[0], "x") || 0, s .startY = q.getTranslate(i.$imageWrapEl[0], "y") || 0, i.slideWidth = i .$slideEl[0].offsetWidth, i.slideHeight = i.$slideEl[0].offsetHeight, i .$imageWrapEl.transition(0), t.rtl && (s.startX = -s.startX, s.startY = -s .startY)); var r = s.width * a.scale, o = s.height * a.scale; if (!(r < i.slideWidth && o < i.slideHeight)) { if (s.minX = Math.min(i.slideWidth / 2 - r / 2, 0), s.maxX = -s.minX, s.minY = Math .min(i.slideHeight / 2 - o / 2, 0), s.maxY = -s.minY, s.touchesCurrent.x = ( "touchmove" === e.type ? e.targetTouches[0] : e).pageX, s.touchesCurrent.y = ("touchmove" === e.type ? e.targetTouches[0] : e).pageY, !s.isMoved && !a .isScaling) { if (t.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)) return void( s.isTouched = !1); if (!t.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)) return void( s.isTouched = !1) } e.preventDefault(), e.stopPropagation(), s.isMoved = !0, s.currentX = s .touchesCurrent.x - s.touchesStart.x + s.startX, s.currentY = s.touchesCurrent .y - s.touchesStart.y + s.startY, s.currentX < s.minX && (s.currentX = s.minX + 1 - Math.pow(s.minX - s.currentX + 1, .8)), s.currentX > s.maxX && (s .currentX = s.maxX - 1 + Math.pow(s.currentX - s.maxX + 1, .8)), s .currentY < s.minY && (s.currentY = s.minY + 1 - Math.pow(s.minY - s.currentY + 1, .8)), s.currentY > s.maxY && (s.currentY = s.maxY - 1 + Math.pow(s .currentY - s.maxY + 1, .8)), n.prevPositionX || (n.prevPositionX = s .touchesCurrent.x), n.prevPositionY || (n.prevPositionY = s.touchesCurrent .y), n.prevTime || (n.prevTime = Date.now()), n.x = (s.touchesCurrent.x - n .prevPositionX) / (Date.now() - n.prevTime) / 2, n.y = (s.touchesCurrent.y - n.prevPositionY) / (Date.now() - n.prevTime) / 2, Math.abs(s.touchesCurrent .x - n.prevPositionX) < 2 && (n.x = 0), Math.abs(s.touchesCurrent.y - n .prevPositionY) < 2 && (n.y = 0), n.prevPositionX = s.touchesCurrent.x, n .prevPositionY = s.touchesCurrent.y, n.prevTime = Date.now(), i.$imageWrapEl .transform("translate3d(" + s.currentX + "px, " + s.currentY + "px,0)") } } }, onTouchEnd: function() { var e, t, a, i, s = this.zoom, n = s.gesture, r = s.image, o = s.velocity; n.$imageEl && 0 !== n.$imageEl.length && (r.isTouched && r.isMoved ? (r.isTouched = !1, r .isMoved = !1, e = o.x * (a = 300), e = r.currentX + e, t = o.y * (i = 300), t = r.currentY + t, 0 !== o.x && (a = Math.abs((e - r.currentX) / o.x)), 0 !== o .y && (i = Math.abs((t - r.currentY) / o.y)), o = Math.max(a, i), r.currentX = e, r.currentY = t, a = r.width * s.scale, i = r.height * s.scale, r.minX = Math .min(n.slideWidth / 2 - a / 2, 0), r.maxX = -r.minX, r.minY = Math.min(n .slideHeight / 2 - i / 2, 0), r.maxY = -r.minY, r.currentX = Math.max(Math .min(r.currentX, r.maxX), r.minX), r.currentY = Math.max(Math.min(r .currentY, r.maxY), r.minY), n.$imageWrapEl.transition(o).transform( "translate3d(" + r.currentX + "px, " + r.currentY + "px,0)")) : (r .isTouched = !1, r.isMoved = !1)) }, onTransitionEnd: function() { var e = this.zoom, t = e.gesture; t.$slideEl && this.previousIndex !== this.activeIndex && (t.$imageEl.transform( "translate3d(0,0,0) scale(1)"), t.$imageWrapEl.transform("translate3d(0,0,0)"), e.scale = 1, e.currentScale = 1, t.$slideEl = void 0, t.$imageEl = void 0, t .$imageWrapEl = void 0) }, toggle: function(e) { var t = this.zoom; t.scale && 1 !== t.scale ? t.out() : t.in(e) }, in: function(e) { var t, a, i, s, n = this, r = n.zoom, o = n.params.zoom, l = r.gesture, d = r.image; l.$slideEl || (l.$slideEl = n.clickedSlide ? E(n.clickedSlide) : n.slides.eq(n.activeIndex), l.$imageEl = l.$slideEl.find("img, svg, canvas"), l.$imageWrapEl = l.$imageEl .parent("." + o.containerClass)), l.$imageEl && 0 !== l.$imageEl.length && (l .$slideEl.addClass("" + o.zoomedSlideClass), n = void 0 === d.touchesStart.x && e ? (t = ("touchend" === e.type ? e.changedTouches[0] : e).pageX, ("touchend" === e .type ? e.changedTouches[0] : e).pageY) : (t = d.touchesStart.x, d.touchesStart .y), r.scale = l.$imageWrapEl.attr("data-swiper-zoom") || o.maxRatio, r .currentScale = l.$imageWrapEl.attr("data-swiper-zoom") || o.maxRatio, e ? (d = l .$slideEl[0].offsetWidth, o = l.$slideEl[0].offsetHeight, e = l.$slideEl .offset().left + d / 2 - t, t = l.$slideEl.offset().top + o / 2 - n, n = l .$imageEl[0].offsetWidth, s = l.$imageEl[0].offsetHeight, n = n * r.scale, s = s * r.scale, n = -(d = Math.min(d / 2 - n / 2, 0)), s = -(o = Math.min(o / 2 - s / 2, 0)), n < (a = (a = e * r.scale) < d ? d : a) && (a = n), s < (i = ( i = t * r.scale) < o ? o : i) && (i = s)) : i = a = 0, l.$imageWrapEl .transition(300).transform("translate3d(" + a + "px, " + i + "px,0)"), l.$imageEl .transition(300).transform("translate3d(0,0,0) scale(" + r.scale + ")")) }, out: function() { var e = this, t = e.zoom, a = e.params.zoom, i = t.gesture; i.$slideEl || (i.$slideEl = e.clickedSlide ? E(e.clickedSlide) : e.slides.eq(e.activeIndex), i.$imageEl = i.$slideEl.find("img, svg, canvas"), i.$imageWrapEl = i.$imageEl .parent("." + a.containerClass)), i.$imageEl && 0 !== i.$imageEl.length && (t .scale = 1, t.currentScale = 1, i.$imageWrapEl.transition(300).transform( "translate3d(0,0,0)"), i.$imageEl.transition(300).transform( "translate3d(0,0,0) scale(1)"), i.$slideEl.removeClass("" + a.zoomedSlideClass), i.$slideEl = void 0) }, enable: function() { var e, t = this, a = t.zoom; a.enabled || (a.enabled = !0, e = !("touchstart" !== t.touchEvents.start || !W .passiveListener || !t.params.passiveListeners) && { passive: !0, capture: !1 }, W.gestures ? (t.$wrapperEl.on("gesturestart", ".swiper-slide", a.onGestureStart, e), t.$wrapperEl.on("gesturechange", ".swiper-slide", a.onGestureChange, e), t.$wrapperEl.on("gestureend", ".swiper-slide", a.onGestureEnd, e)) : "touchstart" === t.touchEvents.start && (t.$wrapperEl.on(t.touchEvents.start, ".swiper-slide", a.onGestureStart, e), t.$wrapperEl.on(t.touchEvents.move, ".swiper-slide", a.onGestureChange, e), t.$wrapperEl.on(t.touchEvents.end, ".swiper-slide", a.onGestureEnd, e)), t.$wrapperEl.on(t.touchEvents.move, "." + t.params.zoom.containerClass, a.onTouchMove)) }, disable: function() { var e, t = this, a = t.zoom; a.enabled && (t.zoom.enabled = !1, e = !("touchstart" !== t.touchEvents.start || !W .passiveListener || !t.params.passiveListeners) && { passive: !0, capture: !1 }, W.gestures ? (t.$wrapperEl.off("gesturestart", ".swiper-slide", a.onGestureStart, e), t.$wrapperEl.off("gesturechange", ".swiper-slide", a.onGestureChange, e), t.$wrapperEl.off("gestureend", ".swiper-slide", a.onGestureEnd, e)) : "touchstart" === t.touchEvents.start && (t.$wrapperEl.off(t.touchEvents.start, ".swiper-slide", a.onGestureStart, e), t.$wrapperEl.off(t.touchEvents.move, ".swiper-slide", a.onGestureChange, e), t.$wrapperEl.off(t.touchEvents.end, ".swiper-slide", a.onGestureEnd, e)), t.$wrapperEl.off(t.touchEvents.move, "." + t.params.zoom.containerClass, a.onTouchMove)) } }, F = { loadInSlide: function(e, o) { void 0 === o && (o = !0); var l, d = this, p = d.params.lazy; void 0 !== e && 0 !== d.slides.length && (e = (l = d.virtual && d.params.virtual.enabled ? d .$wrapperEl.children("." + d.params.slideClass + '[data-swiper-slide-index="' + e + '"]') : d.slides.eq(e)).find("." + p.elementClass + ":not(." + p .loadedClass + "):not(." + p.loadingClass + ")"), 0 !== (e = !l.hasClass(p .elementClass) || l.hasClass(p.loadedClass) || l.hasClass(p.loadingClass) ? e : e.add(l[0])).length) && e.each(function(e, t) { var a = E(t), i = (a.addClass(p.loadingClass), a.attr("data-background")), s = a.attr("data-src"), n = a.attr("data-srcset"), r = a.attr("data-sizes"); d.loadImage(a[0], s || i, n, r, !1, function() { var e, t; null == d || !d || d && !d.params || d.destroyed || (i ? (a.css( "background-image", 'url("' + i + '")'), a .removeAttr("data-background")) : (n && (a.attr( "srcset", n), a.removeAttr("data-srcset")), r && (a .attr("sizes", r), a.removeAttr("data-sizes")), s && (a.attr("src", s), a.removeAttr("data-src"))), a .addClass(p.loadedClass).removeClass(p.loadingClass), l .find("." + p.preloaderClass).remove(), d.params.loop && o && (e = l.attr("data-swiper-slide-index"), l.hasClass(d .params.slideDuplicateClass) ? (t = d.$wrapperEl .children('[data-swiper-slide-index="' + e + '"]:not(.' + d.params.slideDuplicateClass + ")" ), d.lazy.loadInSlide(t.index(), !1)) : (t = d .$wrapperEl.children("." + d.params .slideDuplicateClass + '[data-swiper-slide-index="' + e + '"]'), d.lazy .loadInSlide(t.index(), !1))), d.emit("lazyImageReady", l[0], a[0])) }), d.emit("lazyImageLoad", l[0], a[0]) }) }, load: function() { var a = this, t = a.$wrapperEl, i = a.params, s = a.slides, e = a.activeIndex, n = a.virtual && i.virtual.enabled, r = i.lazy, o = i.slidesPerView; function l(e) { if (n) { if (t.children("." + i.slideClass + '[data-swiper-slide-index="' + e + '"]').length) return 1 } else if (s[e]) return 1 } function d(e) { return n ? E(e).attr("data-swiper-slide-index") : E(e).index() } if ("auto" === o && (o = 0), a.lazy.initialImageLoaded || (a.lazy.initialImageLoaded = !0), a.params.watchSlidesVisibility) t.children("." + i.slideVisibleClass).each(function(e, t) { t = n ? E(t).attr("data-swiper-slide-index") : E(t).index(); a.lazy.loadInSlide(t) }); else if (1 < o) for (var p = e; p < e + o; p += 1) l(p) && a.lazy.loadInSlide(p); else a.lazy.loadInSlide(e); if (r.loadPrevNext) if (1 < o || r.loadPrevNextAmount && 1 < r.loadPrevNextAmount) { for (var r = r.loadPrevNextAmount, c = o, u = Math.min(e + c + Math.max(r, c), s .length), c = Math.max(e - Math.max(c, r), 0), h = e + o; h < u; h += 1) l( h) && a.lazy.loadInSlide(h); for (var m = c; m < e; m += 1) l(m) && a.lazy.loadInSlide(m) } else { r = t.children("." + i.slideNextClass), c = (0 < r.length && a.lazy.loadInSlide(d( r)), t.children("." + i.slidePrevClass)); 0 < c.length && a.lazy.loadInSlide(d(c)) } } }, k = { LinearSpline: function(e, t) { var a, i, s, n, r; return this.x = e, this.y = t, this.lastIndex = e.length - 1, this.interpolate = function( e) { return e ? (r = function(e, t) { for (i = -1, a = e.length; 1 < a - i;) e[s = a + i >> 1] <= t ? i = s : a = s; return a }(this.x, e), n = r - 1, (e - this.x[n]) * (this.y[r] - this.y[n]) / (this .x[r] - this.x[n]) + this.y[n]) : 0 }, this }, getInterpolateFunction: function(e) { var t = this; t.controller.spline || (t.controller.spline = t.params.loop ? new k.LinearSpline(t .slidesGrid, e.slidesGrid) : new k.LinearSpline(t.snapGrid, e.snapGrid)) }, setTranslate: function(e, t) { var a, i, s = this, n = s.controller.control; function r(e) { var t = s.rtlTranslate ? -s.translate : s.translate; "slide" === s.params.controller.by && (s.controller.getInterpolateFunction(e), i = -s .controller.spline.interpolate(-t)), i && "container" !== s.params.controller .by || (a = (e.maxTranslate() - e.minTranslate()) / (s.maxTranslate() - s .minTranslate()), i = (t - s.minTranslate()) * a + e.minTranslate()), s.params .controller.inverse && (i = e.maxTranslate() - i), e.updateProgress(i), e .setTranslate(i, s), e.updateActiveIndex(), e.updateSlidesClasses() } if (Array.isArray(n)) for (var o = 0; o < n.length; o += 1) n[o] !== t && n[o] instanceof h && r(n[o]); else n instanceof h && t !== n && r(n) }, setTransition: function(t, e) { var a, i = this, s = i.controller.control; function n(e) { e.setTransition(t, i), 0 !== t && (e.transitionStart(), e.params.autoHeight && q .nextTick(function() { e.updateAutoHeight() }), e.$wrapperEl.transitionEnd(function() { s && (e.params.loop && "slide" === i.params.controller.by && e .loopFix(), e.transitionEnd()) })) } if (Array.isArray(s)) for (a = 0; a < s.length; a += 1) s[a] !== e && s[a] instanceof h && n(s[a]); else s instanceof h && e !== s && n(s) } }, U = { makeElFocusable: function(e) { return e.attr("tabIndex", "0"), e }, addElRole: function(e, t) { return e.attr("role", t), e }, addElLabel: function(e, t) { return e.attr("aria-label", t), e }, disableEl: function(e) { return e.attr("aria-disabled", !0), e }, enableEl: function(e) { return e.attr("aria-disabled", !1), e }, onEnterKey: function(e) { var t = this, a = t.params.a11y; 13 === e.keyCode && (e = E(e.target), t.navigation && t.navigation.$nextEl && e.is(t .navigation.$nextEl) && (t.isEnd && !t.params.loop || t.slideNext(), t.isEnd ? t .a11y.notify(a.lastSlideMessage) : t.a11y.notify(a.nextSlideMessage)), t .navigation && t.navigation.$prevEl && e.is(t.navigation.$prevEl) && (t .isBeginning && !t.params.loop || t.slidePrev(), t.isBeginning ? t.a11y.notify(a .firstSlideMessage) : t.a11y.notify(a.prevSlideMessage)), t.pagination) && e .is("." + t.params.pagination.bulletClass) && e[0].click() }, notify: function(e) { var t = this.a11y.liveRegion; 0 !== t.length && (t.html(""), t.html(e)) }, updateNavigation: function() { var e, t, a = this; a.params.loop || (e = (t = a.navigation).$nextEl, (t = t.$prevEl) && 0 < t.length && (a .isBeginning ? a.a11y.disableEl(t) : a.a11y.enableEl(t)), e && 0 < e.length && ( a.isEnd ? a.a11y.disableEl(e) : a.a11y.enableEl(e))) }, updatePagination: function() { var a = this, i = a.params.a11y; a.pagination && a.params.pagination.clickable && a.pagination.bullets && a.pagination .bullets.length && a.pagination.bullets.each(function(e, t) { t = E(t); a.a11y.makeElFocusable(t), a.a11y.addElRole(t, "button"), a.a11y.addElLabel(t, i .paginationBulletMessage.replace(/{{index}}/, t.index() + 1)) }) }, init: function() { var e = this; e.$el.append(e.a11y.liveRegion); var t, a, i = e.params.a11y; e.navigation && e.navigation.$nextEl && (t = e.navigation.$nextEl), e.navigation && e .navigation.$prevEl && (a = e.navigation.$prevEl), t && (e.a11y.makeElFocusable(t), e .a11y.addElRole(t, "button"), e.a11y.addElLabel(t, i.nextSlideMessage), t.on( "keydown", e.a11y.onEnterKey)), a && (e.a11y.makeElFocusable(a), e.a11y .addElRole(a, "button"), e.a11y.addElLabel(a, i.prevSlideMessage), a.on("keydown", e .a11y.onEnterKey)), e.pagination && e.params.pagination.clickable && e .pagination.bullets && e.pagination.bullets.length && e.pagination.$el.on("keydown", "." + e.params.pagination.bulletClass, e.a11y.onEnterKey) }, destroy: function() { var e, t, a = this; a.a11y.liveRegion && 0 < a.a11y.liveRegion.length && a.a11y.liveRegion.remove(), a .navigation && a.navigation.$nextEl && (e = a.navigation.$nextEl), a.navigation && a .navigation.$prevEl && (t = a.navigation.$prevEl), e && e.off("keydown", a.a11y .onEnterKey), t && t.off("keydown", a.a11y.onEnterKey), a.pagination && a.params .pagination.clickable && a.pagination.bullets && a.pagination.bullets.length && a .pagination.$el.off("keydown", "." + a.params.pagination.bulletClass, a.a11y.onEnterKey) } }, z = { init: function() { var e, t = this; t.params.history && (R.history && R.history.pushState ? ((e = t.history).initialized = !0, e .paths = z.getPathValues(), (e.paths.key || e.paths.value) && (e.scrollToSlide( 0, e.paths.value, t.params.runCallbacksOnInit), t.params.history .replaceState || R.addEventListener("popstate", t.history .setHistoryPopState))) : (t.params.history.enabled = !1, t.params .hashNavigation.enabled = !0)) }, destroy: function() { this.params.history.replaceState || R.removeEventListener("popstate", this.history .setHistoryPopState) }, setHistoryPopState: function() { this.history.paths = z.getPathValues(), this.history.scrollToSlide(this.params.speed, this .history.paths.value, !1) }, getPathValues: function() { var e = R.location.pathname.slice(1).split("/").filter(function(e) { return "" !== e }), t = e.length; return { key: e[t - 2], value: e[t - 1] } }, setHistory: function(e, t) { this.history.initialized && this.params.history.enabled && (t = this.slides.eq(t), t = z .slugify(t.attr("data-history")), R.location.pathname.includes(e) || (t = e + "/" + t), (e = R.history.state) && e.value === t || (this.params.history .replaceState ? R.history.replaceState({ value: t }, null, t) : R.history.pushState({ value: t }, null, t))) }, slugify: function(e) { return e.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-") .replace(/^-+/, "").replace(/-+$/, "") }, scrollToSlide: function(e, t, a) { var i = this; if (t) for (var s = 0, n = i.slides.length; s < n; s += 1) { var r = i.slides.eq(s); z.slugify(r.attr("data-history")) !== t || r.hasClass(i.params .slideDuplicateClass) || (r = r.index(), i.slideTo(r, e, a)) } else i.slideTo(0, e, a) } }, $ = { onHashCange: function() { var e = this, t = c.location.hash.replace("#", ""); t !== e.slides.eq(e.activeIndex).attr("data-hash") && void 0 !== (t = e.$wrapperEl.children( "." + e.params.slideClass + '[data-hash="' + t + '"]').index()) && e.slideTo(t) }, setHash: function() { var e = this; e.hashNavigation.initialized && e.params.hashNavigation.enabled && (e.params.hashNavigation .replaceState && R.history && R.history.replaceState ? R.history.replaceState(null, null, "#" + e.slides.eq(e.activeIndex).attr("data-hash") || "") : (e = (e = e .slides.eq(e.activeIndex)).attr("data-hash") || e.attr("data-history"), c .location.hash = e || "")) }, init: function() { var e = this; if (!(!e.params.hashNavigation.enabled || e.params.history && e.params.history.enabled)) { e.hashNavigation.initialized = !0; var t = c.location.hash.replace("#", ""); if (t) for (var a = 0, i = e.slides.length; a < i; a += 1) { var s = e.slides.eq(a); (s.attr("data-hash") || s.attr("data-history")) !== t || s.hasClass(e.params .slideDuplicateClass) || (s = s.index(), e.slideTo(s, 0, e.params .runCallbacksOnInit, !0)) } e.params.hashNavigation.watchState && E(R).on("hashchange", e.hashNavigation .onHashCange) } }, destroy: function() { this.params.hashNavigation.watchState && E(R).off("hashchange", this.hashNavigation .onHashCange) } }, I = { run: function() { var e = this, t = e.slides.eq(e.activeIndex), a = e.params.autoplay.delay; t.attr("data-swiper-autoplay") && (a = t.attr("data-swiper-autoplay") || e.params.autoplay .delay), clearTimeout(e.autoplay.timeout), e.autoplay.timeout = q.nextTick( function() { e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), e.slidePrev(e .params.speed, !0, !0), e.emit("autoplay")) : e.isBeginning ? e.params .autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), e.emit("autoplay")) : (e.slidePrev(e.params .speed, !0, !0), e.emit("autoplay")) : e.params.loop ? (e.loopFix(), e .slideNext(e.params.speed, !0, !0), e.emit("autoplay")) : e.isEnd ? e .params.autoplay.stopOnLastSlide ? e.autoplay.stop() : (e.slideTo(0, e .params.speed, !0, !0), e.emit("autoplay")) : (e.slideNext(e.params .speed, !0, !0), e.emit("autoplay")) }, a) }, start: function() { var e = this; return void 0 === e.autoplay.timeout && !e.autoplay.running && (e.autoplay.running = !0, e .emit("autoplayStart"), e.autoplay.run(), !0) }, stop: function() { var e = this; return !!e.autoplay.running && void 0 !== e.autoplay.timeout && (e.autoplay.timeout && ( clearTimeout(e.autoplay.timeout), e.autoplay.timeout = void 0), e.autoplay .running = !1, e.emit("autoplayStop"), !0) }, pause: function(e) { var t = this; t.autoplay.running && !t.autoplay.paused && (t.autoplay.timeout && clearTimeout(t.autoplay .timeout), t.autoplay.paused = !0, 0 !== e && t.params.autoplay .waitForTransition ? (t.$wrapperEl[0].addEventListener("transitionend", t.autoplay .onTransitionEnd), t.$wrapperEl[0].addEventListener("webkitTransitionEnd", t .autoplay.onTransitionEnd)) : (t.autoplay.paused = !1, t.autoplay.run())) } }, K = { setTranslate: function() { for (var e = this, t = e.slides, a = 0; a < t.length; a += 1) { var i = e.slides.eq(a), s = -i[0].swiperSlideOffset, n = (e.params.virtualTranslate || (s -= e.translate), 0), r = (e.isHorizontal() || (n = s, s = 0), e.params.fadeEffect.crossFade ? Math.max( 1 - Math.abs(i[0].progress), 0) : 1 + Math.min(Math.max(i[0].progress, -1), 0)); i.css({ opacity: r }).transform("translate3d(" + s + "px, " + n + "px, 0px)") } }, setTransition: function(e) { var a, i = this, t = i.slides, s = i.$wrapperEl; t.transition(e), i.params.virtualTranslate && 0 !== e && (a = !1, t.transitionEnd( function() { if (!a && i && !i.destroyed) { a = !0, i.animating = !1; for (var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e .length; t += 1) s.trigger(e[t]) } })) } }, _ = { setTranslate: function() { var e, t = this, a = t.$el, i = t.$wrapperEl, s = t.slides, n = t.width, r = t.height, o = t.rtlTranslate, l = t.size, d = t.params.cubeEffect, p = t.isHorizontal(), c = t.virtual && t.params.virtual.enabled, u = 0; d.shadow && (p ? (0 === (e = i.find(".swiper-cube-shadow")).length && (e = E( '
'), i.append(e)), e.css({ height: n + "px" })) : 0 === (e = a.find(".swiper-cube-shadow")).length && (e = E( '
'), a.append(e))); for (var h, m = 0; m < s.length; m += 1) { var v = s.eq(m), f = m, g = 90 * (f = c ? parseInt(v.attr("data-swiper-slide-index"), 10) : f), b = Math.floor(g / 360), w = (o && (g = -g, b = Math.floor(-g / 360)), Math.max(Math.min(v[0].progress, 1), - 1)), y = 0, x = 0, T = 0, b = (f % 4 == 0 ? (y = 4 * -b * l, T = 0) : (f - 1) % 4 == 0 ? (y = 0, T = 4 * -b * l) : (f - 2) % 4 == 0 ? (y = l + 4 * b * l, T = l) : (f - 3) % 4 == 0 && ( y = -l, T = 3 * l + 4 * l * b), o && (y = -y), p || (x = y, y = 0), "rotateX(" + (p ? 0 : -g) + "deg) rotateY(" + (p ? g : 0) + "deg) translate3d(" + y + "px, " + x + "px, " + T + "px)"); w <= 1 && -1 < w && (u = 90 * f + 90 * w, o) && (u = 90 * -f - 90 * w), v.transform(b), d.slideShadows && (g = p ? v.find(".swiper-slide-shadow-left") : v.find( ".swiper-slide-shadow-top"), y = p ? v.find(".swiper-slide-shadow-right") : v.find(".swiper-slide-shadow-bottom"), 0 === g.length && (g = E( '
'), v.append(g)), 0 === y.length && (y = E('
'), v.append(y)), g.length && (g[0] .style.opacity = Math.max(-w, 0)), y.length) && (y[0].style.opacity = Math .max(w, 0)) } i.css({ "-webkit-transform-origin": "50% 50% -" + l / 2 + "px", "-moz-transform-origin": "50% 50% -" + l / 2 + "px", "-ms-transform-origin": "50% 50% -" + l / 2 + "px", "transform-origin": "50% 50% -" + l / 2 + "px" }), d.shadow && (p ? e.transform("translate3d(0px, " + (n / 2 + d.shadowOffset) + "px, " + -n / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + d.shadowScale + ")") : (a = Math.abs(u) - 90 * Math.floor(Math.abs(u) / 90), n = 1.5 - (Math .sin(2 * a * Math.PI / 360) / 2 + Math.cos(2 * a * Math.PI / 360) / 2), a = d.shadowScale, n = d.shadowScale / n, h = d.shadowOffset, e.transform( "scale3d(" + a + ", 1, " + n + ") translate3d(0px, " + (r / 2 + h) + "px, " + -r / 2 / n + "px) rotateX(-90deg)"))), i.transform( "translate3d(0px,0," + (j.isSafari || j.isUiWebView ? -l / 2 : 0) + "px) rotateX(" + (t.isHorizontal() ? 0 : u) + "deg) rotateY(" + (t.isHorizontal() ? -u : 0) + "deg)") }, setTransition: function(e) { var t = this.$el; this.slides.transition(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).transition(e), this.params.cubeEffect.shadow && !this.isHorizontal() && t.find( ".swiper-cube-shadow").transition(e) } }, Z = { setTranslate: function() { for (var e = this, t = e.slides, a = e.rtlTranslate, i = 0; i < t.length; i += 1) { var s, n, r = t.eq(i), o = r[0].progress, l = -180 * (o = e.params.flipEffect.limitRotation ? Math.max(Math.min(r[0].progress, 1), -1) : o), d = 0, p = -r[0].swiperSlideOffset, c = 0; e.isHorizontal() ? a && (l = -l) : (c = p, d = -l, l = p = 0), r[0].style.zIndex = -Math .abs(Math.round(o)) + t.length, e.params.flipEffect.slideShadows && (s = e .isHorizontal() ? r.find(".swiper-slide-shadow-left") : r.find( ".swiper-slide-shadow-top"), n = e.isHorizontal() ? r.find( ".swiper-slide-shadow-right") : r.find(".swiper-slide-shadow-bottom"), 0 === s.length && (s = E('
'), r.append(s)), 0 === n.length && (n = E( '
'), r.append(n)), s.length && (s[0].style.opacity = Math.max(-o, 0)), n.length) && (n[0].style.opacity = Math.max(o, 0)), r .transform("translate3d(" + p + "px, " + c + "px, 0px) rotateX(" + d + "deg) rotateY(" + l + "deg)") } }, setTransition: function(e) { var a, i = this, t = i.slides, s = i.activeIndex, n = i.$wrapperEl; t.transition(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).transition(e), i.params.virtualTranslate && 0 !== e && (a = !1, t.eq(s) .transitionEnd(function() { if (!a && i && !i.destroyed) { a = !0, i.animating = !1; for (var e = ["webkitTransitionEnd", "transitionend"], t = 0; t < e .length; t += 1) n.trigger(e[t]) } })) } }, Q = { setTranslate: function() { for (var e = this, t = e.width, a = e.height, i = e.slides, s = e.$wrapperEl, n = e .slidesSizesGrid, r = e.params.coverflowEffect, o = e.isHorizontal(), e = e .translate, l = o ? t / 2 - e : a / 2 - e, d = o ? r.rotate : -r.rotate, p = r .depth, c = 0, u = i.length; c < u; c += 1) { var h = i.eq(c), m = n[c], m = (l - h[0].swiperSlideOffset - m / 2) / m * r.modifier, v = o ? d * m : 0, f = o ? 0 : d * m, g = -p * Math.abs(m), b = o ? 0 : r.stretch * m, w = o ? r.stretch * m : 0, w = (Math.abs(w) < .001 && (w = 0), Math.abs(b) < .001 && (b = 0), Math.abs(g) < .001 && (g = 0), Math.abs(v) < .001 && (v = 0), "translate3d(" + w + "px," + b + "px," + g + "px) rotateX(" + (f = Math.abs(f) < .001 ? 0 : f) + "deg) rotateY(" + v + "deg)"); h.transform(w), h[0].style.zIndex = 1 - Math.abs(Math.round(m)), r.slideShadows && (b = o ? h.find(".swiper-slide-shadow-left") : h.find(".swiper-slide-shadow-top"), g = o ? h.find(".swiper-slide-shadow-right") : h.find( ".swiper-slide-shadow-bottom"), 0 === b.length && (b = E( '
'), h.append(b)), 0 === g.length && (g = E('
'), h.append(g)), b.length && (b[0] .style.opacity = 0 < m ? m : 0), g.length) && (g[0].style.opacity = 0 < -m ? -m : 0) }(W.pointerEvents || W.prefixedPointerEvents) && (s[0].style.perspectiveOrigin = l + "px 50%") }, setTransition: function(e) { this.slides.transition(e).find( ".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left" ).transition(e) } }, J = { init: function() { var e = this, t = e.params.thumbs, a = e.constructor; t.swiper instanceof a ? (e.thumbs.swiper = t.swiper, q.extend(e.thumbs.swiper .originalParams, { watchSlidesProgress: !0, slideToClickedSlide: !1 }), q.extend(e.thumbs.swiper.params, { watchSlidesProgress: !0, slideToClickedSlide: !1 })) : q.isObject(t.swiper) && (e.thumbs.swiper = new a(q.extend({}, t.swiper, { watchSlidesVisibility: !0, watchSlidesProgress: !0, slideToClickedSlide: !1 })), e.thumbs.swiperCreated = !0), e.thumbs.swiper.$el.addClass(e.params.thumbs .thumbsContainerClass), e.thumbs.swiper.on("tap", e.thumbs.onThumbClick) }, onThumbClick: function() { var e, t, a, i = this, s = i.thumbs.swiper; s && (e = s.clickedIndex, (a = s.clickedSlide) && E(a).hasClass(i.params.thumbs .slideThumbActiveClass) || null == e || (a = s.params.loop ? parseInt(E(s .clickedSlide).attr("data-swiper-slide-index"), 10) : e, i.params.loop && ( s = i.activeIndex, i.slides.eq(s).hasClass(i.params.slideDuplicateClass) && (i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft, s = i .activeIndex), e = i.slides.eq(s).prevAll('[data-swiper-slide-index="' + a + '"]').eq(0).index(), t = i.slides.eq(s).nextAll( '[data-swiper-slide-index="' + a + '"]').eq(0).index(), a = void 0 === e || void 0 !== t && t - s < s - e ? t : e), i.slideTo(a))) }, update: function(e) { var t = this, a = t.thumbs.swiper; if (a) { var i, s, n, r = "auto" === a.params.slidesPerView ? a.slidesPerViewDynamic() : a.params .slidesPerView, o = (t.realIndex !== a.realIndex && (i = a.activeIndex, n = a.params.loop ? (a .slides.eq(i).hasClass(a.params.slideDuplicateClass) && (a.loopFix(), a ._clientLeft = a.$wrapperEl[0].clientLeft, i = a.activeIndex), s = a .slides.eq(i).prevAll('[data-swiper-slide-index="' + t.realIndex + '"]') .eq(0).index(), n = a.slides.eq(i).nextAll( '[data-swiper-slide-index="' + t.realIndex + '"]').eq(0).index(), void 0 === s ? n : void 0 === n ? s : n - i == i - s ? i : n - i < i - s ? n : s) : t.realIndex, a.visibleSlidesIndexes) && a.visibleSlidesIndexes .indexOf(n) < 0 && (a.params.centeredSlides ? n = i < n ? n - Math.floor(r / 2) + 1 : n + Math.floor(r / 2) - 1 : i < n && (n = n - r + 1), a.slideTo(n, e ? 0 : void 0)), 1), l = t.params.thumbs.slideThumbActiveClass; if (1 < t.params.slidesPerView && !t.params.centeredSlides && (o = t.params .slidesPerView), a.slides.removeClass(l), a.params.loop || a.params.virtual) for (var d = 0; d < o; d += 1) a.$wrapperEl.children('[data-swiper-slide-index="' + (t.realIndex + d) + '"]').addClass(l); else for (var p = 0; p < o; p += 1) a.slides.eq(t.realIndex + p).addClass(l) } } }, D = [m, v, f, g, w, x, t, { name: "mousewheel", params: { mousewheel: { enabled: !1, releaseOnEdges: !1, invert: !1, forceToAxis: !1, sensitivity: 1, eventsTarged: "container" } }, create: function() { var e = this; q.extend(e, { mousewheel: { enabled: !1, enable: S.enable.bind(e), disable: S.disable.bind(e), handle: S.handle.bind(e), handleMouseEnter: S.handleMouseEnter.bind(e), handleMouseLeave: S.handleMouseLeave.bind(e), lastScrollTime: q.now() } }) }, on: { init: function() { this.params.mousewheel.enabled && this.mousewheel.enable() }, destroy: function() { this.mousewheel.enabled && this.mousewheel.disable() } } }, { name: "navigation", params: { navigation: { nextEl: null, prevEl: null, hideOnClick: !1, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock" } }, create: function() { var e = this; q.extend(e, { navigation: { init: C.init.bind(e), update: C.update.bind(e), destroy: C.destroy.bind(e), onNextClick: C.onNextClick.bind(e), onPrevClick: C.onPrevClick.bind(e) } }) }, on: { init: function() { this.navigation.init(), this.navigation.update() }, toEdge: function() { this.navigation.update() }, fromEdge: function() { this.navigation.update() }, destroy: function() { this.navigation.destroy() }, click: function(e) { var t, a = this, i = a.navigation, s = i.$nextEl, i = i.$prevEl; !a.params.navigation.hideOnClick || E(e.target).is(i) || E(e.target).is(s) || (s ? t = s.hasClass(a.params.navigation.hiddenClass) : i && (t = i.hasClass(a .params.navigation.hiddenClass)), !0 === t ? a.emit("navigationShow", a) : a.emit("navigationHide", a), s && s.toggleClass(a.params.navigation .hiddenClass), i && i.toggleClass(a.params.navigation.hiddenClass)) } } }, { name: "pagination", params: { pagination: { el: null, bulletElement: "span", clickable: !1, hideOnClick: !1, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: !1, type: "bullets", dynamicBullets: !1, dynamicMainBullets: 1, formatFractionCurrent: function(e) { return e }, formatFractionTotal: function(e) { return e }, bulletClass: "swiper-pagination-bullet", bulletActiveClass: "swiper-pagination-bullet-active", modifierClass: "swiper-pagination-", currentClass: "swiper-pagination-current", totalClass: "swiper-pagination-total", hiddenClass: "swiper-pagination-hidden", progressbarFillClass: "swiper-pagination-progressbar-fill", progressbarOppositeClass: "swiper-pagination-progressbar-opposite", clickableClass: "swiper-pagination-clickable", lockClass: "swiper-pagination-lock" } }, create: function() { var e = this; q.extend(e, { pagination: { init: M.init.bind(e), render: M.render.bind(e), update: M.update.bind(e), destroy: M.destroy.bind(e), dynamicBulletIndex: 0 } }) }, on: { init: function() { this.pagination.init(), this.pagination.render(), this.pagination.update() }, activeIndexChange: function() { !this.params.loop && void 0 !== this.snapIndex || this.pagination.update() }, snapIndexChange: function() { this.params.loop || this.pagination.update() }, slidesLengthChange: function() { this.params.loop && (this.pagination.render(), this.pagination.update()) }, snapGridLengthChange: function() { this.params.loop || (this.pagination.render(), this.pagination.update()) }, destroy: function() { this.pagination.destroy() }, click: function(e) { var t = this; t.params.pagination.el && t.params.pagination.hideOnClick && 0 < t.pagination.$el .length && !E(e.target).hasClass(t.params.pagination.bulletClass) && (!0 === t .pagination.$el.hasClass(t.params.pagination.hiddenClass) ? t.emit( "paginationShow", t) : t.emit("paginationHide", t), t.pagination.$el .toggleClass(t.params.pagination.hiddenClass)) } } }, { name: "scrollbar", params: { scrollbar: { el: null, dragSize: "auto", hide: !1, draggable: !1, snapOnRelease: !0, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag" } }, create: function() { var e = this; q.extend(e, { scrollbar: { init: P.init.bind(e), destroy: P.destroy.bind(e), updateSize: P.updateSize.bind(e), setTranslate: P.setTranslate.bind(e), setTransition: P.setTransition.bind(e), enableDraggable: P.enableDraggable.bind(e), disableDraggable: P.disableDraggable.bind(e), setDragPosition: P.setDragPosition.bind(e), getPointerPosition: P.getPointerPosition.bind(e), onDragStart: P.onDragStart.bind(e), onDragMove: P.onDragMove.bind(e), onDragEnd: P.onDragEnd.bind(e), isTouched: !1, timeout: null, dragTimeout: null } }) }, on: { init: function() { this.scrollbar.init(), this.scrollbar.updateSize(), this.scrollbar.setTranslate() }, update: function() { this.scrollbar.updateSize() }, resize: function() { this.scrollbar.updateSize() }, observerUpdate: function() { this.scrollbar.updateSize() }, setTranslate: function() { this.scrollbar.setTranslate() }, setTransition: function(e) { this.scrollbar.setTransition(e) }, destroy: function() { this.scrollbar.destroy() } } }, { name: "parallax", params: { parallax: { enabled: !1 } }, create: function() { q.extend(this, { parallax: { setTransform: X.setTransform.bind(this), setTranslate: X.setTranslate.bind(this), setTransition: X.setTransition.bind(this) } }) }, on: { beforeInit: function() { this.params.parallax.enabled && (this.params.watchSlidesProgress = !0, this .originalParams.watchSlidesProgress = !0) }, init: function() { this.params.parallax.enabled && this.parallax.setTranslate() }, setTranslate: function() { this.params.parallax.enabled && this.parallax.setTranslate() }, setTransition: function(e) { this.params.parallax.enabled && this.parallax.setTransition(e) } } }, { name: "zoom", params: { zoom: { enabled: !1, maxRatio: 3, minRatio: 1, toggle: !0, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed" } }, create: function() { var i = this, t = { enabled: !1, scale: 1, currentScale: 1, isScaling: !1, gesture: { $slideEl: void 0, slideWidth: void 0, slideHeight: void 0, $imageEl: void 0, $imageWrapEl: void 0, maxRatio: 3 }, image: { isTouched: void 0, isMoved: void 0, currentX: void 0, currentY: void 0, minX: void 0, minY: void 0, maxX: void 0, maxY: void 0, width: void 0, height: void 0, startX: void 0, startY: void 0, touchesStart: {}, touchesCurrent: {} }, velocity: { x: void 0, y: void 0, prevPositionX: void 0, prevPositionY: void 0, prevTime: void 0 } }, s = ( "onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out" .split(" ").forEach(function(e) { t[e] = Y[e].bind(i) }), q.extend(i, { zoom: t }), 1); Object.defineProperty(i.zoom, "scale", { get: function() { return s }, set: function(e) { var t, a; s !== e && (t = i.zoom.gesture.$imageEl ? i.zoom.gesture.$imageEl[ 0] : void 0, a = i.zoom.gesture.$slideEl ? i.zoom.gesture .$slideEl[0] : void 0, i.emit("zoomChange", e, t, a)), s = e } }) }, on: { init: function() { this.params.zoom.enabled && this.zoom.enable() }, destroy: function() { this.zoom.disable() }, touchStart: function(e) { this.zoom.enabled && this.zoom.onTouchStart(e) }, touchEnd: function(e) { this.zoom.enabled && this.zoom.onTouchEnd(e) }, doubleTap: function(e) { this.params.zoom.enabled && this.zoom.enabled && this.params.zoom.toggle && this .zoom.toggle(e) }, transitionEnd: function() { this.zoom.enabled && this.params.zoom.enabled && this.zoom.onTransitionEnd() } } }, { name: "lazy", params: { lazy: { enabled: !1, loadPrevNext: !1, loadPrevNextAmount: 1, loadOnTransitionStart: !1, elementClass: "swiper-lazy", loadingClass: "swiper-lazy-loading", loadedClass: "swiper-lazy-loaded", preloaderClass: "swiper-lazy-preloader" } }, create: function() { q.extend(this, { lazy: { initialImageLoaded: !1, load: F.load.bind(this), loadInSlide: F.loadInSlide.bind(this) } }) }, on: { beforeInit: function() { this.params.lazy.enabled && this.params.preloadImages && (this.params .preloadImages = !1) }, init: function() { this.params.lazy.enabled && !this.params.loop && 0 === this.params.initialSlide && this.lazy.load() }, scroll: function() { this.params.freeMode && !this.params.freeModeSticky && this.lazy.load() }, resize: function() { this.params.lazy.enabled && this.lazy.load() }, scrollbarDragMove: function() { this.params.lazy.enabled && this.lazy.load() }, transitionStart: function() { var e = this; e.params.lazy.enabled && (e.params.lazy.loadOnTransitionStart || !e.params.lazy .loadOnTransitionStart && !e.lazy.initialImageLoaded) && e.lazy.load() }, transitionEnd: function() { this.params.lazy.enabled && !this.params.lazy.loadOnTransitionStart && this.lazy .load() } } }, { name: "controller", params: { controller: { control: void 0, inverse: !1, by: "slide" } }, create: function() { var e = this; q.extend(e, { controller: { control: e.params.controller.control, getInterpolateFunction: k.getInterpolateFunction.bind(e), setTranslate: k.setTranslate.bind(e), setTransition: k.setTransition.bind(e) } }) }, on: { update: function() { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, resize: function() { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, observerUpdate: function() { this.controller.control && this.controller.spline && (this.controller.spline = void 0, delete this.controller.spline) }, setTranslate: function(e, t) { this.controller.control && this.controller.setTranslate(e, t) }, setTransition: function(e, t) { this.controller.control && this.controller.setTransition(e, t) } } }, { name: "a11y", params: { a11y: { enabled: !0, notificationClass: "swiper-notification", prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide", paginationBulletMessage: "Go to slide {{index}}" } }, create: function() { var t = this; q.extend(t, { a11y: { liveRegion: E('') } }), Object.keys(U).forEach(function(e) { t.a11y[e] = U[e].bind(t) }) }, on: { init: function() { this.params.a11y.enabled && (this.a11y.init(), this.a11y.updateNavigation()) }, toEdge: function() { this.params.a11y.enabled && this.a11y.updateNavigation() }, fromEdge: function() { this.params.a11y.enabled && this.a11y.updateNavigation() }, paginationUpdate: function() { this.params.a11y.enabled && this.a11y.updatePagination() }, destroy: function() { this.params.a11y.enabled && this.a11y.destroy() } } }, { name: "history", params: { history: { enabled: !1, replaceState: !1, key: "slides" } }, create: function() { var e = this; q.extend(e, { history: { init: z.init.bind(e), setHistory: z.setHistory.bind(e), setHistoryPopState: z.setHistoryPopState.bind(e), scrollToSlide: z.scrollToSlide.bind(e), destroy: z.destroy.bind(e) } }) }, on: { init: function() { this.params.history.enabled && this.history.init() }, destroy: function() { this.params.history.enabled && this.history.destroy() }, transitionEnd: function() { this.history.initialized && this.history.setHistory(this.params.history.key, this .activeIndex) } } }, { name: "hash-navigation", params: { hashNavigation: { enabled: !1, replaceState: !1, watchState: !1 } }, create: function() { var e = this; q.extend(e, { hashNavigation: { initialized: !1, init: $.init.bind(e), destroy: $.destroy.bind(e), setHash: $.setHash.bind(e), onHashCange: $.onHashCange.bind(e) } }) }, on: { init: function() { this.params.hashNavigation.enabled && this.hashNavigation.init() }, destroy: function() { this.params.hashNavigation.enabled && this.hashNavigation.destroy() }, transitionEnd: function() { this.hashNavigation.initialized && this.hashNavigation.setHash() } } }, { name: "autoplay", params: { autoplay: { enabled: !1, delay: 3e3, waitForTransition: !0, disableOnInteraction: !0, stopOnLastSlide: !1, reverseDirection: !1 } }, create: function() { var t = this; q.extend(t, { autoplay: { running: !1, paused: !1, run: I.run.bind(t), start: I.start.bind(t), stop: I.stop.bind(t), pause: I.pause.bind(t), onTransitionEnd: function(e) { t && !t.destroyed && t.$wrapperEl && e.target === this && (t .$wrapperEl[0].removeEventListener("transitionend", t .autoplay.onTransitionEnd), t.$wrapperEl[0] .removeEventListener("webkitTransitionEnd", t.autoplay .onTransitionEnd), t.autoplay.paused = !1, t .autoplay.running ? t.autoplay.run() : t.autoplay.stop() ) } } }) }, on: { init: function() { this.params.autoplay.enabled && this.autoplay.start() }, beforeTransitionStart: function(e, t) { this.autoplay.running && (t || !this.params.autoplay.disableOnInteraction ? this .autoplay.pause(e) : this.autoplay.stop()) }, sliderFirstMove: function() { this.autoplay.running && (this.params.autoplay.disableOnInteraction ? this.autoplay .stop() : this.autoplay.pause()) }, destroy: function() { this.autoplay.running && this.autoplay.stop() } } }, { name: "effect-fade", params: { fadeEffect: { crossFade: !1 } }, create: function() { q.extend(this, { fadeEffect: { setTranslate: K.setTranslate.bind(this), setTransition: K.setTransition.bind(this) } }) }, on: { beforeInit: function() { var e, t = this; "fade" === t.params.effect && (t.classNames.push(t.params.containerModifierClass + "fade"), q.extend(t.params, e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), q.extend(t.originalParams, e)) }, setTranslate: function() { "fade" === this.params.effect && this.fadeEffect.setTranslate() }, setTransition: function(e) { "fade" === this.params.effect && this.fadeEffect.setTransition(e) } } }, { name: "effect-cube", params: { cubeEffect: { slideShadows: !0, shadow: !0, shadowOffset: 20, shadowScale: .94 } }, create: function() { q.extend(this, { cubeEffect: { setTranslate: _.setTranslate.bind(this), setTransition: _.setTransition.bind(this) } }) }, on: { beforeInit: function() { var e, t = this; "cube" === t.params.effect && (t.classNames.push(t.params.containerModifierClass + "cube"), t.classNames.push(t.params.containerModifierClass + "3d"), q .extend(t.params, e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, resistanceRatio: 0, spaceBetween: 0, centeredSlides: !1, virtualTranslate: !0 }), q.extend(t.originalParams, e)) }, setTranslate: function() { "cube" === this.params.effect && this.cubeEffect.setTranslate() }, setTransition: function(e) { "cube" === this.params.effect && this.cubeEffect.setTransition(e) } } }, { name: "effect-flip", params: { flipEffect: { slideShadows: !0, limitRotation: !0 } }, create: function() { q.extend(this, { flipEffect: { setTranslate: Z.setTranslate.bind(this), setTransition: Z.setTransition.bind(this) } }) }, on: { beforeInit: function() { var e, t = this; "flip" === t.params.effect && (t.classNames.push(t.params.containerModifierClass + "flip"), t.classNames.push(t.params.containerModifierClass + "3d"), q .extend(t.params, e = { slidesPerView: 1, slidesPerColumn: 1, slidesPerGroup: 1, watchSlidesProgress: !0, spaceBetween: 0, virtualTranslate: !0 }), q.extend(t.originalParams, e)) }, setTranslate: function() { "flip" === this.params.effect && this.flipEffect.setTranslate() }, setTransition: function(e) { "flip" === this.params.effect && this.flipEffect.setTransition(e) } } }, { name: "effect-coverflow", params: { coverflowEffect: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows: !0 } }, create: function() { q.extend(this, { coverflowEffect: { setTranslate: Q.setTranslate.bind(this), setTransition: Q.setTransition.bind(this) } }) }, on: { beforeInit: function() { var e = this; "coverflow" === e.params.effect && (e.classNames.push(e.params .containerModifierClass + "coverflow"), e.classNames.push(e.params .containerModifierClass + "3d"), e.params.watchSlidesProgress = !0, e .originalParams.watchSlidesProgress = !0) }, setTranslate: function() { "coverflow" === this.params.effect && this.coverflowEffect.setTranslate() }, setTransition: function(e) { "coverflow" === this.params.effect && this.coverflowEffect.setTransition(e) } } }, { name: "thumbs", params: { thumbs: { swiper: null, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-container-thumbs" } }, create: function() { q.extend(this, { thumbs: { swiper: null, init: J.init.bind(this), update: J.update.bind(this), onThumbClick: J.onThumbClick.bind(this) } }) }, on: { beforeInit: function() { var e = this.params.thumbs; e && e.swiper && (this.thumbs.init(), this.thumbs.update(!0)) }, slideChange: function() { this.thumbs.swiper && this.thumbs.update() }, update: function() { this.thumbs.swiper && this.thumbs.update() }, resize: function() { this.thumbs.swiper && this.thumbs.update() }, observerUpdate: function() { this.thumbs.swiper && this.thumbs.update() }, setTransition: function(e) { var t = this.thumbs.swiper; t && t.setTransition(e) }, beforeDestroy: function() { var e = this.thumbs.swiper; e && this.thumbs.swiperCreated && e && e.destroy() } } }]; return void 0 === h.use && (h.use = h.Class.use, h.installModule = h.Class.installModule), h.use(D), h }); var bgBlue = "#EDF2FC", darkBlue = "#5BC0DE", darkBlue2 = "#409EFF", bgGreen = "#F0F9EB", darkGreen = "#5CB85C", bgOrange = "#FDF6EC", darkOrange = "#F0AD4E", bgRed = "#FEF0F0", darkRed = "#D9534F", lightGrey = "#E2E2E2", Icon = function() { function n(e, t, n) { var l = document.createElementNS("http://www.w3.org/2000/svg", "svg"); return l.setAttribute("viewBox", "0 0 1024 1024"), l.setAttribute("width", t), l.setAttribute("height", n), (t = document.createElementNS("http://www.w3.org/2000/svg", "path")).setAttribute("d", e.path1), t .setAttribute("fill", e.bgc), l.appendChild(t), (n = document.createElementNS( "http://www.w3.org/2000/svg", "path")).setAttribute("d", e.path2), n.setAttribute("fill", "#FFFFFF"), l.appendChild(n), e.path3 && ((t = document.createElementNS("http://www.w3.org/2000/svg", "path")).setAttribute("d", e.path3), t.setAttribute("fill", "#FFFFFF"), l.appendChild(t)), l.style .verticalAlign = "middle", l } var l = { path1: "M512 524.8m-416 0a416 416 0 1 0 832 0 416 416 0 1 0-832 0Z", bgc: darkBlue, path2: "M512 435.2c-19.2 0-38.4 19.2-38.4 38.4V768c0 19.2 19.2 38.4 38.4 38.4s38.4-19.2 38.4-38.4V473.6c0-19.2-19.2-38.4-38.4-38.4z", path3: "M512 300.8m-51.2 0a51.2 51.2 0 1 0 102.4 0 51.2 51.2 0 1 0-102.4 0Z" }, o = { path1: "M512 512m-403.2 0a403.2 403.2 0 1 0 806.4 0 403.2 403.2 0 1 0-806.4 0Z", bgc: darkOrange, path2: "M512 608c-19.2 0-38.4-19.2-38.4-38.4V288c0-19.2 19.2-38.4 38.4-38.4s38.4 19.2 38.4 38.4V576c0 12.8-19.2 32-38.4 32z", path3: "M512 736m-44.8 0a44.8 44.8 0 1 0 89.6 0 44.8 44.8 0 1 0-89.6 0Z" }, r = { path1: "M512 76.8c-236.8 0-435.2 192-435.2 435.2s192 435.2 435.2 435.2 435.2-192 435.2-435.2S748.8 76.8 512 76.8z m249.6 320L480 704c-12.8 12.8-38.4 12.8-51.2 0L288 556.8c-12.8-12.8-12.8-38.4 0-51.2 12.8-12.8 38.4-12.8 51.2 0l115.2 115.2L704 339.2c12.8-12.8 38.4-12.8 51.2 0 25.6 12.8 25.6 38.4 6.4 57.6z", bgc: darkGreen, path2: "M710.4 339.2l-256 281.6-115.2-115.2c-12.8-12.8-38.4-12.8-51.2 0-12.8 12.8-12.8 38.4 0 51.2l147.2 140.8c12.8 12.8 38.4 12.8 51.2 0L768 390.4c12.8-12.8 12.8-38.4 0-51.2-19.2-12.8-44.8-12.8-57.6 0z" }, i = { path1: "M512 512m-435.2 0a435.2 435.2 0 1 0 870.4 0 435.2 435.2 0 1 0-870.4 0Z", bgc: darkRed, path2: "M563.2 512l108.8-108.8c12.8-12.8 12.8-38.4 0-51.2-12.8-12.8-38.4-12.8-51.2 0L512 460.8 403.2 352c-12.8-12.8-38.4-12.8-51.2 0-12.8 12.8-12.8 38.4 0 51.2L460.8 512 352 620.8c-12.8 12.8-12.8 38.4 0 51.2 12.8 12.8 38.4 12.8 51.2 0L512 563.2l108.8 108.8c12.8 12.8 38.4 12.8 51.2 0 12.8-12.8 12.8-38.4 0-51.2L563.2 512z" }; return { info: function(e, t) { return n(l, e, t) }, warning: function(e, t) { return n(o, e, t) }, success: function(e, t) { return n(r, e, t) }, error: function(e, t) { return n(i, e, t) } } }, Button = function(n, l, e, t) { var o = 0, r = document.createElement("div"), t = (r.style.backgroundColor = n, r.style.color = "default" == t ? "#000" : "#fff", r.style.width = 16 + 7 * getByteLength(e) + "px", r.className = "tgtool tgBtn", r.onmousemove = function() { r.style.backgroundColor = l }, r.onmouseout = function() { 0 == o && (r.style.backgroundColor = n) }, document.onclick = function(e) { var t = r; e.target == t || t.contains(e.target) ? (o = 1, r.style.backgroundColor = l) : (o = 0, r.style .backgroundColor = n) }, document.createElement("label")); return t.innerText = e, t.style.verticalAlign = "middle", r.appendChild(t), r }, TGTool = function() { function t(e, t) { var n = 0, l = Icon()[e.type], o = (n++, document.createElement("div")); return o.style.backgroundColor = e.bgc, o.style.color = e.color, o.style.position = " fixed", o.style.left = "50%", o.style.top = 50 * n - 30 + "px", o.style.marginLeft = "-" + (7 * getByteLength(t) + 70) / 2 + "px", o.className = "tgAlertDiv animated bounceInDown tgtool", o.appendChild(l(20, 20)), (e = document .createElement("label")).innerText = t, e.style.verticalAlign = "middle", e.style.marginLeft = "10px", o.appendChild(e), c.appendChild(o), setTimeout(function() { o.classList.remove("animated", "bounceInDown"), o.classList.add("remove"), setTimeout( function() { c.removeChild(o), n-- }, 4e3) }, 4e3), !0 } var c = document.getElementsByTagName("body")[0], n = { type: "info", bgc: bgBlue, color: darkBlue }, l = { type: "warning", bgc: bgOrange, color: darkOrange }, o = { type: "success", bgc: bgGreen, color: darkGreen }, r = { type: "error", bgc: bgRed, color: darkRed }; return { info: function(e) { return t(n, e) }, warning: function(e) { return t(l, e) }, success: function(e) { return t(o, e) }, error: function(e) { return t(r, e) }, confirm: function(e, t, n, l) { var o = document.createElement("div"), r = (o.style.position = "fixed", o.style.zIndex = 1e6, o.style.top = 0, o.style.bottom = 0, o .style.left = 0, o.style.right = 0, o.style.backgroundColor = lightGrey, o.style.opacity = "0.5", c.appendChild(o), document.createElement("div")), i = (r.style.backgroundColor = "#fff", r.style.color = "#000", r.style.boxShadow = "0 2px 12px 0 rgba(0,0,0,.1)", r.style.width = "400px", r.style.height = "140px", r.style .position = " fixed", r.style.zIndex = 9999999, r.style.top = "200px", r.style.left = "50%", r.style.marginLeft = "-200px", r.style.padding = "0 10px", r.style.borderRadius = "8px", r .style.fontSize = "14px", r.style.textAlign = "left", document.createElement("div")), a = (i.style.backgroundColor = bgBlue, i.style.borderRadius = "8px 8px 0 0", i.style.width = r .width, i.style.height = "40px", i.style.textAlign = "center", i.style.margin = "0 -10px", i .style.top = "0", document.createElement("label")), e = (a.innerText = e, a.style.verticalAlign = "middle", a.style.fontSize = "18px", a.style .lineHeight = "40px", i.appendChild(a), document.createElement("label")), a = (e.innerText = t, e.style.fontSize = "14px", e.style.lineHeight = "24px", e.style.position = "absolute", e.style.width = "90%", e.style.top = "60px", e.style.left = "5%", getByteLength( t) / 54), t = (r.style.height.replace("px", "") < 24 * a + 116 && (r.style.height = 24 * a + 126 + "px"), Button(darkBlue, darkBlue2, "确定", "")), a = (t.style.position = "absolute", t.style.bottom = "10px", t.style.right = "20px", t.onclick = function() { c.removeChild(r), c.removeChild(o), n() }, Button("#fff", bgBlue, "取消", "default")); a.style.position = "absolute", a.style.bottom = "10px", a.style.right = "116px", a.onclick = function() { c.removeChild(r), c.removeChild(o), l && l() }, r.appendChild(i), r.appendChild(e), r.appendChild(t), r.appendChild(a), c.appendChild(r) } } }; function getByteLength(e) { return e.replace(/[\u0391-\uFFE5]/g, "aa").length } var carouselFn = { default: function(i, e) { theme.swiperArr[i.id] && theme.swiperArr[i.id].destroy(); var n = document.querySelector(".lanyun-section-" + i.id + " .swiper-container"); if (n) { var a, o, t, n = JSON.parse(n.getAttribute("data-carousel")), s = !1, r = 0, l = 0, c = (n.pagination && (r = -1 < n.pagination.indexOf("arrow") ? 1 : 0, l = -1 < n.pagination .indexOf("dot") ? 1 : 0), n.autoplay ? 1 : 0), d = n.speed || 2e3; const h = function(e) { s = !1; var n = e.slides[e.activeIndex]; n && (n = n.querySelector("video"), clearTimeout(o), n ? n.ended && setTimeout(function() { e.slideNext() }, 200) : t = setTimeout(function() { e.slideNext() }, d)) }; var u, p = { loop: !0, pagination: {}, navigation: {}, on: { slideChangeTransitionStart: function() { clearTimeout(o) }, slideChangeTransitionEnd: function() { var e, n, t; c && ((e = this).el.removeEventListener("mouseleave", function() { h(e) }), n = function() { s ? a.play() : theme.swiperArr[i.id].slideNext() }, t = e.slides[e.activeIndex]) && (t.querySelector("video") ? (a && a === t .querySelector("video") && (a.pause(), a.currentTime = 0, a .removeEventListener("ended", n)), (a = t.querySelector( "video")).play(), a.addEventListener("ended", n)) : (a && (a .pause(), a.currentTime = 0, a.removeEventListener("ended", n), a = null), o = setTimeout(function() { s || theme.swiperArr[i.id].slideNext() }, d))) } } }; if (e) for (var f in e) p[f] = e[f]; 1 == r ? (p.navigation.nextEl = ".lanyun-section-" + i.id + " .swiper-button-next", p.navigation .prevEl = ".lanyun-section-" + i.id + " .swiper-button-prev") : delete p.navigation, 1 == l ? (p.pagination.el = ".lanyun-section-" + i.id + " .swiper-pagination", p.pagination .clickable = !0) : delete p.pagination, n.effect && (p.effect = n.effect), theme.swiperArr[i .id] = new Swiper(".lanyun-section-" + i.id + " .swiper-container", p), 1 == c && ((u = theme.swiperArr[i.id]).el.addEventListener("mouseenter", function() { clearTimeout(t), s = !0 }), u.el.addEventListener("mouseleave", function() { h(u) })) } }, fade: function(e) { carouselFn.default(e) }, coverflow: function(e) { carouselFn.default(e, { speed: 1400 }) }, push: function(e) { carouselFn.default(e, { watchSlidesProgress: !0, speed: 1e3 }), theme.swiperArr[e.id].on("progress", function() { for (var e = this, n = 0; n < e.slides.length; n++) { var t = e.slides[n].progress * (.5 * e.width); e.slides[n].querySelector("a").style.transform = "translate3d(" + t + "px, 0, 0)" } }), theme.swiperArr[e.id].on("touchStart", function() { for (var e = 0; e < this.slides.length; e++) this.slides[e].style.transition = "" }), theme.swiperArr[e.id].on("setTransition", function(e) { for (var n = this, t = 0; t < n.slides.length; t++) n.slides[t].style.transition = e + "ms", n.slides[t].querySelector("a").style.transition = e + "ms" }) }, slowtransition: function(e) { carouselFn.default(e, { allowTouchMove: !1, speed: 700, lazy: { loadPrevNext: !0, loadPrevNextAmount: 3 }, centeredSlides: !0, spaceBetween: 50, slidesOffsetBefore: 40, slidesPerView: "auto" }), theme.swiperArr[e.id].on("slideChangeTransitionStart", function() { this.slides.transition(this.params.speed).transform("translate3d(0, 0, 0)") }), theme.swiperArr[e.id].on("slideChangeTransitionEnd", function() { this.slides.transition(this.params.autoplay.delay + this.params.speed).transform( "translate3d(-60px, 0, 0)") }) } }; window.theme = { captchaKey: "", swiperArr: [], init: function() { for (var e = document.querySelectorAll("[data-id][class*='lanyun-section-']"), n = 0; n < e .length; n++) { var t = e[n], i = t.dataset.section_type, t = { id: t.dataset.id }; this.hasOwnProperty(i) && this[i](t) } this.aos(), this.jQToggler(), this.tabs(".tab", ".tab-box", "click"), this.lang(), this.analytics(app .site_id), this.VariablePolyfill(), this.kefu(), this.affix(), app && app.forbidCopy && this .forbidCopy(), lightbox.option({ albumLabel: "%1 / %2" }), document.addEventListener("WeixinJSBridgeReady", function() { theme.autoplayVideo() }, !1), document.addEventListener("touchstart", function() { theme.autoplayVideo() }), this.animateStyle() }, autoplayVideo() { var n = document.querySelectorAll("video[autoplay]"); for (let e = 0; e < n.length; e++) n[e].play() }, carousel: function(e) { var n = document.querySelector(".lanyun-section-" + e.id + " .swiper-container"); n && ((n = JSON.parse(n.getAttribute("data-carousel"))).effect ? carouselFn[n.effect](e) : carouselFn .default(e)) }, swiperFunc: function(e) { this.swiperArr[e.id] && this.swiperArr[e.id].destroy(); var n, t, i, a, o, s, r, l, c, d = document.querySelector(".lanyun-section-" + e.id + " .swiper-container"); d && (i = 20, a = 15, o = t = n = 0, r = s = c = 1, (d = JSON.parse(d.getAttribute("data-carousel")))[ "rowCount-desktop"] && (c = d["rowCount-desktop"]), d["rowCount-ipad"] && (s = d[ "rowCount-ipad"]), d["rowCount-mobile"] && (r = d["rowCount-mobile"]), d.pagination && ( n = -1 < d.pagination.indexOf("arrow") ? 1 : 0, t = -1 < d.pagination.indexOf("dot") ? 1 : 0 ), d["slidesspace-desktop"] && (i = Number(d["slidesspace-desktop"].replace("px", ""))), d[ "slidesspace-ipad"] && (a = Number(d["slidesspace-ipad"].replace("px", ""))), d[ "slidesspace-mobile"] && (o = Number(d["slidesspace-mobile"].replace("px", ""))), l = d .autoplay ? 1 : 0, d = d.speed, (c = { loop: !0, slidesPerView: c, spaceBetween: i, autoplay: {}, pagination: {}, navigation: {} }).breakpoints = { 1280: { slidesPerView: s, spaceBetween: a }, 768: { slidesPerView: r, spaceBetween: o } }, 1 == n ? (c.navigation.nextEl = ".lanyun-section-" + e.id + " .swiper-button-next", c .navigation.prevEl = ".lanyun-section-" + e.id + " .swiper-button-prev") : delete c .navigation, 1 == t ? (c.pagination.el = ".lanyun-section-" + e.id + " .swiper-pagination", c .pagination.clickable = !0) : delete c.pagination, 1 == l ? (c.autoplay.delay = d || 2e3, c .autoplay.disableOnInteraction = !1) : delete c.autoplay, this.swiperArr[e.id] = new Swiper( ".lanyun-section-" + e.id + " .swiper-container", c)) }, count: function(n) { if (!isFullpage) { var t = document.querySelector(".lanyun-section-" + n.id + " .lanyun-count-wrap"); if (t) { t = JSON.parse(t.getAttribute("data-count")); t.separatorStyle && "space" === t.separatorStyle && (t.separatorStyle = " "); let e = { useGrouping: t.separator || !1, separator: t.separatorStyle || "", duration: t.duration }; $(".lanyun-section-" + n.id + " .lanyun-count-num").each(function() { e.endVal = Number($(this).attr("data-number")), $(this).countup(e) }) } } }, gallery: function(e) { this.swiperFunc(e) }, category: function(e) { this.swiperFunc(e); let n = window.location.href; $(".lanyun-section-" + e.id + " a").each(function() { $(this).attr("href") === n && $(this).parents("li").addClass("active") }) }, "product-row": function(e) { this.swiperFunc(e) }, "article-row": function(e) { this.swiperFunc(e) }, "related-article": function(e) { this.swiperFunc(e) }, "related-product": function(e) { this.swiperFunc(e) }, form: function(e) { var n = e.id, e = $(".lanyun-section-" + n + " form"), o = e.attr("action"), s = (0 < $(".captcha-img-" + n).length && this.getCaptcha(n), this), r = $('[name="LANG"]').val(), l = TGTool(); $(".captcha-img-" + n).click(function() { s.getCaptcha(n) }), e.validator({ rules: { phone: /^1[3-9]\d{9}$/ }, target: function(e) { var e = $(e).closest(".lanyun-form-item"), n = e.find("span.err-msg"); return n = n.length ? n : $('').appendTo(e) }, valid: function(n) { var e = $(n).serializeArray(), t = $("input[type=radio],input[type=checkbox]", $(n)), i = {}, a = ($.each(t, function() { i.hasOwnProperty(this.name) || 0 == $("input[name='" + this.name + "']:checked").length && (i[this.name] = "", e.push({ name: this.name, value: "" })) }), $(n).find("[type='submit']")), t = s.formDataFormat(e); a.attr("disabled", "disabled"), $.ajax({ url: o, data: t, headers: { lang: r }, type: "POST", success: function(e) { l.success(e.message), a.removeAttr("disabled"), $(n).find( "[type='reset']").click() }, error: function(e) { l.error(e.responseJSON.message), a.removeAttr("disabled") } }) } }) }, getCaptcha: function(n) { var e = "/captcha?key="; try { var t = top.location.host, i = new RegExp("^" + app.site_id); self != top && i.test(t) && (e = "/web" + e) } catch (e) {} this.captchaKey = Math.random().toString(36).slice(-6), $.get(e + this.captchaKey, function(e) { $(".captcha-img-" + n).attr("src", e.data.img) }) }, formDataFormat: function(e) { for (var n, t = {}, i = {}, a = 0; a < e.length; a++) "LANG" !== e[a].name && ("_token" === e[a].name || "id" === e[a].name ? t[e[a].name] = e[a].value : i.hasOwnProperty(e[a].name) ? (n = i[e[a] .name]) instanceof Array ? (n.push(e[a].value), i[e[a].name] = n) : (i[e[a].name] = [], i[e[ a].name].push(n), i[e[a].name].push(e[a].value)) : i[e[a].name] = e[a].value); return t.data = i, t.key = this.captchaKey, t }, "product-show": function(e) { this.socialShare(), this.getAndSetHits(".lanyun-section-" + e.id + " #hits"), $(".lanyun-section-" + e .id + " .lanyun-product-detail-tab .lanyun-hd li").click(function() { var e = $(this).index(); $(this).addClass("active").siblings().removeClass("active"), $( ".lanyun-product-detail-tab .lanyun-product-detail-text").eq(e).addClass("active") .siblings().removeClass("active") }); var n = document.querySelector("#lanyun-detail-thumbs"), t = "bottom"; if (n) return t = n.getAttribute("data-direction"), n = new Swiper(".lanyun-section-" + e.id + " .lanyun-effect-thumbs", { spaceBetween: 10, slidesPerView: "auto", freeMode: !0, observeParents: !0, observer: !0, watchSlidesVisibility: !0, watchSlidesProgress: !0, direction: "bottom" === t ? "horizontal" : "vertical" }), new Swiper(".lanyun-section-" + e.id + " .lanyun-effect-top", { navigation: { nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev" }, thumbs: { swiper: n }, observeParents: !0, observer: !0, on: { slideChangeTransitionEnd: function() { var e = this.slides[this.previousIndex].firstElementChild; "VIDEO" !== e.nodeName || e.paused || e.pause() } } }) }, "article-show": function(e) { var n; if (this.socialShare(), this.getAndSetHits(".lanyun-section-" + e.id + " #hits"), document .querySelector("#lanyun-detail-thumbs")) return n = document.querySelector(".lanyun-section-" + e .id + " .swiper-container"), JSON.parse(n.getAttribute("data-swiper")), new Swiper( ".lanyun-section-" + e.id + " .lanyun-effect-top", { navigation: { nextEl: ".lanyun-section-" + e.id + " .swiper-button-next", prevEl: ".lanyun-section-" + e.id + " .swiper-button-prev" }, pagination: { el: ".lanyun-section-" + e.id + " .swiper-pagination", clickable: !0 }, on: { slideChangeTransitionEnd: function() { var e = this.slides[this.previousIndex].firstElementChild; "VIDEO" !== e.nodeName || e.paused || e.pause() } } }) }, dropToggle: function(e) { e.hasClass("on") ? e.removeClass("on") : e.addClass("on"), e.siblings().removeClass("on") }, nav: function(e) { let n = this, t = window.location.href, i = (-1 < t.indexOf("?") && (t = t.substring(0, t.indexOf("?"))), new RegExp("^" + t + "?$")); $(".lanyun-section-" + e.id + " a").each(function() { i.test($(this).attr("href")) && $(this).parents("li").addClass("active") }); function a() { 768 < $(window).width() ? ($(".lanyun-section-" + e.id + " .lanyun-dropdown-panel").is(":hidden") && $(".lanyun-section-" + e.id + " .lanyun-dropdown-panel").attr("style", ""), $( ".lanyun-section-" + e.id + " .direction-h li").hover(function() { $(this).addClass("on").siblings("li").removeClass("on") }, function() { $(this).removeClass("on") }), $(".lanyun-section-" + e.id + " .direction-h-full li").hover(function() { $(this).addClass("on").siblings("li").removeClass("on") }, function() { $(this).removeClass("on") }), $(".lanyun-section-" + e.id + " .direction-v li").hover(function() { $(this).addClass("on").siblings("li").removeClass("on") }, function() { $(this).removeClass("on") })) : $(".lanyun-section-" + e.id + " .mobile-dropdown").click(function() { n.dropToggle($(this).parent().parent()) }) } a(), $(window).resize(function() { a() }) }, "bottom-nav": function(e) { let n = window.location.href, t = (-1 < n.indexOf("?") && (n = n.substring(0, n.indexOf("?"))), new RegExp("^" + n + "?$")); $(".lanyun-section-" + e.id + " a").each(function() { t.test($(this).attr("href")) && $(this).parents("li").addClass("active") }) }, map: function(e) { const n = this; var t, i = $(".lanyun-section-" + e.id + " .lanyun-map-content"), a = i.attr("data-type"); const o = Number(i.attr("data-zoom")), s = i.attr("data-content"); "baidu" === a ? (this.addBaiduMapScript(), window.BMap ? this.baiduMapFunc(s, o, e.id) : t = setInterval(function() { window.BMap && (n.baiduMapFunc(s, o, e.id), clearInterval(t)) }, 500)) : (this.addGoogleMapScript(), window.google ? n.googleMapFunc(s, o, e.id) : t = setInterval(function() { window.google && (n.googleMapFunc(s, o, e.id), clearInterval(t)) }, 500)) }, baiduMapFunc: function(e, n, t) { var i, a = JSON.parse(e), e = 0 === a.length ? (i = 116.403963, 39.915119) : (i = a[0].location.lng || 116.403963, a[0] .location.lat || 39.915119), o = new BMap.Map("baidu-map-" + t), t = new BMap.Point(i, e); o.centerAndZoom(t, n || 15); for (let i = 0; i < a.length; i++) { let e, n = (a[i].img && "custom" == a[i].icon && (e = new BMap.Icon(a[i].img, new BMap.Size(25, 25), { imageSize: new BMap.Size(25, 25) })), new BMap.Point(a[i].location.lng || 116.403963, a[i].location.lat || 39.915119)); var s = new BMap.Marker(n, { icon: e || "" }), r = a[i].title || "", l = a[i].desc ? a[i].desc.replace("\n", "") : "", c = (o.addOverlay(s), o.enableScrollWheelZoom(!0), { width: 200, height: 100 }); let t = new BMap.InfoWindow('
' + r + '
' + l + "
", c); s.addEventListener("click", function() { o.openInfoWindow(t, n) }) } }, googleMapFunc: function(e, n, t) { var i, a = JSON.parse(e), e = 0 === a.length ? (i = 116.39770680013461, 39.90451119803565) : (i = a[0].location.lng || 116.39770680013461, a[0].location.lat || 39.90451119803565), e = { lat: e, lng: i }; const o = new google.maps.Map(document.getElementById("google-map-" + t), { center: e, zoom: n || 15 }); for (var s = 0; s < a.length; s++) { var r = a[s].title || "", l = a[s].desc ? a[s].desc.replace("\n", "") : ""; const c = new google.maps.InfoWindow({ content: '
' + r + '
' + l + "
" }); r = { position: { lat: a[s].location.lat || 116.39770680013461, lng: a[s].location.lng || 39.90451119803565 }, map: o }; a[s].img && "custom" == a[s].icon && (r.icon = new google.maps.MarkerImage(a[s].img, new google.maps .Size(30, 30), new google.maps.Point(0, 0), new google.maps.Point(0, 30), new google .maps.Size(30, 30))); const d = new google.maps.Marker(r); d.addListener("click", function() { c.open(o, d) }) } }, addBaiduMapScript: function() { var e = document.querySelectorAll(".baidu-map-container"), n = document.querySelector("[src*='S4WiFB8Wj2RudNpljssXvU06KAKivbSO']"); 0 < e.length && !n && (window.HOST_TYPE = "2", window.BMap_loadScriptTime = (new Date).getTime(), (e = document.createElement("script")).src = "//api.map.baidu.com/getscript?v=2.0&ak=S4WiFB8Wj2RudNpljssXvU06KAKivbSO&services=&t=20210803154751", (n = document.getElementsByTagName("script")[0]).parentNode.insertBefore(e, n)) }, addGoogleMapScript: function() { var e = document.querySelectorAll(".google-map-container"), n = document.querySelector("[src*='AIzaSyCadneYGHrBQfthWliwCxG2sJ5KkadoG4E']"); 0 < e.length && !n && ((e = document.createElement("script")).src = "//maps.googleapis.com/maps/api/js?key=AIzaSyCadneYGHrBQfthWliwCxG2sJ5KkadoG4E&libraries=places", (n = document.getElementsByTagName("script")[0]).parentNode.insertBefore(e, n)) }, jQToggler: function() { $(".jq-toggler").click(function() { var n = $(this).attr("target"); n && 0 !== $(n).length && ($(".jq-toggler").each(function() { var e; $(this).is(":visible") && (e = $(this).attr("target")) !== n && $(e).is( ":visible") && ($(this).removeClass("clicked"), $(e).stop(!0) .slideUp()) }), $(n).is(":visible") ? ($(this).find(".lanyun-mobile-open").show(), $(this).find( ".lanyun-mobile-close").hide(), $(this).removeClass("clicked"), $(n).stop(! 0).slideUp()) : ($(this).addClass("clicked"), $(this).find( ".lanyun-mobile-open").hide(), $(this).find(".lanyun-mobile-close").show(), $(n).stop(!0).slideDown())) }) }, tabs: function(e, n, t) { $(n).hide(), $(n).eq(0).show(), $(e).find("li:eq(0)").addClass("cur"), $(e).find("li").bind(t, function() { $(this).addClass("cur").siblings("li").removeClass("cur"); var e = $(this).index(); $(n).eq(e).show().siblings(n).hide() }) }, socialShare: function() { var e; 0 !== $(".lanyun-detail-share").length && (e = (e = (e = $('meta[property="og:image"]').prop( "content")) && 0 !== e.indexOf("http") ? "http:" + e : e) || $("img:first").prop("src") || "", $(".lanyun-detail-share").share({ image: e, sites: ["weibo", "qq", "wechat", "linkedin", "facebook", "twitter"] })) }, "product-list": function() { this.innerSort() }, "article-list": function() { this.innerSort() }, innerSort: function() { var e = this; 0 != $(".lanyun-inner-sort").length && ($(".lanyun-inner-sort .lanyun-inner-sort-arrow").click( function() { e.dropToggle($(this).parent().parent()) }), $(".lanyun-inner-sort .active").parents("li").addClass("on"), $( ".lanyun-inner-sort-mobile i").click(function() { $(this).parents(".lanyun-inner-sort").addClass("on") }), $(".lanyun-inner-sort-close").click(function() { $(this).parents(".lanyun-inner-sort").removeClass("on") })) }, "category-tree": function(e) { var n = this; 0 != $(".lanyun-section-" + e.id + " .lanyun-category-tree").length && ($(".lanyun-section-" + e.id + " .lanyun-category-tree .lanyun-category-tree-arrow").click(function() { n.dropToggle($(this).parent().parent()) }), $(".lanyun-section-" + e.id + " .lanyun-category-tree .active").parents("li").addClass( "on"), $(".lanyun-section-" + e.id + " .lanyun-category-tree-mobile i").click(function() { $(this).parents(".lanyun-section-" + e.id + " .lanyun-category-tree").addClass("on") }), $(".lanyun-section-" + e.id + " .lanyun-category-tree-close").click(function() { $(this).parents(".lanyun-section-" + e.id + " .lanyun-category-tree").removeClass("on") })) }, social: function(e) { $(".lanyun-section-" + e.id + " .lanyun-social-wrap a").hover(function() { 150 < window.document.querySelector(".lanyun-section-" + e.id + " .lanyun-social-wrap a") .getClientRects()[0].top ? $(this).find(".qrcode").css("top", "-110px") : $(this).find( ".qrcode").css("top", "65px"), $(this).find(".qrcode").show() }, function() { $(this).find(".qrcode").hide() }) }, aos: function() { AOS && !isFullpage && AOS.init({ offset: 30 }) }, lang: function() { 1230 < $(window).width() ? $(".lang-dropdown").hover(function() { $(this).addClass("on") }, function() { $(this).removeClass("on") }) : $(".lanyun-lang-dropdown-toggle").click(function() { $(this).parent().hasClass("on") ? $(this).parent().removeClass("on") : $(this).parent() .addClass("on") }) }, analytics: function(e) { var n; app.hasOwnProperty("currentMode") && -1 < ["editor", "preview"].indexOf(app.currentMode) || -1 === self .location.href.indexOf("isEditor") && ((n = document.createElement("script")).src = "//tj.lanyuncms.com/hm.js?" + e, (e = document.getElementsByTagName("script")[0]).parentNode .insertBefore(n, e)) }, search: function(e) { $(".lanyun-section-" + e.id).find(".lanyun-search-full") && ($(".lanyun-section-" + e.id + " .lanyun-search-btn").click(function() { $(this).next().hasClass("lanyun-search-full-screen") || $(this).next().addClass( "lanyun-search-full-screen") }), $(".lanyun-section-" + e.id + " .close-screen").click(function() { $(this).parent().hasClass("lanyun-search-full-screen") && $(this).parent().removeClass( "lanyun-search-full-screen") })), $(window).width() < 990 && ($(".lanyun-search-mobile-open").click(function() { $(this).parents("form").addClass("active") }), $(".lanyun-search-mobile-close").click(function() { $(this).parents("form").removeClass("active") })) }, video: function(e) { const n = $(".lanyun-section-" + e.id); if (0 < n.find(".lanyun-video-normal").length && 0 < n.find(".lanyun-video-normal video").length && n .find(".lanyun-video-normal video")[0].addEventListener("play", function() { n.find(".lanyun-video-normal .lanyun-video-img").hide() }), !n.is("[editor]")) { var t, e = n.find('[data-effect="popup"]'); if (e) { const i = e.attr("data-effect-type"), a = e.attr("data-content"); e.find(".lanyun-video-img").click(function() { t || (t = n.find(".video-popup").clone(), n.find(".video-popup").remove()), "third" === i ? t.find(".video-popup-content").html(a) : t.find("video source") .attr("src", a), $("body").append(t), t.addClass("video-popup-open"), t.find( ".video-popup-close").click(function() { t.remove() }) }) } } }, VariablePolyfill: function() { var e, n; window.MSInputMethodContext && document.documentMode && (e = document.getElementsByTagName("script")[0], (n = document.createElement("script")).defer = !0, n.src = "https://cdn.fuwucms.com/g/ie11CustomProperties.js", e.parentNode.insertBefore(n, e)) }, kefu: function() { 600 < document.querySelector("html").scrollTop && $(".lanyun-section-kefu .back-top").show(), window .addEventListener("scroll", function() { 600 < document.querySelector("html").scrollTop ? $(".lanyun-section-kefu .back-top") .show() : $(".lanyun-section-kefu .back-top").hide() }), $(window).width() < 990 ? ($(".mobile-kefu-open").click(function() { $(this).parent().addClass("on"), $("body").addClass("no-scroll") }), $(".mobile-kefu-box-close").click(function() { $(this).parents(".mobile-kefu").removeClass("on"), $("body").removeClass("no-scroll") })) : $(".lanyun-section-kefu .back-top").click(function() { $("body,html").animate({ scrollTop: 0 }, 500) }) }, affix: function() { const t = {}, i = {}, a = { position: "fixed", top: 0, left: 0, zIndex: 999 }, o = { position: "", top: "", left: "", zIndex: "" }; $(".float-fix:not([editor])").each(function() { var e = $(this).offset().top, n = $(this).attr("data-id"); t[e] = n }), $(".is-fix:not([editor])").each(function() { var e = $(this).offset().top, n = $(this).attr("data-id"); i[e] = n, 0 < $("fix-place-" + n).length || $(this).after($('
')) }); function n(e) { for (var n in t) $(".lanyun-section-" + t[n]).css(e > Number(n) ? a : o), e > Number(n) ? $( ".lanyun-section-" + t[n]).addClass("v-float") : $(".lanyun-section-" + t[n]).removeClass( "v-float"); for (var n in i) $(".fix-place-" + i[n]).css({ height: e > Number(n) ? $(".lanyun-section-" + i[n]).outerHeight() : 0 }), $(".lanyun-section-" + i[n]).css(e > Number(n) ? a : o), e > Number(n) ? $( ".lanyun-section-" + i[n]).addClass("v-float") : $(".lanyun-section-" + i[n]).removeClass( "v-float") } var e; (!isFullpage || isFullpage && 0 === app.pageSetting.fullpage.mobileSync && document.documentElement .clientWidth < 900) && (e = $("html").scrollTop(), n(e)), $(window).scroll(function() { var e; (!isFullpage || isFullpage && 0 === app.pageSetting.fullpage.mobileSync && document .documentElement.clientWidth < 900) && (e = $("html").scrollTop(), n(e)) }) }, "tab-box": function(o) { $(".lanyun-section-" + o.id).find(".lanyun-tab-tag li").eq(0).addClass("on").siblings().removeClass( "on"); var n = $(".lanyun-section-" + o.id).find(".lanyun-tab-tag li").eq(0).attr("data-tag_id"); let t = null; var i = window.document.getElementsByClassName("lanyun-section-" + n)[0].parentNode, a = i.children.length; for (let e = 0; e < a; e++) i.children[e].dataset.id === n && (t = e); $(".lanyun-section-" + o.id).find(".lanyun-section-" + n).addClass("on").siblings().removeClass("on"), $(".lanyun-section-" + o.id + " .lanyun-tab-content").css("transform", "translateX(" + 100 * -t + "%)"), $(".lanyun-section-" + o.id).find(".lanyun-tab-tag li").click(function(e) { let n = null; e.stopPropagation(); var t = $(this).attr("data-tag_id"), i = window.document.getElementsByClassName("lanyun-section-" + t)[0].parentNode, a = i.children.length; for (let e = 0; e < a; e++) i.children[e].dataset.id === t && (n = e); $(".lanyun-section-" + o.id + " .lanyun-tab-content").css("transform", "translateX(" + 100 * -n + "%)"), $(this).addClass("on").siblings().removeClass("on"), $( ".lanyun-section-" + o.id).find(".lanyun-section-" + t).addClass("on").siblings() .removeClass("on") }) }, getQueryString: function(e) { e = new RegExp("(^|&)" + e + "=([^&]*)(&|$)"), e = window.location.search.substr(1).match(e); return null != e && unescape(e[2]) }, getAndSetHits: function(n) { var e, t, i = $(n).attr("data-hits"); 0 !== $(n).length && (this.getQueryString("isEditor") ? $(n).html(i) : (i = $(n).attr("data-page_type"), e = $(n).attr("data-slug"), t = $(n).attr("data-url"), $.ajax({ url: t + "/" + i + "/" + e, type: "PUT", success: function(e) { $(n).html(e.data) } }))) }, forbidCopy: function() { document.body.oncontextmenu = function(e) { return e.preventDefault(), !1 }, document.body.onselectstart = function(e) { return e.preventDefault(), !1 }, document.body.oncopy = function(e) { return e.preventDefault(), !1 }, document.addEventListener("keydown", function(e) { if ("F12" === e.key) return e.preventDefault(), !1 }) }, animateStyle: function() { app && app.currentMode && ("default" === app.currentMode || "preview" === app.currentMode) && $( ".lanyun-section-box > [data-aos]").each(function() { $(this).attr("data-aos") && "none" !== $(this).attr("data-aos") && $(this).parent().css( "overflow", "hidden") }) } }, window.onload = function() { theme.init() };