PageSourceSearch

https://www.longwood.edu/media/site-assets/public-site/javascript/lib.min.js

js longwood.edu collected 2026-09-24 09:04:08 UTC 232,409 bytes, 5,647 lines download raw bytes

1!function(t) {
2    "use strict";
3    t.fn.fitVids = function(e) {
4        var i = {
5            customSelector: null
6        };
7        if (!document.getElementById("fit-vids-style")) {
8            var r = document.head || document.getElementsByTagName("head")[0], d = ".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}", a = document.createElement("div");
9            a.innerHTML = '<p>x</p><style id="fit-vids-style">' + d + "</style>", r.appendChild(a.childNodes[1])
10        }
11        return e && t.extend(i, e), this.each(function() {
12            var e = ["iframe[src*='player.vimeo.com']", "iframe[src*='youtube.com']", "iframe[src*='youtube-nocookie.com']", "iframe[src*='kickstarter.com'][src*='video.html']", "object", "embed"];
13            i.customSelector && e.push(i.customSelector);
14            var r = t(this).find(e.join(","));
15            r = r.not("object object"), r.each(function() {
16                var e = t(this);
17                if (!("embed" === this.tagName.toLowerCase() && e.parent("object").length || e.parent(".fluid-width-video-wrapper").length)) {
18                    var i = "object" === this.tagName.toLowerCase() || e.attr("height")&&!isNaN(parseInt(e.attr("height"), 10)) ? parseInt(e.attr("height"), 10): e.height(), r = isNaN(parseInt(e.attr("width"), 10)) ? e.width(): parseInt(e.attr("width"), 10), d = i / r;
19                    if (!e.attr("id")) {
20                        var a = "fitvid" + Math.floor(999999 * Math.random());
21                        e.attr("id", a)
22                    }
23                    e.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top", 100 * d + "%"), e.removeAttr("height").removeAttr("width")
24                }
25            })
26        })
27    }
28}(window.jQuery || window.Zepto);;
29!function(e) {
30    "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery)
31}(function(e) {
32    function a(a) {
33        var t = {}, l = /^jQuery\d+$/;
34        return e.each(a.attributes, function(e, a) {
35            a.specified&&!l.test(a.name) && (t[a.name] = a.value)
36        }), t
37    }
38    function t(a, t) {
39        var l = this, o = e(l);
40        if (l.value == o.attr("placeholder") && o.hasClass("placeholder"))
41            if (o.data("placeholder-password")) {
42                if (o = o.hide().nextAll('input[type="password"]:first').show().attr("id", o.removeAttr("id").data("placeholder-id")), a===!0)
43                    return o[0].value = t;
44                    o.focus()
45            } else 
46                l.value = "", o.removeClass("placeholder"), l == r() && l.select()
47    }
48    function l() {
49        var l, r = this, o = e(r), n = this.id;
50        if ("" === r.value) {
51            if ("password" === r.type) {
52                if (!o.data("placeholder-textinput")) {
53                    try {
54                        l = o.clone().attr({
55                            type: "text"
56                        })
57                    } catch (d) {
58                        l = e("<input>").attr(e.extend(a(this), {
59                            type: "text"
60                        }))
61                    }
62                    l.removeAttr("name").data({
63                        "placeholder-password": o,
64                        "placeholder-id": n
65                    }).bind("focus.placeholder", t), o.data({
66                        "placeholder-textinput": l,
67                        "placeholder-id": n
68                    }).before(l)
69                }
70                o = o.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id", n).show()
71            }
72            o.addClass("placeholder"), o[0].value = o.attr("placeholder")
73        } else 
74            o.removeClass("placeholder")
75    }
76    function r() {
77        try {
78            return document.activeElement
79        } catch (e) {}
80    }
81    var o, n, d = "[object OperaMini]" == Object.prototype.toString.call(window.operamini), c = "placeholder"in document.createElement("input")&&!d, i = "placeholder"in document.createElement("textarea")&&!d, u = e.valHooks, p = e.propHooks;
82    c && i ? (n = e.fn.placeholder = function() {
83        return this
84    }, n.input = n.textarea=!0) : (n = e.fn.placeholder = function() {
85        var e = this;
86        return e.filter((c ? "textarea" : ":input") + "[placeholder]").not(".placeholder").bind({
87            "focus.placeholder": t,
88            "blur.placeholder": l
89        }).data("placeholder-enabled", !0).trigger("blur.placeholder"), e
90    }, n.input = c, n.textarea = i, o = {
91        get: function(a) {
92            var t = e(a), l = t.data("placeholder-password");
93            return l ? l[0].value : t.data("placeholder-enabled") && t.hasClass("placeholder") ? "" : a.value
94        },
95        set: function(a, o) {
96            var n = e(a), d = n.data("placeholder-password");
97            return d ? d[0].value = o : n.data("placeholder-enabled") ? ("" === o ? (a.value = o, a != r() && l.call(a)) : n.hasClass("placeholder") ? t.call(a, !0, o) || (a.value = o) : a.value = o, n) : a.value = o
98        }
99    }, c || (u.input = o, p.value = o), i || (u.textarea = o, p.value = o), e(function() {
100        e(document).delegate("form", "submit.placeholder", function() {
101            var a = e(".placeholder", this).each(t);
102            setTimeout(function() {
103                a.each(l)
104            }, 10)
105        })
106    }), e(window).bind("beforeunload.placeholder", function() {
107        e(".placeholder").each(function() {
108            this.value = ""
109        })
110    }))
111});;
112!function() {
113    "use strict";
114    function t(e, o) {
115        function i(t, e) {
116            return function() {
117                return t.apply(e, arguments)
118            }
119        }
120        var r;
121        if (o = o || {}, this.trackingClick=!1, this.trackingClickStart = 0, this.targetElement = null, this.touchStartX = 0, this.touchStartY = 0, this.lastTouchIdentifier = 0, this.touchBoundary = o.touchBoundary || 10, this.layer = e, this.tapDelay = o.tapDelay || 200, this.tapTimeout = o.tapTimeout || 700, !t.notNeeded(e)) {
122            for (var a = ["onMouse", "onClick", "onTouchStart", "onTouchMove", "onTouchEnd", "onTouchCancel"], c = this, s = 0, u = a.length; u > s; s++)
123                c[a[s]] = i(c[a[s]], c);
124            n && (e.addEventListener("mouseover", this.onMouse, !0), e.addEventListener("mousedown", this.onMouse, !0), e.addEventListener("mouseup", this.onMouse, !0)), e.addEventListener("click", this.onClick, !0), e.addEventListener("touchstart", this.onTouchStart, !1), e.addEventListener("touchmove", this.onTouchMove, !1), e.addEventListener("touchend", this.onTouchEnd, !1), e.addEventListener("touchcancel", this.onTouchCancel, 
124!1), Event.prototype.stopImmediatePropagation || (e.removeEventListener = function(t, n, o) {
125                var i = Node.prototype.removeEventListener;
126                "click" === t ? i.call(e, t, n.hijacked || n, o) : i.call(e, t, n, o)
127            }, e.addEventListener = function(t, n, o) {
128                var i = Node.prototype.addEventListener;
129                "click" === t ? i.call(e, t, n.hijacked || (n.hijacked = function(t) {
130                    t.propagationStopped || n(t)
131                }), o) : i.call(e, t, n, o)
132            }), "function" == typeof e.onclick && (r = e.onclick, e.addEventListener("click", function(t) {
133                r(t)
134            }, !1), e.onclick = null)
135        }
136    }
137    var e = navigator.userAgent.indexOf("Windows Phone") >= 0, n = navigator.userAgent.indexOf("Android") > 0&&!e, o = /iP(ad|hone|od)/.test(navigator.userAgent)&&!e, i = o && /OS 4_\d(_\d)?/.test(navigator.userAgent), r = o && /OS [6-7]_\d/.test(navigator.userAgent), a = navigator.userAgent.indexOf("BB10") > 0;
138    t.prototype.needsClick = function(t) {
139        switch (t.nodeName.toLowerCase()) {
140        case"button":
141        case"select":
142        case"textarea":
143            if (t.disabled)
144                return !0;
145            break;
146        case"input":
147            if (o && "file" === t.type || t.disabled)
148                return !0;
149            break;
150        case"label":
151        case"iframe":
152        case"video":
153            return !0
154        }
155        return /\bneedsclick\b/.test(t.className)
156    }, t.prototype.needsFocus = function(t) {
157        switch (t.nodeName.toLowerCase()) {
158        case"textarea":
159            return !0;
160        case"select":
161            return !n;
162        case"input":
163            switch (t.type) {
164            case"button":
165            case"checkbox":
166            case"file":
167            case"image":
168            case"radio":
169            case"submit":
170                return !1
171            }
172            return !t.disabled&&!t.readOnly;
173        default:
174            return /\bneedsfocus\b/.test(t.className)
175        }
176    }, t.prototype.sendClick = function(t, e) {
177        var n, o;
178        document.activeElement && document.activeElement !== t && document.activeElement.blur(), o = e.changedTouches[0], n = document.createEvent("MouseEvents"), n.initMouseEvent(this.determineEventType(t), !0, !0, window, 1, o.screenX, o.screenY, o.clientX, o.clientY, !1, !1, !1, !1, 0, null), n.forwardedTouchEvent=!0, t.dispatchEvent(n)
179    }, t.prototype.determineEventType = function(t) {
180        return n && "select" === t.tagName.toLowerCase() ? "mousedown" : "click"
181    }, t.prototype.focus = function(t) {
182        var e;
183        o && t.setSelectionRange && 0 !== t.type.indexOf("date") && "time" !== t.type && "month" !== t.type ? (e = t.value.length, t.setSelectionRange(e, e)) : t.focus()
184    }, t.prototype.updateScrollParent = function(t) {
185        var e, n;
186        if (e = t.fastClickScrollParent, !e ||!e.contains(t)) {
187            n = t;
188            do {
189                if (n.scrollHeight > n.offsetHeight) {
190                    e = n, t.fastClickScrollParent = n;
191                    break
192                }
193                n = n.parentElement
194            }
195            while (n)
196            }
197        e && (e.fastClickLastScrollTop = e.scrollTop)
198    }, t.prototype.getTargetElementFromEventTarget = function(t) {
199        return t.nodeType === Node.TEXT_NODE ? t.parentNode : t
200    }, t.prototype.onTouchStart = function(t) {
201        var e, n, r;
202        if (t.targetTouches.length > 1)
203            return !0;
204        if (e = this.getTargetElementFromEventTarget(t.target), n = t.targetTouches[0], o) {
205            if (r = window.getSelection(), r.rangeCount&&!r.isCollapsed)
206                return !0;
207            if (!i) {
208                if (n.identifier && n.identifier === this.lastTouchIdentifier)
209                    return t.preventDefault(), !1;
210                this.lastTouchIdentifier = n.identifier, this.updateScrollParent(e)
211            }
212        }
213        return this.trackingClick=!0, this.trackingClickStart = t.timeStamp, this.targetElement = e, this.touchStartX = n.pageX, this.touchStartY = n.pageY, t.timeStamp - this.lastClickTime < this.tapDelay && t.preventDefault(), !0
214    }, t.prototype.touchHasMoved = function(t) {
215        var e = t.changedTouches[0], n = this.touchBoundary;
216        return Math.abs(e.pageX - this.touchStartX) > n || Math.abs(e.pageY - this.touchStartY) > n
217    }, t.prototype.onTouchMove = function(t) {
218        return this.trackingClick ? ((this.targetElement !== this.getTargetElementFromEventTarget(t.target) || this.touchHasMoved(t)) && (this.trackingClick=!1, this.targetElement = null), !0) : !0
219    }, t.prototype.findControl = function(t) {
220        return void 0 !== t.control ? t.control : t.htmlFor ? document.getElementById(t.htmlFor) : t.querySelector("button, input
220:not([type=hidden]), keygen, meter, output, progress, select, textarea")
221    }, t.prototype.onTouchEnd = function(t) {
222        var e, a, c, s, u, l = this.targetElement;
223        if (!this.trackingClick)
224            return !0;
225        if (t.timeStamp - this.lastClickTime < this.tapDelay)
226            return this.cancelNextClick=!0, !0;
227        if (t.timeStamp - this.trackingClickStart > this.tapTimeout)
228            return !0;
229        if (this.cancelNextClick=!1, this.lastClickTime = t.timeStamp, a = this.trackingClickStart, this.trackingClick=!1, this.trackingClickStart = 0, r && (u = t.changedTouches[0], l = document.elementFromPoint(u.pageX - window.pageXOffset, u.pageY - window.pageYOffset) || l, l.fastClickScrollParent = this.targetElement.fastClickScrollParent), c = l.tagName.toLowerCase(), "label" === c) {
230            if (e = this.findControl(l)) {
231                if (this.focus(l), n)
232                    return !1;
233                l = e
234            }
235        } else if (this.needsFocus(l))
236            return t.timeStamp - a > 100 || o && window.top !== window && "input" === c ? (this.targetElement = null, !1) : (this.focus(l), this.sendClick(l, t), o && "select" === c || (this.targetElement = null, t.preventDefault()), !1);
237        return o&&!i && (s = l.fastClickScrollParent, s && s.fastClickLastScrollTop !== s.scrollTop)?!0 : (this.needsClick(l) || (t.preventDefault(), this.sendClick(l, t)), !1)
238    }, t.prototype.onTouchCancel = function() {
239        this.trackingClick=!1, this.targetElement = null
240    }, t.prototype.onMouse = function(t) {
241        return this.targetElement ? t.forwardedTouchEvent?!0 : !t.cancelable || this.needsClick(this.targetElement)&&!this.cancelNextClick?!0 : (t.stopImmediatePropagation ? t.stopImmediatePropagation() : t.propagationStopped=!0, t.stopPropagation(), t.preventDefault(), !1) : !0
242    }, t.prototype.onClick = function(t) {
243        var e;
244        return this.trackingClick ? (this.targetElement = null, this.trackingClick=!1, !0) : "submit" === t.target.type && 0 === t.detail?!0 : (e = this.onMouse(t), e || (this.targetElement = null), e)
245    }, t.prototype.destroy = function() {
246        var t = this.layer;
247        n && (t.removeEventListener("mouseover", this.onMouse, !0), t.removeEventListener("mousedown", this.onMouse, !0), t.removeEventListener("mouseup", this.onMouse, !0)), t.removeEventListener("click", this.onClick, !0), t.removeEventListener("touchstart", this.onTouchStart, !1), t.removeEventListener("touchmove", this.onTouchMove, !1), t.removeEventListener("touchend", this.onTouchEnd, !1), t.removeEventListener("touchcancel", this.onTouchCancel, !1)
248    }, t.notNeeded = function(t) {
249        var e, o, i, r;
250        if ("undefined" == typeof window.ontouchstart)
251            return !0;
252        if (o =+ (/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1]) {
253            if (!n)
254                return !0;
255            if (e = document.querySelector("meta[name=viewport]")) {
256                if ( - 1 !== e.content.indexOf("user-scalable=no"))
257                    return !0;
258                if (o > 31 && document.documentElement.scrollWidth <= window.outerWidth)
259                    return !0
260            }
261        }
262        if (a && (i = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/), i[1] >= 10 && i[2] >= 3 && (e = document.querySelector("meta[name=viewport]")))) {
263            if ( - 1 !== e.content.indexOf("user-scalable=no"))
264                return !0;
265            if (document.documentElement.scrollWidth <= window.outerWidth)
266                return !0
267        }
268        return "none" === t.style.msTouchAction || "manipulation" === t.style.touchAction?!0 : (r =+ (/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1], r >= 27 && (e = document.querySelector("meta[name=viewport]"), e && ( - 1 !== e.content.indexOf("user-scalable=no") || document.documentElement.scrollWidth <= window.outerWidth))?!0 : "none" === t.style.touchAction || "manipulation" === t.style.touchAction)
269    }, t.attach = function(e, n) {
270        return new t(e, n)
271    }, "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function() {
272        return t
273    }) : "undefined" != typeof module && module.exports ? (module.exports = t.attach, module.exports.FastClick = t) : window.FastClick = t
274}();;
275
276/*
277       (accessible)
278     _ _      _       _
279 ___| (_) ___| | __  (_)___
280/ __| | |/ __| |/ /  | / __|
281\__ \ | | (__|   < _ | \__ \
282|___/_|_|\___|_|\_(_)/ |___/
283                   |__/
284
285 Version: [email protected]
286  Author: Jason Webb (Accessible360)
287 Website: https://accessible360.com
288    Docs: https://accessible360.github.io/accessible-slick
289    Repo: https://github.com/Accessible360/accessible-slick
290  Issues: https://github.com/Accessible360/accessible-slick/issues
291
292 */
293/* global window, document, define, jQuery, setInterval, clearInterval */
294;(function(factory) {
295    'use strict';
296    if (typeof define === 'function' && define.amd) {
297        define(['jquery'], factory);
298    } else if (typeof exports !== 'undefined') {
299        module.exports = factory(require('jquery'));
300    } else {
301        factory(jQuery);
302    }
303
304}(function($) {
305    'use strict';
306    var Slick = window.Slick || {};
307
308    Slick = (function() {
309
310        var instanceUid = 0;
311
312        function Slick(element, settings) {
313
314            var _ = this, dataSettings;
315
316            _.defaults = {
317                adaptiveHeight: false,
318                appendArrows: $(element),
319                appendDots: $(element),
320                arrows: true,
321                arrowsPlacement: null,
322                asNavFor: null,
323                prevArrow: '<button class="slick-prev" type="button">'
324                            + '<span class="slick-prev-icon" aria-hidden="true"></span>'
325                            + '<span class="slick-sr-only">Previous</span>'
326                         + '</button>',
327                nextArrow: '<button class="slick-next" type="button">'
328                            + '<span class="slick-next-icon" aria-hidden="true"></span>'
329                            + '<span class="slick-sr-only">Next</span>'
330                         + '</button>',
331                autoplay: false,
332                autoplaySpeed: 3000,
333                centerMode: false,
334                centerPadding: '50px',
335                cssEase: 'ease',
336                customPaging: function(slider, i) {
337                    return $('<button type="button">'
338                                + '<span class="slick-dot-icon" aria-hidden="true"></span>'
339                                + '<span class="slick-sr-only">Go to slide ' + (i+1) + '</span>'
340                            + '</button>');
341                },
342                dots: false,
343                dotsClass: 'slick-dots',
344                draggable: true,
345                easing: 'linear',
346                edgeFriction: 0.35,
347                fade: false,
348                infinite: true,
349                initialSlide: 0,
350                instructionsText: null,
351                lazyLoad: 'ondemand',
352                mobileFirst: false,
353                playIcon: '<span class="slick-play-icon" aria-hidden="true"></span>',
354                pauseIcon: '<span class="slick-pause-icon" aria-hidden="true"></span>',
355                pauseOnHover: true,
356                pauseOnFocus: true,
357                pauseOnDotsHover: false,
358                regionLabel: 'carousel',
359                respondTo: 'window',
360                responsive: null,
361                rows: 1,
362                rtl: false,
363                slide: '',
364                slidesPerRow: 1,
365                slidesToShow: 1,
366                slidesToScroll: 1,
367                speed: 500,
368                swipe: true,
369                swipeToSlide: false,
370                touchMove: true,
371                touchThreshold: 5,
372                useAutoplayToggleButton: true,
373                useCSS: true,
374                useGroupRole: true,
375                useTransform: true,
376                variableWidth: false,
377                vertical: false,
378                verticalSwiping: false,
379                waitForAnimate: true,
380                zIndex: 1000
381            };
382
383            _.initials = {
384                animating: false,
385                dragging: false,
386                autoPlayTimer: null,
387                currentDirection: 0,
388                currentLeft: null,
389                currentSlide: 0,
390                direction: 1,
391                $dots: null,
392                $instructionsText: null,
393                listWidth: null,
394                listHeight: null,
395                loadIndex: 0,
396                $nextArrow: null,
397                $pauseButton: null,
398                $pauseIcon: null,
399                $playIcon: null,
400                $prevArrow: null,
401                scrolling: false,
402                slideCount: null,
403                slideWidth: null,
404                $slideTrack: null,
405                $slides: null,
406                sliding: false,
407                slideOffset: 0,
408                swipeLeft: null,
409                swiping: false,
410                $list: null,
411                touchObject: {},
412                transformsEnabled: false,
413                unslicked: false
414            };
415
416            $.extend(_, _.initials);
417
418            _.activeBreakpoint = null;
419            _.animType = null;
420            _.animProp = null;
421            _.breakpoints = [];
422            _.breakpointSettings = [];
423            _.cssTransitions = false;
424            _.focussed = false;
425            _.interrupted = false;
426            _.hidden = 'hidden';
427            _.paused = true;
428            _.positionProp = null;
429            _.respondTo = null;
430            _.rowCount = 1;
431            _.shouldClick = true;
432            _.$slider = $(element);
433            _.$slidesCache = null;
434            _.transformType = null;
435            _.transitionType = null;
436            _.visibilityChange = 'visibilitychange';
437            _.windowWidth = 0;
438            _.windowTimer = null;
439
440            dataSettings = $(element).data('slick') || {};
441
442            _.options = $.extend({}, _.defaults, settings, dataSettings);
443
444            _.currentSlide = _.options.initialSlide;
445
446            _.originalSettings = _.options;
447
448            if (typeof document.mozHidden !== 'undefined') {
449                _.hidden = 'mozHidden';
450                _.visibilityChange = 'mozvisibilitychange';
451            } else if (typeof document.webkitHidden !== 'undefined') {
452                _.hidden = 'webkitHidden';
453                _.visibilityChange = 'webkitvisibilitychange';
454            }
455
456            _.autoPlay = $.proxy(_.autoPlay, _);
457            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
458            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
459            _.autoPlayToggleHandler = $.proxy(_.autoPlayToggleHandler, _);
460            _.changeSlide = $.proxy(_.changeSlide, _);
461            _.clickHandler = $.proxy(_.clickHandler, _);
462            _.selectHandler = $.proxy(_.selectHandler, _);
463            _.setPosition = $.proxy(_.setPosition, _);
464            _.swipeHandler = $.proxy(_.swipeHandler, _);
465            _.dragHandler = $.proxy(_.dragHandler, _);
466
467            _.instanceUid = instanceUid++;
468
469            // A simple way to check for HTML strings
470            // Strict HTML recognition (must start with <)
471            // Extracted from jQuery v1.11 source
472            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
473
474
475            _.registerBreakpoints();
476            _.init(true);
477
478        }
479
480        return Slick;
481
482    }());
483
484    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
485
486        var _ = this;
487
488        if (typeof(index) === 'boolean') {
489            addBefore = index;
490            index = null;
491        } else if (index < 0 || (index >= _.slideCount)) {
492            return false;
493        }
494
495        _.unload();
496
497        if (typeof(index) === 'number') {
498            if (index === 0 && _.$slides.length === 0) {
499                $(markup).appendTo(_.$slideTrack);
500            } else if (addBefore) {
501                $(markup).insertBefore(_.$slides.eq(index));
502            } else {
503                $(markup).insertAfter(_.$slides.eq(index));
504            }
505        } else {
506            if (addBefore === true) {
507                $(markup).prependTo(_.$slideTrack);
508            } else {
509                $(markup).appendTo(_.$slideTrack);
510            }
511        }
512
513        _.$slides = _.$slideTrack.children(this.options.slide);
514
515        _.$slideTrack.children(this.options.slide).detach();
516
517        _.$slideTrack.append(_.$slides);
518
519        _.$slides.each(function(index, element) {
520            $(element).attr('data-slick-index', index);
521            $(element).attr('role', 'group');
522            $(element).attr('aria-label', 'slide ' + index);
523        });
524
525        _.$slidesCache = _.$slides;
526
527        _.reinit();
528
529    };
530
531    Slick.prototype.animateHeight = function() {
532        var _ = this;
533        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
534            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
535            _.$list.animate({
536                height: targetHeight
537            }, _.options.speed);
538        }
539    };
540
541    Slick.prototype.animateSlide = function(targetLeft, callback) {
542
543        var animProps = {},
544            _ = this;
545
546        _.animateHeight();
547
548        if (_.options.rtl === true && _.options.vertical === false) {
549            targetLeft = -targetLeft;
550        }
551        if (_.transformsEnabled === false) {
552            if (_.options.vertical === false) {
553                _.$slideTrack.animate({
554                    left: targetLeft
555                }, _.options.speed, _.options.easing, callback);
556            } else {
557                _.$slideTrack.animate({
558                    top: targetLeft
559                }, _.options.speed, _.options.easing, callback);
560            }
561
562        } else {
563
564            if (_.cssTransitions === false) {
565                if (_.options.rtl === true) {
566                    _.currentLeft = -(_.currentLeft);
567                }
568                $({
569                    animStart: _.currentLeft
570                }).animate({
571                    animStart: targetLeft
572                }, {
573                    duration: _.options.speed,
574                    easing: _.options.easing,
575                    step: function(now) {
576                        now = Math.ceil(now);
577                        if (_.options.vertical === false) {
578                            animProps[_.animType] = 'translate(' +
579                                now + 'px, 0px)';
580                            _.$slideTrack.css(animProps);
581                        } else {
582                            animProps[_.animType] = 'translate(0px,' +
583                                now + 'px)';
584                            _.$slideTrack.css(animProps);
585                        }
586                    },
587                    complete: function() {
588                        if (callback) {
589                            callback.call();
590                        }
591                    }
592                });
593
594            } else {
595
596                _.applyTransition();
597                targetLeft = Math.ceil(targetLeft);
598
599                if (_.options.vertical === false) {
600                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
601                } else {
602                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
603                }
604                _.$slideTrack.css(animProps);
605
606                if (callback) {
607                    setTimeout(function() {
608
609                        _.disableTransition();
610
611                        callback.call();
612                    }, _.options.speed);
613                }
614
615            }
616
617        }
618
619    };
620
621    Slick.prototype.getNavTarget = function() {
622
623        var _ = this,
624            asNavFor = _.options.asNavFor;
625
626        if ( asNavFor && asNavFor !== null ) {
627            asNavFor = $(asNavFor).not(_.$slider);
628        }
629
630        return asNavFor;
631
632    };
633
634    Slick.prototype.asNavFor = function(index) {
635
636        var _ = this,
637            asNavFor = _.getNavTarget();
638
639        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
640            asNavFor.each(function() {
641                var target = $(this).slick('getSlick');
642                if(!target.unslicked) {
643                    target.slideHandler(index, true);
644                }
645            });
646        }
647
648    };
649
650    Slick.prototype.applyTransition = function(slide) {
651
652        var _ = this,
653            transition = {};
654
655        if (_.options.fade === false) {
656            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
657        } else {
658            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
659        }
660
661        if (_.options.fade === false) {
662            _.$slideTrack.css(transition);
663        } else {
664            _.$slides.eq(slide).css(transition);
665        }
666
667    };
668
669    Slick.prototype.autoPlay = function() {
670
671        var _ = this;
672
673        _.autoPlayClear();
674
675        if ( _.slideCount > _.options.slidesToShow ) {
676            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
677        }
678
679    };
680
681    Slick.prototype.autoPlayClear = function() {
682
683        var _ = this;
684
685        if (_.autoPlayTimer) {
686            clearInterval(_.autoPlayTimer);
687        }
688
689    };
690
691    Slick.prototype.autoPlayIterator = function() {
692
693        var _ = this,
694            slideTo = _.currentSlide + _.options.slidesToScroll;
695
696        if ( !_.paused && !_.interrupted && !_.focussed ) {
697
698            if ( _.options.infinite === false ) {
699
700                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
701                    _.direction = 0;
702                }
703
704                else if ( _.direction === 0 ) {
705
706                    slideTo = _.currentSlide - _.options.slidesToScroll;
707
708                    if ( _.currentSlide - 1 === 0 ) {
709                        _.direction = 1;
710                    }
711
712                }
713
714            }
715
716            _.slideHandler( slideTo );
717
718        }
719
720    };
721
722    Slick.prototype.autoPlayToggleHandler = function() {
723        var _ = this;
724
725        if(_.paused) {
726            _.$playIcon.css('display', 'none');
727            _.$pauseIcon.css('display', 'inline');
728
729            _.$pauseButton.find('.slick-play-text').attr('style', 'display: none');
730            _.$pauseButton.find('.slick-pause-text').removeAttr('style');
731
732            _.slickPlay();
733        } else {
734            _.$playIcon.css('display', 'inline');
735            _.$pauseIcon.css('display', 'none');
736
737            _.$pauseButton.find('.slick-play-text').removeAttr('style');
738            _.$pauseButton.find('.slick-pause-text').attr('style', 'display: none');
739
740            _.slickPause();
741        }
742    };
743
744    Slick.prototype.buildArrows = function() {
745
746        var _ = this;
747
748        if (_.options.arrows === true ) {
749
750            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
751            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
752
753            if( _.slideCount > _.options.slidesToShow ) {
754
755                if (_.htmlExpr.test(_.options.prevArrow)) {
756                    if(_.options.arrowsPlacement != null) {
757                        switch(_.options.arrowsPlacement) {
758                            case 'beforeSlides':
759                            case 'split':
760                                console.log('test');
761                                _.$prevArrow.prependTo(_.options.appendArrows);
762                                break;
763
764                            case 'afterSlides':
765                                _.$prevArrow.appendTo(_.options.appendArrows);
766                                break;
767                        }
768
769                    } else {
770                        _.$prevArrow.prependTo(_.options.appendArrows);
771                    }
772                }
773
774                if (_.htmlExpr.test(_.options.nextArrow)) {
775                    if(_.options.arrowsPlacement != null) {
776                        switch(_.options.arrowsPlacement) {
777                            case 'beforeSlides':
778                                console.log('test2');
779                                _.$prevArrow.after(_.$nextArrow);
780                                break;
781
782                            case 'afterSlides':
783                            case 'split':
784                                _.$nextArrow.appendTo(_.options.appendArrows);
785                        }
786                    } else {
787                       _.$nextArrow.appendTo(_.options.appendArrows);
788                    }
789                }
790
791                if (_.options.infinite !== true) {
792                    _.$prevArrow
793                        .addClass('slick-disabled')
794                        .prop('disabled', true);
795                }
796
797            } else {
798
799                _.$prevArrow.add( _.$nextArrow )
800
801                    .addClass('slick-hidden')
802                    .prop('disabled', true);
803            }
804
805        }
806
807    };
808
809    Slick.prototype.buildDots = function() {
810
811        var _ = this,
812            i, dot;
813
814        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
815
816            _.$slider.addClass('slick-dotted');
817
818            dot = $('<ul />').addClass(_.options.dotsClass);
819
820            for (i = 0; i <= _.getDotCount(); i += 1) {
821                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
822            }
823
824            _.$dots = dot.appendTo(_.options.appendDots);
825
826            _.$dots.find('li').first().addClass('slick-active');
827
828        }
829
830    };
831
832    Slick.prototype.buildOut = function() {
833
834        var _ = this;
835
836        _.$slides =
837            _.$slider
838                .children( _.options.slide + ':not(.slick-cloned)')
839                .addClass('slick-slide');
840
841        _.slideCount = _.$slides.length;
842
843        _.$slides.each(function(index, element) {
844            $(element)
845                .attr('data-slick-index', index)
846                .data('originalStyling', $(element).attr('style') || '');
847
848            if(_.options.useGroupRole) {
849                $(element)
850                    .attr('role', 'group')
851                    .attr('aria-label', 'slide ' + (index + 1));
852            }
853        });
854
855        _.$slider.addClass('slick-slider');
856
857        _.$slider.attr('role', 'region');
858        _.$slider.attr('aria-label', _.options.regionLabel);
859
860        _.$slideTrack = (_.slideCount === 0) ?
861            $('<div class="slick-track"/>').appendTo(_.$slider) :
862            _.$slides.wrapAll('<div class="slick-track"/>').parent();
863
864        _.$list = _.$slideTrack.wrap(
865            '<div class="slick-list"/>').parent();
866        _.$slideTrack.css('opacity', 0);
867
868        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
869            _.options.slidesToScroll = 1;
870        }
871
872        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
873
874        _.setupInfinite();
875
876        _.buildArrows();
877
878        _.buildDots();
879
880        _.updateDots();
881
882
883        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
884
885        if (_.options.draggable === true) {
886            _.$list.addClass('draggable');
887        }
888
889        if ( _.options.autoplay && _.options.useAutoplayToggleButton ) {
890            _.$pauseIcon = $(_.options.pauseIcon).attr('aria-hidden', true);
891            _.$playIcon = $(_.options.playIcon).attr('aria-hidden', true);
892
893            _.$pauseButton = $('<button type="button" class="slick-autoplay-toggle-button">');
894            _.$pauseButton.append(_.$pauseIcon);
895            _.$pauseButton.append(_.$playIcon.css('display', 'none'));
896            _.$pauseButton.append($('<span class="slick-pause-text slick-sr-only">Pause</span>'));
897            _.$pauseButton.append($('<span class="slick-play-text slick-sr-only" style="display: none">Play</span>'));
898
899            _.$pauseButton.prependTo(_.$slider);
900        }
901
902        if((_.options.instructionsText != null && _.options.instructionsText != '')) {
903            _.$instructionsText = $('<p class="slick-instructions slick-sr-only">' + _.options.instructionsText + '</p>');
904            _.$instructionsText.prependTo(_.$slider);
905        }
906
907    };
908
909    Slick.prototype.buildRows = function() {
910
911        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
912
913        newSlides = document.createDocumentFragment();
914        originalSlides = _.$slider.children();
915
916        if(_.options.rows > 0) {
917
918            slidesPerSection = _.options.slidesPerRow * _.options.rows;
919            numOfSlides = Math.ceil(
920                originalSlides.length / slidesPerSection
921            );
922
923            for(a = 0; a < numOfSlides; a++){
924                var slide = document.createElement('div');
925                for(b = 0; b < _.options.rows; b++) {
926                    var row = document.createElement('div');
927                    for(c = 0; c < _.options.slidesPerRow; c++) {
928                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
929                        if (originalSlides.get(target)) {
930                            row.appendChild(originalSlides.get(target));
931                        }
932                    }
933                    slide.appendChild(row);
934                }
935                newSlides.appendChild(slide);
936            }
937
938            _.$slider.empty().append(newSlides);
939            _.$slider.children().children().children()
940                .css({
941                    'width':(100 / _.options.slidesPerRow) + '%',
942                    'display': 'inline-block'
943                });
944
945        }
946
947    };
948
949    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
950
951        var _ = this,
952            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
953        var sliderWidth = _.$slider.width();
954        var windowWidth = window.innerWidth || $(window).width();
955
956        if (_.respondTo === 'window') {
957            respondToWidth = windowWidth;
958        } else if (_.respondTo === 'slider') {
959            respondToWidth = sliderWidth;
960        } else if (_.respondTo === 'min') {
961            respondToWidth = Math.min(windowWidth, sliderWidth);
962        }
963
964        if ( _.options.responsive &&
965            _.options.responsive.length &&
966            _.options.responsive !== null) {
967
968            targetBreakpoint = null;
969
970            for (breakpoint in _.breakpoints) {
971                if (_.breakpoints.hasOwnProperty(breakpoint)) {
972                    if (_.originalSettings.mobileFirst === false) {
973                        if (respondToWidth < _.breakpoints[breakpoint]) {
974                            targetBreakpoint = _.breakpoints[breakpoint];
975                        }
976                    } else {
977                        if (respondToWidth > _.breakpoints[breakpoint]) {
978                            targetBreakpoint = _.breakpoints[breakpoint];
979                        }
980                    }
981                }
982            }
983
984            if (targetBreakpoint !== null) {
985                if (_.activeBreakpoint !== null) {
986                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
987                        _.activeBreakpoint =
988                            targetBreakpoint;
989                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
990                            _.unslick(targetBreakpoint);
991                        } else {
992                            _.options = $.extend({}, _.originalSettings,
993                                _.breakpointSettings[
994                                    targetBreakpoint]);
995                            if (initial === true) {
996                                _.currentSlide = _.options.initialSlide;
997                            }
998                            _.refresh(initial);
999                        }
1000                        triggerBreakpoint = targetBreakpoint;
1001                    }
1002                } else {
1003                    _.activeBreakpoint = targetBreakpoint;
1004                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
1005                        _.unslick(targetBreakpoint);
1006                    } else {
1007                        _.options = $.extend({}, _.originalSettings,
1008                            _.breakpointSettings[
1009                                targetBreakpoint]);
1010                        if (initial === true) {
1011                            _.currentSlide = _.options.initialSlide;
1012                        }
1013                        _.refresh(initial);
1014                    }
1015                    triggerBreakpoint = targetBreakpoint;
1016                }
1017            } else {
1018                if (_.activeBreakpoint !== null) {
1019                    _.activeBreakpoint = null;
1020                    _.options = _.originalSettings;
1021                    if (initial === true) {
1022                        _.currentSlide = _.options.initialSlide;
1023                    }
1024                    _.refresh(initial);
1025                    triggerBreakpoint = targetBreakpoint;
1026                }
1027            }
1028
1029            // only trigger breakpoints during an actual break. not on initialize.
1030            if( !initial && triggerBreakpoint !== false ) {
1031                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
1032            }
1033        }
1034
1035    };
1036
1037    Slick.prototype.changeSlide = function(event, dontAnimate) {
1038
1039        var _ = this,
1040            $target = $(event.currentTarget),
1041            indexOffset, slideOffset, unevenOffset;
1042
1043        // If target is a link, prevent default action.
1044        if($target.is('a')) {
1045            event.preventDefault();
1046        }
1047
1048        // If target is not the <li> element (ie: a child), find the <li>.
1049        if(!$target.is('li')) {
1050            $target = $target.closest('li');
1051        }
1052
1053        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
1054        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
1055
1056        switch (event.data.message) {
1057
1058            case 'previous':
1059                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
1060                if (_.slideCount > _.options.slidesToShow) {
1061                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
1062                }
1063                break;
1064
1065            case 'next':
1066                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
1067                if (_.slideCount > _.options.slidesToShow) {
1068                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
1069                }
1070                break;
1071
1072            case 'index':
1073                var index = event.data.index === 0 ? 0 :
1074                    event.data.index || $target.index() * _.options.slidesToScroll;
1075
1076                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
1077                $target.children().trigger('focus');
1078                break;
1079
1080            default:
1081                return;
1082        }
1083
1084    };
1085
1086    Slick.prototype.checkNavigable = function(index) {
1087
1088        var _ = this,
1089            navigables, prevNavigable;
1090
1091        navigables = _.getNavigableIndexes();
1092        prevNavigable = 0;
1093        if (index > navigables[navigables.length - 1]) {
1094            index = navigables[navigables.length - 1];
1095        } else {
1096            for (var n in navigables) {
1097                if (index < navigables[n]) {
1098                    index = prevNavigable;
1099                    break;
1100                }
1101                prevNavigable = navigables[n];
1102            }
1103        }
1104
1105        return index;
1106    };
1107
1108    Slick.prototype.cleanUpEvents = function() {
1109
1110        var _ = this;
1111
1112        if(_.options.autoplay && _.options.useAutoplayToggleButton) {
1113            _.$pauseButton.off('click.slick', _.autoPlayToggleHandler);
1114        }
1115
1116        if (_.options.dots && _.$dots !== null) {
1117
1118            $('li', _.$dots)
1119                .off('click.slick', _.changeSlide)
1120                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
1121                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
1122        }
1123
1124        _.$slider.off('focus.slick blur.slick');
1125
1126        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1127            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
1128            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
1129        }
1130
1131        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
1132        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
1133        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
1134        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
1135
1136        _.$list.off('click.slick', _.clickHandler);
1137
1138        $(document).off(_.visibilityChange, _.visibility);
1139
1140        _.cleanUpSlideEvents();
1141
1142        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
1143
1144        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
1145
1146        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
1147
1148        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
1149
1150    };
1151
1152    Slick.prototype.cleanUpSlideEvents = function() {
1153
1154        var _ = this;
1155
1156        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
1157        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
1158
1159    };
1160
1161    Slick.prototype.cleanUpRows = function() {
1162
1163        var _ = this, originalSlides;
1164
1165        if(_.options.rows > 0) {
1166            originalSlides = _.$slides.children().children();
1167            originalSlides.removeAttr('style');
1168            _.$slider.empty().append(originalSlides);
1169        }
1170
1171    };
1172
1173    Slick.prototype.clickHandler = function(event) {
1174
1175        var _ = this;
1176
1177        if (_.shouldClick === false) {
1178            event.stopImmediatePropagation();
1179            event.stopPropagation();
1180            event.preventDefault();
1181        }
1182
1183    };
1184
1185    Slick.prototype.destroy = function(refresh) {
1186
1187        var _ = this;
1188
1189        _.autoPlayClear();
1190
1191        _.touchObject = {};
1192
1193        _.cleanUpEvents();
1194
1195        $('.slick-cloned', _.$slider).detach();
1196
1197        if(_.options.autoplay && _.options.useAutoplayToggleButton) {
1198            _.$pauseButton.remove();
1199        }
1200
1201        if (_.$dots) {
1202            _.$dots.remove();
1203        }
1204
1205        if ( _.$prevArrow && _.$prevArrow.length ) {
1206
1207            _.$prevArrow
1208                .removeClass('slick-disabled slick-arrow slick-hidden')
1209                .prop('disabled', false)
1210                .css('display','');
1211
1212            if ( _.htmlExpr.test( _.options.prevArrow )) {
1213                _.$prevArrow.remove();
1214            }
1215        }
1216
1217        if ( _.$nextArrow && _.$nextArrow.length ) {
1218
1219            _.$nextArrow
1220                .removeClass('slick-disabled slick-arrow slick-hidden')
1221                .prop('disabled', false)
1222                .css('display','');
1223
1224            if ( _.htmlExpr.test( _.options.nextArrow )) {
1225                _.$nextArrow.remove();
1226            }
1227        }
1228
1229
1230        if (_.$slides) {
1231
1232            _.$slides
1233                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
1234                .removeAttr('aria-hidden')
1235                .removeAttr('data-slick-index')
1236                .each(function(){
1237                    $(this).attr('style', $(this).data('originalStyling'));
1238                });
1239
1240            _.$slideTrack.children(this.options.slide).detach();
1241
1242            _.$slideTrack.detach();
1243
1244            _.$list.detach();
1245
1246            _.$slider.append(_.$slides);
1247        }
1248
1249        _.cleanUpRows();
1250
1251        _.$slider.removeClass('slick-slider');
1252        _.$slider.removeClass('slick-initialized');
1253        _.$slider.removeClass('slick-dotted');
1254
1255        _.unslicked = true;
1256
1257        if(!refresh) {
1258            _.$slider.trigger('destroy', [_]);
1259        }
1260
1261    };
1262
1263    Slick.prototype.disableTransition = function(slide) {
1264
1265        var _ = this,
1266            transition = {};
1267
1268        transition[_.transitionType] = '';
1269
1270        if (_.options.fade === false) {
1271            _.$slideTrack.css(transition);
1272        } else {
1273            _.$slides.eq(slide).css(transition);
1274        }
1275
1276    };
1277
1278    Slick.prototype.fadeSlide = function(slideIndex, callback) {
1279
1280        var _ = this;
1281
1282        if (_.cssTransitions === false) {
1283
1284            _.$slides.eq(slideIndex).css({
1285                zIndex: _.options.zIndex
1286            });
1287
1288            _.$slides.eq(slideIndex).animate({
1289                opacity: 1
1290            }, _.options.speed, _.options.easing, callback);
1291
1292        } else {
1293
1294            _.applyTransition(slideIndex);
1295
1296            _.$slides.eq(slideIndex).css({
1297                opacity: 1,
1298                zIndex: _.options.zIndex
1299            });
1300
1301            if (callback) {
1302                setTimeout(function() {
1303
1304                    _.disableTransition(slideIndex);
1305
1306                    callback.call();
1307                }, _.options.speed);
1308            }
1309
1310        }
1311
1312    };
1313
1314    Slick.prototype.fadeSlideOut = function(slideIndex) {
1315
1316        var _ = this;
1317
1318        if (_.cssTransitions === false) {
1319
1320            _.$slides.eq(slideIndex).animate({
1321                opacity: 0,
1322                zIndex: _.options.zIndex - 2
1323            }, _.options.speed, _.options.easing);
1324
1325        } else {
1326
1327            _.applyTransition(slideIndex);
1328
1329            _.$slides.eq(slideIndex).css({
1330                opacity: 0,
1331                zIndex: _.options.zIndex - 2
1332            });
1333
1334        }
1335
1336    };
1337
1338    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
1339
1340        var _ = this;
1341
1342        if (filter !== null) {
1343
1344            _.$slidesCache = _.$slides;
1345
1346            _.unload();
1347
1348            _.$slideTrack.children(this.options.slide).detach();
1349
1350            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
1351
1352            _.reinit();
1353
1354        }
1355
1356    };
1357
1358    Slick.prototype.focusHandler = function() {
1359
1360        var _ = this;
1361
1362        // If any child element receives focus within the slider we need to pause the autoplay
1363        _.$slider
1364            .off('focus.slick blur.slick')
1365            .on(
1366                'focus.slick',
1367                '*',
1368                function(event) {
1369                    var $sf = $(this);
1370
1371                    setTimeout(function() {
1372                        if( _.options.pauseOnFocus ) {
1373                            if ($sf.is(':focus')) {
1374                                _.focussed = true;
1375                                _.autoPlay();
1376                            }
1377                        }
1378                    }, 0);
1379                }
1380            ).on(
1381                'blur.slick',
1382                '*',
1383                function(event) {
1384                    var $sf = $(this);
1385
1386                    // When a blur occurs on any elements within the slider we become unfocused
1387                    if( _.options.pauseOnFocus ) {
1388                        _.focussed = false;
1389                        _.autoPlay();
1390                    }
1391                }
1392            );
1393    };
1394
1395    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
1396
1397        var _ = this;
1398        return _.currentSlide;
1399
1400    };
1401
1402    Slick.prototype.getDotCount = function() {
1403
1404        var _ = this;
1405
1406        var breakPoint = 0;
1407        var counter = 0;
1408        var pagerQty = 0;
1409
1410        if (_.options.infinite === true) {
1411            if (_.slideCount <= _.options.slidesToShow) {
1412                 ++pagerQty;
1413            } else {
1414                while (breakPoint < _.slideCount) {
1415                    ++pagerQty;
1416                    breakPoint = counter + _.options.slidesToScroll;
1417                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1418                }
1419            }
1420        } else if (_.options.centerMode === true) {
1421            pagerQty = _.slideCount;
1422        } else if(!_.options.asNavFor) {
1423            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
1424        }else {
1425            while (breakPoint < _.slideCount) {
1426                ++pagerQty;
1427                breakPoint = counter + _.options.slidesToScroll;
1428                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1429            }
1430        }
1431
1432        return pagerQty - 1;
1433
1434    };
1435
1436    Slick.prototype.getLeft = function(slideIndex) {
1437
1438        var _ = this,
1439            targetLeft,
1440            verticalHeight,
1441            verticalOffset = 0,
1442            targetSlide,
1443            coef;
1444
1445        _.slideOffset = 0;
1446        verticalHeight = _.$slides.first().outerHeight(true);
1447
1448        if (_.options.infinite === true) {
1449            if (_.slideCount > _.options.slidesToShow) {
1450                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
1451                coef = -1
1452
1453                if (_.options.vertical === true && _.options.centerMode === true) {
1454                    if (_.options.slidesToShow === 2) {
1455                        coef = -1.5;
1456                    } else if (_.options.slidesToShow === 1) {
1457                        coef = -2
1458                    }
1459                }
1460                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
1461            }
1462            if (_.slideCount % _.options.slidesToScroll !== 0) {
1463                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
1464                    if (slideIndex > _.slideCount) {
1465                        _.slideOffset = ((_.options.slidesToShow - (sl
1465ideIndex - _.slideCount)) * _.slideWidth) * -1;
1466                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
1467                    } else {
1468                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
1469                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
1470                    }
1471                }
1472            }
1473        } else {
1474            if (slideIndex + _.options.slidesToShow > _.slideCount) {
1475                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
1476                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
1477            }
1478        }
1479
1480        if (_.slideCount <= _.options.slidesToShow) {
1481            _.slideOffset = 0;
1482            verticalOffset = 0;
1483        }
1484
1485        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
1486            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
1487        } else if (_.options.centerMode === true && _.options.infinite === true) {
1488            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
1489        } else if (_.options.centerMode === true) {
1490            _.slideOffset = 0;
1491            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
1492        }
1493
1494        if (_.options.vertical === false) {
1495            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
1496        } else {
1497            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
1498        }
1499
1500        if (_.options.variableWidth === true) {
1501
1502            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
1503                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
1504            } else {
1505                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
1506            }
1507
1508            if (_.options.rtl === true) {
1509                if (targetSlide[0]) {
1510                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
1511                } else {
1512                    targetLeft =  0;
1513                }
1514            } else {
1515                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
1516            }
1517
1518            if (_.options.centerMode === true) {
1519                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
1520                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
1521                } else {
1522                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
1523                }
1524
1525                if (_.options.rtl === true) {
1526                    if (targetSlide[0]) {
1527                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
1528                    } else {
1529                        targetLeft =  0;
1530                    }
1531                } else {
1532                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
1533                }
1534
1535                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
1536            }
1537        }
1538
1539        return targetLeft;
1540
1541    };
1542
1543    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
1544
1545        var _ = this;
1546
1547        return _.options[option];
1548
1549    };
1550
1551    Slick.prototype.getNavigableIndexes = function() {
1552
1553        var _ = this,
1554            breakPoint = 0,
1555            counter = 0,
1556            indexes = [],
1557            max;
1558
1559        if (_.options.infinite === false) {
1560            max = _.slideCount;
1561        } else {
1562            breakPoint = _.options.slidesToScroll * -1;
1563            counter = _.options.slidesToScroll * -1;
1564            max = _.slideCount * 2;
1565        }
1566
1567        while (breakPoint < max) {
1568            indexes.push(breakPoint);
1569            breakPoint = counter + _.options.slidesToScroll;
1570            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1571        }
1572
1573        return indexes;
1574
1575    };
1576
1577    Slick.prototype.getSlick = function() {
1578
1579        return this;
1580
1581    };
1582
1583    Slick.prototype.getSlideCount = function() {
1584
1585        var _ = this,
1586            slidesTraversed, swipedSlide, swipeTarget, centerOffset;
1587
1588        centerOffset = _.options.centerMode === true ? Math.floor(_.$list.width() / 2) : 0;
1589        swipeTarget = (_.swipeLeft * -1) + centerOffset;
1590
1591        if (_.options.swipeToSlide === true) {
1592
1593            _.$slideTrack.find('.slick-slide').each(function(index, slide) {
1594
1595                var slideOuterWidth, slideOffset, slideRightBoundary;
1596                slideOuterWidth = $(slide).outerWidth();
1597                slideOffset = slide.offsetLeft;
1598                if (_.options.centerMode !== true) {
1599                    slideOffset += (slideOuterWidth / 2);
1600                }
1601
1602                slideRightBoundary = slideOffset + (slideOuterWidth);
1603
1604                if (swipeTarget < slideRightBoundary) {
1605                    swipedSlide = slide;
1606                    return false;
1607                }
1608            });
1609
1610            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
1611
1612            return slidesTraversed;
1613
1614        } else {
1615            return _.options.slidesToScroll;
1616        }
1617
1618    };
1619
1620    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
1621
1622        var _ = this;
1623
1624        _.changeSlide({
1625            data: {
1626                message: 'index',
1627                index: parseInt(slide)
1628            }
1629        }, dontAnimate);
1630
1631    };
1632
1633    Slick.prototype.init = function(creation) {
1634
1635        var _ = this;
1636
1637        if (!$(_.$slider).hasClass('slick-initialized')) {
1638
1639            $(_.$slider).addClass('slick-initialized');
1640
1641            _.buildRows();
1642            _.buildOut();
1643            _.setProps();
1644            _.startLoad();
1645            _.loadSlider();
1646            _.initializeEvents();
1647            _.updateArrows();
1648            _.updateDots();
1649            _.checkResponsive(true);
1650            _.focusHandler();
1651
1652        }
1653
1654        if (creation) {
1655            _.$slider.trigger('init', [_]);
1656        }
1657
1658        if ( _.options.autoplay ) {
1659
1660            _.paused = false;
1661            _.autoPlay();
1662
1663        }
1664
1665        _.updateSlideVisibility();
1666
1667        if(_.options.accessibility != undefined) {
1668            console.warn('accessibility setting is no longer supported.')
1669        }
1670
1671        if(_.options.focusOnChange != undefined) {
1672            console.warn('focusOnChange is no longer supported.');
1673        }
1674
1675        if(_.options.focusOnSelect != undefined) {
1676            console.warn('focusOnSelect is no longer supported.');
1677        }
1678
1679    };
1680
1681    Slick.prototype.initArrowEvents = function() {
1682
1683        var _ = this;
1684
1685        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1686            _.$prevArrow
1687               .off('click.slick')
1688               .on('click.slick', {
1689                    message: 'previous'
1690               }, _.changeSlide);
1691            _.$nextArrow
1692               .off('click.slick')
1693               .on('click.slick', {
1694                    message: 'next'
1695               }, _.changeSlide);
1696        }
1697
1698    };
1699
1700    Slick.prototype.initDotEvents = function() {
1701
1702        var _ = this;
1703
1704        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1705            $('li', _.$dots).on('click.slick', {
1706                message: 'index'
1707            }, _.changeSlide);
1708        }
1709
1710        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {
1711
1712            $('li', _.$dots)
1713                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
1714                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
1715
1716        }
1717
1718    };
1719
1720    Slick.prototype.initSlideEvents = function() {
1721
1722        var _ = this;
1723
1724        if ( _.options.pauseOnHover ) {
1725
1726            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
1727            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
1728
1729        }
1730
1731    };
1732
1733    Slick.prototype.initializeEvents = function() {
1734
1735        var _ = this;
1736
1737        _.initArrowEvents();
1738
1739        _.initDotEvents();
1740        _.initSlideEvents();
1741
1742        if(_.options.autoplay && _.options.useAutoplayToggleButton) {
1743            _.$pauseButton.on('click.slick', _.autoPlayToggleHandler);
1744        }
1745
1746        _.$list.on('touchstart.slick mousedown.slick', {
1747            action: 'start'
1748        }, _.swipeHandler);
1749        _.$list.on('touchmove.slick mousemove.slick', {
1750            action: 'move'
1751        }, _.swipeHandler);
1752        _.$list.on('touchend.slick mouseup.slick', {
1753            action: 'end'
1754        }, _.swipeHandler);
1755        _.$list.on('touchcancel.slick mouseleave.slick', {
1756            action: 'end'
1757        }, _.swipeHandler);
1758
1759        _.$list.on('click.slick', _.clickHandler);
1760
1761        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
1762
1763        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
1764
1765        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
1766
1767        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
1768
1769        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
1770        $(_.setPosition);
1771
1772    };
1773
1774    Slick.prototype.initUI = function() {
1775
1776        var _ = this;
1777
1778        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1779
1780            _.$prevArrow.show();
1781            _.$nextArrow.show();
1782
1783        }
1784
1785        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1786
1787            _.$dots.show();
1788
1789        }
1790
1791    };
1792
1793    Slick.prototype.lazyLoad = function() {
1794
1795        var _ = this,
1796            loadRange, cloneRange, rangeStart, rangeEnd;
1797
1798        function loadImages(imagesScope) {
1799
1800            $('img[data-lazy]', imagesScope).each(function() {
1801
1802                var image = $(this),
1803                    imageSource = $(this).attr('data-lazy'),
1804                    imageSrcSet = $(this).attr('data-srcset'),
1805                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
1806                    imageToLoad = document.createElement('img');
1807
1808                imageToLoad.onload = function() {
1809
1810                    image
1811                        .animate({ opacity: 0 }, 100, function() {
1812
1813                            if (imageSrcSet) {
1814                                image
1815                                    .attr('srcset', imageSrcSet );
1816
1817                                if (imageSizes) {
1818                                    image
1819                                        .attr('sizes', imageSizes );
1820                                }
1821                            }
1822
1823                            image
1824                                .attr('src', imageSource)
1825                                .animate({ opacity: 1 }, 200, function() {
1826                                    image
1827                                        .removeAttr('data-lazy data-srcset data-sizes')
1828                                        .removeClass('slick-loading');
1829                                });
1830                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
1831                        });
1832
1833                };
1834
1835                imageToLoad.onerror = function() {
1836
1837                    image
1838                        .removeAttr( 'data-lazy' )
1839                        .removeClass( 'slick-loading' )
1840                        .addClass( 'slick-lazyload-error' );
1841
1842                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
1843
1844                };
1845
1846                imageToLoad.src = imageSource;
1847
1848            });
1849
1850        }
1851
1852        if (_.options.centerMode === true) {
1853            if (_.options.infinite === true) {
1854                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
1855                rangeEnd = rangeStart + _.options.slidesToShow + 2;
1856            } else {
1857                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
1858                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
1859            }
1860        } else {
1861            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
1862            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
1863            if (_.options.fade === true) {
1864                if (rangeStart > 0) rangeStart--;
1865                if (rangeEnd <= _.slideCount) rangeEnd++;
1866            }
1867        }
1868
1869        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
1870
1871        if (_.options.lazyLoad === 'anticipated') {
1872            var prevSlide = rangeStart - 1,
1873                nextSlide = rangeEnd,
1874                $slides = _.$slider.find('.slick-slide');
1875
1876            for (var i = 0; i < _.options.slidesToScroll; i++) {
1877                if (prevSlide < 0) prevSlide = _.slideCount - 1;
1878                loadRange = loadRange.add($slides.eq(prevSlide));
1879                loadRange = loadRange.add($slides.eq(nextSlide));
1880                prevSlide--;
1881                nextSlide++;
1882            }
1883        }
1884
1885        loadImages(loadRange);
1886
1887        if (_.slideCount <= _.options.slidesToShow) {
1888            cloneRange = _.$slider.find('.slick-slide');
1889            loadImages(cloneRange);
1890        } else
1891        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
1892            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
1893            loadImages(cloneRange);
1894        } else if (_.currentSlide === 0) {
1895            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
1896            loadImages(cloneRange);
1897        }
1898
1899    };
1900
1901    Slick.prototype.loadSlider = function() {
1902
1903        var _ = this;
1904
1905        _.setPosition();
1906
1907        _.$slideTrack.css({
1908            opacity: 1
1909        });
1910
1911        _.$slider.removeClass('slick-loading');
1912
1913        _.initUI();
1914
1915        if (_.options.lazyLoad === 'progressive') {
1916            _.progressiveLazyLoad();
1917        }
1918
1919    };
1920
1921    Slick.prototype.next = Slick.prototype.slickNext = function() {
1922
1923        var _ = this;
1924
1925        _.changeSlide({
1926            data: {
1927                message: 'next'
1928            }
1929        });
1930
1931    };
1932
1933    Slick.prototype.orientationChange = function() {
1934
1935        var _ = this;
1936
1937        _.checkResponsive();
1938        _.setPosition();
1939
1940    };
1941
1942    Slick.prototype.pause = Slick.prototype.slickPause = function() {
1943
1944        var _ = this;
1945
1946        _.autoPlayClear();
1947        _.paused = true;
1948
1949    };
1950
1951    Slick.prototype.play = Slick.prototype.slickPlay = function() {
1952
1953        var _ = this;
1954
1955        _.autoPlay();
1956        _.options.autoplay = true;
1957        _.paused = false;
1958        _.focussed = false;
1959        _.interrupted = false;
1960
1961    };
1962
1963    Slick.prototype.postSlide = function(index) {
1964
1965        var _ = this;
1966
1967        if( !_.unslicked ) {
1968
1969            _.$slider.trigger('afterChange', [_, index]);
1970
1971            _.animating = false;
1972
1973            if (_.slideCount > _.options.slidesToShow) {
1974                _.setPosition();
1975            }
1976
1977            _.swipeLeft = null;
1978
1979            if ( _.options.autoplay ) {
1980                _.autoPlay();
1981            }
1982
1983            _.updateSlideVisibility();
1984
1985        }
1986
1987    };
1988
1989    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
1990
1991        var _ = this;
1992
1993        _.changeSlide({
1994            data: {
1995                message: 'previous'
1996            }
1997        });
1998
1999    };
2000
2001    Slick.prototype.preventDefault = function(event) {
2002
2003        event.preventDefault();
2004
2005    };
2006
2007    Slick.prototype.progressiveLazyLoad = function( tryCount ) {
2008
2009        tryCount = tryCount || 1;
2010
2011        var _ = this,
2012            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
2013            image,
2014            imageSource,
2015            imageSrcSet,
2016            imageSizes,
2017            imageToLoad;
2018
2019        if ( $imgsToLoad.length ) {
2020
2021            image = $imgsToLoad.first();
2022            imageSource = image.attr('data-lazy');
2023            imageSrcSet = image.attr('data-srcset');
2024            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');
2025            imageToLoad = document.createElement('img');
2026
2027            imageToLoad.onload = function() {
2028
2029                if (imageSrcSet) {
2030                    image
2031                        .attr('srcset', imageSrcSet );
2032
2033                    if (imageSizes) {
2034                        image
2035                            .attr('sizes', imageSizes );
2036                    }
2037                }
2038
2039                image
2040                    .attr( 'src', imageSource )
2041                    .removeAttr('data-lazy data-srcset data-sizes')
2042                    .removeClass('slick-loading');
2043
2044                if ( _.options.adaptiveHeight === true ) {
2045                    _.setPosition();
2046                }
2047
2048                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
2049                _.progressiveLazyLoad();
2050
2051            };
2052
2053            imageToLoad.onerror = function() {
2054
2055                if ( tryCount < 3 ) {
2056
2057                    /**
2058                     * try to load the image 3 times,
2059                     * leave a slight delay so we don't get
2060                     * servers blocking the request.
2061                     */
2062                    setTimeout( function() {
2063                        _.progressiveLazyLoad( tryCount + 1 );
2064                    }, 500 );
2065
2066                } else {
2067
2068                    image
2069                        .removeAttr( 'data-lazy' )
2070                        .removeClass( 'slick-loading' )
2071                        .addClass( 'slick-lazyload-error' );
2072
2073                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
2074
2075                    _.progressiveLazyLoad();
2076
2077                }
2078
2079            };
2080
2081            imageToLoad.src = imageSource;
2082
2083        } else {
2084
2085            _.$slider.trigger('allImagesLoaded', [ _ ]);
2086
2087        }
2088
2089    };
2090
2091    Slick.prototype.refresh = function( initializing ) {
2092
2093        var _ = this, currentSlide, lastVisibleIndex;
2094
2095        lastVisibleIndex = _.slideCount - _.options.slidesToShow;
2096
2097        // in non-infinite sliders, we don't want to go past the
2098        // last visible index.
2099        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
2100            _.currentSlide = lastVisibleIndex;
2101        }
2102
2103        // if less slides than to show, go to start.
2104        if ( _.slideCount <= _.options.slidesToShow ) {
2105            _.currentSlide = 0;
2106
2107        }
2108
2109        currentSlide = _.currentSlide;
2110
2111        _.destroy(true);
2112
2113        $.extend(_, _.initials, { currentSlide: currentSlide });
2114
2115        _.init();
2116
2117        if( !initializing ) {
2118
2119            _.changeSlide({
2120                data: {
2121                    message: 'index',
2122                    index: currentSlide
2123                }
2124            }, false);
2125
2126        }
2127
2128    };
2129
2130    Slick.prototype.registerBreakpoints = function() {
2131
2132        var _ = this, breakpoint, currentBreakpoint, l,
2133            responsiveSettings = _.options.responsive || null;
2134
2135        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
2136
2137            _.respondTo = _.options.respondTo || 'window';
2138
2139            for ( breakpoint in responsiveSettings ) {
2140
2141                l = _.breakpoints.length-1;
2142
2143                if (responsiveSettings.hasOwnProperty(breakpoint)) {
2144                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
2145
2146                    // loop through the breakpoints and cut out any existing
2147                    // ones with the same breakpoint number, we don't want dupes.
2148                    while( l >= 0 ) {
2149                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
2150                            _.breakpoints.splice(l,1);
2151                        }
2152                        l--;
2153                    }
2154
2155                    _.breakpoints.push(currentBreakpoint);
2156                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
2157
2158                }
2159
2160            }
2161
2162            _.breakpoints.sort(function(a, b) {
2163                return ( _.options.mobileFirst ) ? a-b : b-a;
2164            });
2165
2166        }
2167
2168    };
2169
2170    Slick.prototype.reinit = function() {
2171
2172        var _ = this;
2173
2174        _.$slides =
2175            _.$slideTrack
2176                .children(_.options.slide)
2177                .addClass('slick-slide');
2178
2179        _.slideCount = _.$slides.length;
2180
2181        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
2182            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
2183        }
2184
2185        if (_.slideCount <= _.options.slidesToShow) {
2186            _.currentSlide = 0;
2187        }
2188
2189        _.registerBreakpoints();
2190
2191        _.setProps();
2192        _.setupInfinite();
2193        _.buildArrows();
2194        _.updateArrows();
2195        _.initArrowEvents();
2196        _.buildDots();
2197        _.updateDots();
2198        _.initDotEvents();
2199        _.cleanUpSlideEvents();
2200        _.initSlideEvents();
2201
2202        _.checkResponsive(false, true);
2203
2204        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
2205
2206        _.setPosition();
2207        _.focusHandler();
2208
2209        _.paused = !_.options.autoplay;
2210        _.autoPlay();
2211
2212        _.$slider.trigger('reInit', [_]);
2213
2214    };
2215
2216    Slick.prototype.resize = function() {
2217
2218        var _ = this;
2219
2220        if ($(window).width() !== _.windowWidth) {
2221            clearTimeout(_.windowDelay);
2222            _.windowDelay = window.setTimeout(function() {
2223                _.windowWidth = $(window).width();
2224                _.checkResponsive();
2225                if( !_.unslicked ) { _.setPosition(); }
2226            }, 50);
2227        }
2228    };
2229
2230    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
2231
2232        var _ = this;
2233
2234        if (typeof(index) === 'boolean') {
2235            removeBefore = index;
2236            index = removeBefore === true ? 0 : _.slideCount - 1;
2237        } else {
2238            index = removeBefore === true ? --index : index;
2239        }
2240
2241        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
2242            return false;
2243        }
2244
2245        _.unload();
2246
2247        if (removeAll === true) {
2248            _.$slideTrack.children().remove();
2249        } else {
2250            _.$slideTrack.children(this.options.slide).eq(index).remove();
2251        }
2252
2253        _.$slides = _.$slideTrack.children(this.options.slide);
2254
2255        _.$slideTrack.children(this.options.slide).detach();
2256
2257        _.$slideTrack.append(_.$slides);
2258
2259        _.$slidesCache = _.$slides;
2260
2261        _.reinit();
2262
2263    };
2264
2265    Slick.prototype.setCSS = function(position) {
2266
2267        var _ = this,
2268            positionProps = {},
2269            x, y;
2270
2271        if (_.options.rtl === true) {
2272            position = -position;
2273        }
2274        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
2275        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
2276
2277        positionProps[_.positionProp] = position;
2278
2279        if (_.transformsEnabled === false) {
2280            _.$slideTrack.css(positionProps);
2281        } else {
2282            positionProps = {};
2283            if (_.cssTransitions === false) {
2284                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
2285                _.$slideTrack.css(positionProps);
2286            } else {
2287                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
2288                _.$slideTrack.css(positionProps);
2289            }
2290        }
2291
2292    };
2293
2294    Slick.prototype.setDimensions = function() {
2295
2296        var _ = this;
2297
2298        if (_.options.vertical === false) {
2299            if (_.options.centerMode === true) {
2300                _.$list.css({
2301                    padding: ('0px ' + _.options.centerPadding)
2302                });
2303            }
2304        } else {
2305            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
2306            if (_.options.centerMode === true) {
2307                _.$list.css({
2308                    padding: (_.options.centerPadding + ' 0px')
2309                });
2310            }
2311        }
2312
2313        _.listWidth = _.$list.width();
2314        _.listHeight = _.$list.height();
2315
2316
2317        if (_.options.vertical === false && _.options.variableWidth === false) {
2318            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
2319            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
2320
2321        } else if (_.options.variableWidth === true) {
2322            _.$slideTrack.width(5000 * _.slideCount);
2323        } else {
2324            _.slideWidth = Math.ceil(_.listWidth);
2325            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
2326        }
2327
2328        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
2329        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
2330
2331    };
2332
2333    Slick.prototype.setFade = function() {
2334
2335        var _ = this,
2336            targetLeft;
2337
2338        _.$slides.each(function(index, element) {
2339            targetLeft = (_.slideWidth * index) * -1;
2340            if (_.options.rtl === true) {
2341                $(element).css({
2342                    position: 'relative',
2343                    right: targetLeft,
2344                    top: 0,
2345                    zIndex: _.options.zIndex - 2,
2346                    opacity: 0
2347                });
2348            } else {
2349                $(element).css({
2350                    position: 'relative',
2351                    left: targetLeft,
2352                    top: 0,
2353                    zIndex: _.options.zIndex - 2,
2354                    opacity: 0
2355                });
2356            }
2357        });
2358
2359        _.$slides.eq(_.currentSlide).css({
2360            zIndex: _.options.zIndex - 1,
2361            opacity: 1
2362        });
2363
2364    };
2365
2366    Slick.prototype.setHeight = function() {
2367
2368        var _ = this;
2369
2370        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
2371            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
2372            _.$list.css('height', targetHeight);
2373        }
2374
2375    };
2376
2377    Slick.prototype.setOption =
2378    Slick.prototype.slickSetOption = function() {
2379
2380        /**
2381         * accepts arguments in format of:
2382         *
2383         *  - for changing a single option's value:
2384         *     .slick("setOption", option, value, refresh )
2385         *
2386         *  - for changing a set of responsive options:
2387         *     .slick("setOption", 'responsive', [{}, ...], refresh )
2388         *
2389         *  - for updating multiple values at once (not responsive)
2390         *     .slick("setOption", { 'option': value, ... }, refresh )
2391         */
2392
2393        var _ = this, l, item, option, value, refresh = false, type;
2394
2395        if( $.type( arguments[0] ) === 'object' ) {
2396
2397            option =  arguments[0];
2398            refresh = arguments[1];
2399            type = 'multiple';
2400
2401        } else if ( $.type( arguments[0] ) === 'string' ) {
2402
2403            option =  arguments[0];
2404            value = arguments[1];
2405            refresh = arguments[2];
2406
2407            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
2408
2409                type = 'responsive';
2410
2411            } else if ( typeof arguments[1] !== 'undefined' ) {
2412
2413                type = 'single';
2414
2415            }
2416
2417        }
2418
2419        if ( type === 'single' ) {
2420
2421            _.options[option] = value;
2422
2423
2424        } else if ( type === 'multiple' ) {
2425
2426            $.each( option , function( opt, val ) {
2427
2428                _.options[opt] = val;
2429
2430            });
2431
2432
2433        } else if ( type === 'responsive' ) {
2434
2435            for ( item in value ) {
2436
2437                if( $.type( _.options.responsive ) !== 'array' ) {
2438
2439                    _.options.responsive = [ value[item] ];
2440
2441                } else {
2442
2443                    l = _.options.responsive.length-1;
2444
2445                    // loop through the responsive object and splice out duplicates.
2446                    while( l >= 0 ) {
2447
2448                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
2449
2450                            _.options.responsive.splice(l,1);
2451
2452                        }
2453
2454                        l--;
2455
2456                    }
2457
2458                    _.options.responsive.push( value[item] );
2459
2460                }
2461
2462            }
2463
2464        }
2465
2466        if ( refresh ) {
2467
2468            _.unload();
2469            _.reinit();
2470
2471        }
2472
2473    };
2474
2475    Slick.prototype.setPosition = function() {
2476
2477        var _ = this;
2478
2479        _.setDimensions();
2480
2481        _.setHeight();
2482
2483        if (_.options.fade === false) {
2484            _.setCSS(_.getLeft(_.currentSlide));
2485        } else {
2486            _.setFade();
2487        }
2488
2489        _.$slider.trigger('setPosition', [_]);
2490
2491    };
2492
2493    Slick.prototype.setProps = function() {
2494
2495        var _ = this,
2496            bodyStyle = document.body.style;
2497
2498        _.positionProp = _.options.vertical === true ? 'top' : 'left';
2499
2500        if (_.positionProp === 'top') {
2501            _.$slider.addClass('slick-vertical');
2502        } else {
2503            _.$slider.removeClass('slick-vertical');
2504        }
2505
2506        if (bodyStyle.WebkitTransition !== undefined ||
2507            bodyStyle.MozTransition !== undefined ||
2508            bodyStyle.msTransition !== undefined) {
2509            if (_.options.useCSS === true) {
2510                _.cssTransitions = true;
2511            }
2512        }
2513
2514        if ( _.options.fade ) {
2515            if ( typeof _.options.zIndex === 'number' ) {
2516                if( _.options.zIndex < 3 ) {
2517                    _.options.zIndex = 3;
2518                }
2519            } else {
2520                _.options.zIndex = _.defaults.zIndex;
2521            }
2522        }
2523
2524        if (bodyStyle.OTransform !== undefined) {
2525            _.animType = 'OTransform';
2526            _.transformType = '-o-transform';
2527            _.transitionType = 'OTransition';
2528            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
2529        }
2530        if (bodyStyle.MozTransform !== undefined) {
2531            _.animType = 'MozTransform';
2532            _.transformType = '-moz-transform';
2533            _.transitionType = 'MozTransition';
2534            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
2535        }
2536        if (bodyStyle.webkitTransform !== undefined) {
2537            _.animType = 'webkitTransform';
2538            _.transformType = '-webkit-transform';
2539            _.transitionType = 'webkitTransition';
2540            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
2541        }
2542        if (bodyStyle.msTransform !== undefined) {
2543            _.animType = 'msTransform';
2544            _.transformType = '-ms-transform';
2545            _.transitionType = 'msTransition';
2546            if (bodyStyle.msTransform === undefined) _.animType = false;
2547        }
2548        if (bodyStyle.transform !== undefined && _.animType !== false) {
2549            _.animType = 'transform';
2550            _.transformType = 'transform';
2551            _.transitionType = 'transition';
2552        }
2553        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
2554    };
2555
2556
2557    Slick.prototype.setSlideClasses = function(index) {
2558
2559        var _ = this,
2560            centerOffset, allSlides, indexOffset, remainder;
2561
2562        allSlides = _.$slider
2563            .find('.slick-slide')
2564            .removeClass('slick-active slick-center slick-current')
2565            .attr('aria-hidden', 'true')
2566            .attr('aria-label', function() {
2567                return $(this).attr('aria-label').replace(' (centered)', '');
2568            });
2569
2570        _.$slides
2571            .eq(index)
2572            .addClass('slick-current');
2573
2574        if (_.options.centerMode === true) {
2575
2576            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;
2577
2578            centerOffset = Math.floor(_.options.slidesToShow / 2);
2579
2580            if (_.options.infinite === true) {
2581
2582                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
2583                    _.$slides
2584                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
2585                        .addClass('slick-active')
2586                        .removeAttr('aria-hidden');
2587
2588                } else {
2589
2590                    indexOffset = _.options.slidesToShow + index;
2591                    allSlides
2592                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
2593                        .addClass('slick-active')
2594                        .removeAttr('aria-hidden');
2595
2596                }
2597
2598                if (index === 0) {
2599
2600                    allSlides
2601                        .eq( _.options.slidesToShow + _.slideCount + 1 )
2602                        .addClass('slick-center')
2603                        .attr('aria-label', function() {
2604                            return $(this).attr('aria-label') + ' (centered)';
2605                        });
2606
2607                } else if (index === _.slideCount - 1) {
2608
2609                    allSlides
2610                        .eq(_.options.slidesToShow)
2611                        .addClass('slick-center')
2612                        .attr('aria-label', function() {
2613                            return $(this).attr('aria-label') + ' (centered)';
2614                        });
2615
2616                }
2617
2618            }
2619
2620            _.$slides
2621                .eq(index)
2622                .addClass('slick-center')
2623                .attr('aria-label', function() {
2624                    return $(this).attr('aria-label') + ' (centered)';
2625                });
2626
2627        } else {
2628
2629            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
2630
2631                _.$slides
2632                    .slice(index, index + _.options.slidesToShow)
2633                    .addClass('slick-active')
2634                    .removeAttr('aria-hidden');
2635
2636            } else if (allSlides.length <= _.options.slidesToShow) {
2637
2638                allSlides
2639                    .addClass('slick-active')
2640                    .removeAttr('aria-hidden');
2641
2642            } else {
2643
2644                remainder = _.slideCount % _.options.slidesToShow;
2645                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
2646
2647                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
2648
2649                    allSlides
2650                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
2651                        .addClass('slick-active')
2652                        .removeAttr('aria-hidden');
2653
2654                } else {
2655
2656                    allSlides
2657                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
2658                        .addClass('slick-active')
2659                        .removeAttr('aria-hidden');
2660
2661                }
2662
2663            }
2664
2665        }
2666
2667        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
2668            _.lazyLoad();
2669        }
2670    };
2671
2672    Slick.prototype.setupInfinite = function() {
2673
2674        var _ = this,
2675            i, slideIndex, infiniteCount;
2676
2677        if (_.options.fade === true) {
2678            _.options.centerMode = false;
2679        }
2680
2681        if (_.options.infinite === true && _.options.fade === false) {
2682
2683            slideIndex = null;
2684
2685            if (_.slideCount > _.options.slidesToShow) {
2686
2687                if (_.options.centerMode === true) {
2688                    infiniteCount = _.options.slidesToShow + 1;
2689                } else {
2690                    infiniteCount = _.options.slidesToShow;
2691                }
2692
2693                for (i = _.slideCount; i > (_.slideCount -
2694                        infiniteCount); i -= 1) {
2695                    slideIndex = i - 1;
2696                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
2697                        .attr('data-slick-index', slideIndex - _.slideCount)
2698                        .prependTo(_.$slideTrack).addClass('slick-cloned');
2699                }
2700                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {
2701                    slideIndex = i;
2702                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
2703                        .attr('data-slick-index', slideIndex + _.slideCount)
2704                        .appendTo(_.$slideTrack).addClass('slick-cloned');
2705                }
2706                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
2707                    $(this).attr('id', '');
2708                });
2709
2710            }
2711
2712        }
2713
2714    };
2715
2716    Slick.prototype.interrupt = function( toggle ) {
2717
2718        var _ = this;
2719
2720        if( !toggle ) {
2721            _.autoPlay();
2722        }
2723        _.interrupted = toggle;
2724
2725    };
2726
2727    Slick.prototype.selectHandler = function(event) {
2728
2729        var _ = this;
2730
2731        var targetElement =
2732            $(event.target).is('.slick-slide') ?
2733                $(event.target) :
2734                $(event.target).parents('.slick-slide');
2735
2736        var index = parseInt(targetElement.attr('data-slick-index'));
2737
2738        if (!index) index = 0;
2739
2740        if (_.slideCount <= _.options.slidesToShow) {
2741
2742            _.slideHandler(index, false, true);
2743            return;
2744
2745        }
2746
2747        _.slideHandler(index);
2748
2749    };
2750
2751    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
2752
2753        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
2754            _ = this, navTarget;
2755
2756        sync = sync || false;
2757
2758        if (_.animating === true && _.options.waitForAnimate === true) {
2759            return;
2760        }
2761
2762        if (_.options.fade === true && _.currentSlide === index) {
2763            return;
2764        }
2765
2766        if (sync === false) {
2767            _.asNavFor(index);
2768        }
2769
2770        targetSlide = index;
2771        targetLeft = _.getLeft(targetSlide);
2772        slideLeft = _.getLeft(_.currentSlide);
2773
2774        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
2775
2776        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
2777            if (_.options.fade === false) {
2778                targetSlide = _.currentSlide;
2779                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
2780                    _.animateSlide(slideLeft, function() {
2781                        _.postSlide(targetSlide);
2782                    });
2783                } else {
2784                    _.postSlide(targetSlide);
2785                }
2786            }
2787            return;
2788        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
2789            if (_.options.fade === false) {
2790                targetSlide = _.currentSlide;
2791                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
2792                    _.animateSlide(slideLeft, function() {
2793                        _.postSlide(targetSlide);
2794                    });
2795                } else {
2796                    _.postSlide(targetSlide);
2797                }
2798            }
2799            return;
2800        }
2801
2802        if ( _.options.autoplay ) {
2803            clearInterval(_.autoPlayTimer);
2804        }
2805
2806        if (targetSlide < 0) {
2807            if (_.slideCount % _.options.slidesToScroll !== 0) {
2808                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
2809            } else {
2810                animSlide = _.slideCount + targetSlide;
2811            }
2812        } else if (targetSlide >= _.slideCount) {
2813            if (_.slideCount % _.options.slidesToScroll !== 0) {
2814                animSlide = 0;
2815            } else {
2816                animSlide = targetSlide - _.slideCount;
2817            }
2818        } else {
2819            animSlide = targetSlide;
2820        }
2821
2822        _.animating = true;
2823
2824        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
2825
2826        oldSlide = _.currentSlide;
2827        _.currentSlide = animSlide;
2828
2829        _.setSlideClasses(_.currentSlide);
2830
2831        if ( _.options.asNavFor ) {
2832
2833            navTarget = _.getNavTarget();
2834            navTarget = navTarget.slick('getSlick');
2835
2836            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
2837                navTarget.setSlideClasses(_.currentSlide);
2838            }
2839
2840        }
2841
2842        _.updateDots();
2843        _.updateArrows();
2844
2845        if (_.options.fade === true) {
2846            if (dontAnimate !== true) {
2847
2848                _.fadeSlideOut(oldSlide);
2849
2850                _.fadeSlide(animSlide, function() {
2851                    _.postSlide(animSlide);
2852                });
2853
2854            } else {
2855                _.postSlide(animSlide);
2856            }
2857            _.animateHeight();
2858            return;
2859        }
2860
2861        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
2862            _.animateSlide(targetLeft, function() {
2863                _.postSlide(animSlide);
2864            });
2865        } else {
2866            _.postSlide(animSlide);
2867        }
2868
2869    };
2870
2871    Slick.prototype.startLoad = function() {
2872
2873        var _ = this;
2874
2875        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
2876
2877            _.$prevArrow.hide();
2878            _.$nextArrow.hide();
2879
2880        }
2881
2882        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
2883
2884            _.$dots.hide();
2885
2886        }
2887
2888        _.$slider.addClass('slick-loading');
2889
2890    };
2891
2892    Slick.prototype.swipeDirection = function() {
2893
2894        var xDist, yDist, r, swipeAngle, _ = this;
2895
2896        xDist = _.touchObject.startX - _.touchObject.curX;
2897        yDist = _.touchObject.startY - _.touchObject.curY;
2898        r = Math.atan2(yDist, xDist);
2899
2900        swipeAngle = Math.round(r * 180 / Math.PI);
2901        if (swipeAngle < 0) {
2902            swipeAngle = 360 - Math.abs(swipeAngle);
2903        }
2904
2905        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
2906            return (_.options.rtl === false ? 'left' : 'right');
2907        }
2908        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
2909            return (_.options.rtl === false ? 'left' : 'right');
2910        }
2911        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
2912            return (_.options.rtl === false ? 'right' : 'left');
2913        }
2914        if (_.options.verticalSwiping === true) {
2915            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
2916                return 'down';
2917            } else {
2918                return 'up';
2919            }
2920        }
2921
2922        return 'vertical';
2923
2924    };
2925
2926    Slick.prototype.swipeEnd = function(event) {
2927
2928        var _ = this,
2929            slideCount,
2930            direction;
2931
2932        _.dragging = false;
2933        _.swiping = false;
2934
2935        if (_.scrolling) {
2936            _.scrolling = false;
2937            return false;
2938        }
2939
2940        _.interrupted = false;
2941        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
2942
2943        if ( _.touchObject.curX === undefined ) {
2944            return false;
2945        }
2946
2947        if ( _.touchObject.edgeHit === true ) {
2948            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
2949        }
2950
2951        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
2952
2953            direction = _.swipeDirection();
2954
2955            switch ( direction ) {
2956
2957                case 'left':
2958                case 'down':
2959
2960                    slideCount =
2961                        _.options.swipeToSlide ?
2962                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
2963                            _.currentSlide + _.getSlideCount();
2964
2965                    _.currentDirection = 0;
2966
2967                    break;
2968
2969                case 'right':
2970                case 'up':
2971
2972                    slideCount =
2973                        _.options.swipeToSlide ?
2974                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
2975                            _.currentSlide - _.getSlideCount();
2976
2977                    _.currentDirection = 1;
2978
2979                    break;
2980
2981                default:
2982
2983
2984            }
2985
2986            if( direction != 'vertical' ) {
2987
2988                _.slideHandler( slideCount );
2989                _.touchObject = {};
2990                _.$slider.trigger('swipe', [_, direction ]);
2991
2992            }
2993
2994        } else {
2995
2996            if ( _.touchObject.startX !== _.touchObject.curX ) {
2997
2998                _.slideHandler( _.currentSlide );
2999                _.touchObject = {};
3000
3001            }
3002
3003        }
3004
3005    };
3006
3007    Slick.prototype.swipeHandler = function(event) {
3008
3009        var _ = this;
3010
3011        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
3012            return;
3013        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
3014            return;
3015        }
3016
3017        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
3018            event.originalEvent.touches.length : 1;
3019
3020        _.touchObject.minSwipe = _.listWidth / _.options
3021            .touchThreshold;
3022
3023        if (_.options.verticalSwiping === true) {
3024            _.touchObject.minSwipe = _.listHeight / _.options
3025                .touchThreshold;
3026        }
3027
3028        switch (event.data.action) {
3029
3030            case 'start':
3031                _.swipeStart(event);
3032                break;
3033
3034            case 'move':
3035                _.swipeMove(event);
3036                break;
3037
3038            case 'end':
3039                _.swipeEnd(event);
3040                break;
3041
3042        }
3043
3044    };
3045
3046    Slick.prototype.swipeMove = function(event) {
3047
3048        var _ = this,
3049            edgeWasHit = false,
3050            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;
3051
3052        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
3053
3054        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
3055            return false;
3056        }
3057
3058        curLeft = _.getLeft(_.currentSlide);
3059
3060        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
3061        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
3062
3063        _.touchObject.swipeLength = Math.round(Math.sqrt(
3064            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
3065
3066        verticalSwipeLength = Math.round(Math.sqrt(
3067            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
3068
3069        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
3070            _.scrolling = true;
3071            return false;
3072        }
3073
3074        if (_.options.verticalSwiping === true) {
3075            _.touchObject.swipeLength = verticalSwipeLength;
3076        }
3077
3078        swipeDirection = _.swipeDirection();
3079
3080        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
3081            _.swiping = true;
3082            event.preventDefault();
3083        }
3084
3085        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
3086        if (_.options.verticalSwiping === true) {
3087            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
3088        }
3089
3090
3091        swipeLength = _.touchObject.swipeLength;
3092
3093        _.touchObject.edgeHit = false;
3094
3095        if (_.options.infinite === false) {
3096            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
3097                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
3098                _.touchObject.edgeHit = true;
3099            }
3100        }
3101
3102        if (_.options.vertical === false) {
3103            _.swipeLeft = curLeft + swipeLength * positionOffset;
3104        } else {
3105            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
3106        }
3107        if (_.options.verticalSwiping === true) {
3108            _.swipeLeft = curLeft + swipeLength * positionOffset;
3109        }
3110
3111        if (_.options.fade === true || _.options.touchMove === false) {
3112            return false;
3113        }
3114
3115        if (_.animating === true) {
3116            _.swipeLeft = null;
3117            return false;
3118        }
3119
3120        _.setCSS(_.swipeLeft);
3121
3122    };
3123
3124    Slick.prototype.swipeStart = function(event) {
3125
3126        var _ = this,
3127            touches;
3128
3129        _.interrupted = true;
3130
3131        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
3132            _.touchObject = {};
3133            return false;
3134        }
3135
3136        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
3137            touches = event.originalEvent.touches[0];
3138        }
3139
3140        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
3141        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
3142
3143        _.dragging = true;
3144
3145    };
3146
3147    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
3148
3149        var _ = this;
3150
3151        if (_.$slidesCache !== null) {
3152
3153            _.unload();
3154
3155            _.$slideTrack.children(this.options.slide).detach();
3156
3157            _.$slidesCache.appendTo(_.$slideTrack);
3158
3159            _.reinit();
3160
3161        }
3162
3163    };
3164
3165    Slick.prototype.unload = function() {
3166
3167        var _ = this;
3168
3169        $('.slick-cloned', _.$slider).remove();
3170
3171        if (_.$dots) {
3172            _.$dots.remove();
3173        }
3174
3175        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
3176            _.$prevArrow.remove();
3177        }
3178
3179        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
3180            _.$nextArrow.remove();
3181        }
3182
3183        _.$slides
3184            .removeClass('slick-slide slick-active slick-visible slick-current')
3185            .attr('aria-hidden', 'true')
3186            .css('width', '');
3187
3188    };
3189
3190    Slick.prototype.unslick = function(fromBreakpoint) {
3191
3192        var _ = this;
3193        _.$slider.trigger('unslick', [_, fromBreakpoint]);
3194        _.destroy();
3195
3196    };
3197
3198    Slick.prototype.updateArrows = function() {
3199
3200        var _ = this,
3201            centerOffset;
3202
3203        centerOffset = Math.floor(_.options.slidesToShow / 2);
3204
3205        if ( _.options.arrows === true &&
3206            _.slideCount > _.options.slidesToShow &&
3207            !_.options.infinite ) {
3208
3209            _.$prevArrow.removeClass('slick-disabled').prop('disabled', false);
3210            _.$nextArrow.removeClass('slick-disabled').prop('disabled', false);
3211
3212            if (_.currentSlide === 0) {
3213
3214                _.$prevArrow.addClass('slick-disabled').prop('disabled', true);
3215                _.$nextArrow.removeClass('slick-disabled').prop('disabled', false);
3216
3217            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
3218
3219                _.$nextArrow.addClass('slick-disabled').prop('disabled', true);
3220                _.$prevArrow.removeClass('slick-disabled').prop('disabled', false);
3221
3222            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
3223
3224                _.$nextArrow.addClass('slick-disabled').prop('disabled', true);
3225                _.$prevArrow.removeClass('slick-disabled').prop('disabled', false);
3226
3227            }
3228
3229        }
3230
3231    };
3232
3233    Slick.prototype.updateDots = function() {
3234
3235        var _ = this;
3236
3237        if (_.$dots !== null) {
3238
3239            _.$dots
3240                .find('li')
3241                    .removeClass('slick-active')
3242                    .find('button')
3243                        .removeAttr('aria-current')
3244                        .end()
3245                    .end();
3246
3247            _.$dots
3248                .find('li')
3249                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
3250                    .addClass('slick-active')
3251                    .find('button')
3252                        .attr('aria-current', true)
3253                        .end()
3254                    .end();
3255
3256        }
3257
3258    };
3259
3260    Slick.prototype.updateSlideVisibility = function() {
3261        var _ = this;
3262
3263        _.$slideTrack
3264            .find('.slick-slide')
3265                .attr('aria-hidden', 'true')
3266                .find('a, input, button, select')
3267                    .attr('tabindex', '-1');
3268
3269        _.$slideTrack
3270            .find('.slick-active')
3271                .removeAttr('aria-hidden')
3272                .find('a, input, button, select')
3273                    .removeAttr('tabindex');
3274    }
3275
3276    Slick.prototype.visibility = function() {
3277
3278        var _ = this;
3279
3280        if ( _.options.autoplay ) {
3281
3282            if ( document[_.hidden] ) {
3283
3284                _.interrupted = true;
3285
3286            } else {
3287
3288                _.interrupted = false;
3289
3290            }
3291
3292        }
3293
3294    };
3295
3296    $.fn.slick = function() {
3297        var _ = this,
3298            opt = arguments[0],
3299            args = Array.prototype.slice.call(arguments, 1),
3300            l = _.length,
3301            i,
3302            ret;
3303        for (i = 0; i < l; i++) {
3304            if (typeof opt == 'object' || typeof opt == 'undefined')
3305                _[i].slick = new Slick(_[i], opt);
3306            else
3307                ret = _[i].slick[opt].apply(_[i].slick, args);
3308            if (typeof ret != 'undefined') return ret;
3309        }
3310        return _;
3311    };
3312
3313}));
3314
3315
3316!function(t) {
3317    "use strict";
3318    "function" == typeof define && define.amd ? define(["jquery"], t) : "undefined" != typeof module && module.exports ? module.exports = t(require("jquery")) : t(jQuery)
3319}(function(t) {
3320    var e =- 1, o =- 1, i = function(t) {
3321        return parseFloat(t) || 0
3322    }, a = function(e) {
3323        var o = 1, a = t(e), n = null, r = [];
3324        return a.each(function() {
3325            var e = t(this), a = e.offset().top - i(e.css("margin-top")), s = r.length > 0 ? r[r.length - 1]: null;
3326            null === s ? r.push(e) : Math.floor(Math.abs(n - a)) <= o ? r[r.length - 1] = s.add(e) : r.push(e), n = a
3327        }), r
3328    }, n = function(e) {
3329        var o = {
3330            byRow: !0,
3331            property: "height",
3332            target: null,
3333            remove: !1
3334        };
3335        return "object" == typeof e ? t.extend(o, e) : ("boolean" == typeof e ? o.byRow = e : "remove" === e && (o.remove=!0), o)
3336    }, r = t.fn.matchHeight = function(e) {
3337        var o = n(e);
3338        if (o.remove) {
3339            var i = this;
3340            return this.css(o.property, ""), t.each(r._groups, function(t, e) {
3341                e.elements = e.elements.not(i)
3342            }), this
3343        }
3344        return this.length <= 1&&!o.target ? this : (r._groups.push({
3345            elements: this,
3346            options: o
3347        }), r._apply(this, o), this)
3348    };
3349    r.version = "0.7.0", r._groups = [], r._throttle = 80, r._maintainScroll=!1, r._beforeUpdate = null, r._afterUpdate = null, r._rows = a, r._parse = i, r._parseOptions = n, r._apply = function(e, o) {
3350        var s = n(o), h = t(e), l = [h], c = t(window).scrollTop(), p = t("html").outerHeight(!0), d = h.parents().filter(":hidden");
3351        return d.each(function() {
3352            var e = t(this);
3353            e.data("style-cache", e.attr("style"))
3354        }), d.css("display", "block"), s.byRow&&!s.target && (h.each(function() {
3355            var e = t(this), o = e.css("display");
3356            "inline-block" !== o && "flex" !== o && "inline-flex" !== o && (o = "block"), e.data("style-cache", e.attr("style")), e.css({
3357                display: o,
3358                "padding-top": "0",
3359                "padding-bottom": "0",
3360                "margin-top": "0",
3361                "margin-bottom": "0",
3362                "border-top-width": "0",
3363                "border-bottom-width": "0",
3364                height: "100px",
3365                overflow: "hidden"
3366            })
3367        }), l = a(h), h.each(function() {
3368            var e = t(this);
3369            e.attr("style", e.data("style-cache") || "")
3370        })), t.each(l, function(e, o) {
3371            var a = t(o), n = 0;
3372            if (s.target)
3373                n = s.target.outerHeight(!1);
3374            else {
3375                if (s.byRow && a.length <= 1)
3376                    return void a.css(s.property, "");
3377                a.each(function() {
3378                    var e = t(this), o = e.attr("style"), i = e.css("display");
3379                    "inline-block" !== i && "flex" !== i && "inline-flex" !== i && (i = "block");
3380                    var a = {
3381                        display: i
3382                    };
3383                    a[s.property] = "", e.css(a), e.outerHeight(!1) > n && (n = e.outerHeight(!1)), o ? e.attr("style", o) : e.css("display", "")
3384                })
3385            }
3386            a.each(function() {
3387                var e = t(this), o = 0;
3388                s.target && e.is(s.target) || ("border-box" !== e.css("box-sizing") && (o += i(e.css("border-top-width")) + i(e.css("border-bottom-width")), o += i(e.css("padding-top")) + i(e.css("padding-bottom"))), e.css(s.property, n - o + "px"))
3389            })
3390        }), d.each(function() {
3391            var e = t(this);
3392            e.attr("style", e.data("style-cache") || null)
3393        }), r._maintainScroll && t(window).scrollTop(c / p * t("html").outerHeight(!0)), this
3394    }, r._applyDataApi = function() {
3395        var e = {};
3396        t("[data-match-height], [data-mh]").each(function() {
3397            var o = t(this), i = o.attr("data-mh") || o.attr("data-match-height");
3398            i in e ? e[i] = e[i].add(o) : e[i] = o
3399        }), t.each(e, function() {
3400            this.matchHeight(!0)
3401        })
3402    };
3403    var s = function(e) {
3404        r._beforeUpdate && r._beforeUpdate(e, r._groups), t.each(r._groups, function() {
3405            r._apply(this.elements, this.options)
3406        }), r._afterUpdate && r._afterUpdate(e, r._groups)
3407    };
3408    r._update = function(i, a) {
3409        if (a && "resize" === a.type) {
3410            var n = t(window).width();
3411            if (n === e)
3412                return;
3413            e = n
3414        }
3415        i?-1 === o && (o = setTimeout(function() {
3416            s(a), o =- 1
3417        }, r._throttle)) : s(a)
3418    }, t(r._applyDataApi), t(window).bind("load", function(t) {
3419        r._update(!1, t)
3420    }), t(window).bind("resize orientationchange", function(t) {
3421        r._update(!0, t)
3422    })
3423});;
3424!function(e) {
3425    e.fn.flexVerticalCenter = function(t) {
3426        var n = e.extend({
3427            cssAttribute: "margin-top",
3428            verticalOffset: 0,
3429            parentSelector: null,
3430            debounceTimeout: 25,
3431            deferTilWindowLoad: !1
3432        }, t || {});
3433        return this.each(function() {
3434            var t, i = e(this), r = function() {
3435                var e = n.parentSelector && i.parents(n.parentSelector).length ? i.parents(n.parentSelector).first().height(): i.parent().height();
3436                i.css(n.cssAttribute, (e - i.height()) / 2 + parseInt(n.verticalOffset)), void 0 !== n.complete && n.complete()
3437            };
3438            e(window).resize(function() {
3439                clearTimeout(t), t = setTimeout(r, n.debounceTimeout)
3440            }), n.deferTilWindowLoad || r(), e(window).load(function() {
3441                r()
3442            })
3443        })
3444    }
3445}(jQuery);;
3446!function(e, n) {
3447    "use strict";
3448    "function" == typeof define && define.amd ? define(["jquery"], function(o) {
3449        return n(o, e, e.document, e.Math)
3450    }) : "undefined" != typeof exports ? module.exports = n(require("jquery"), e, e.document, e.Math) : n(jQuery, e, e.document, e.Math)
3451}("undefined" != typeof window ? window : this, function(e, n, o, t, i) {
3452    "use strict";
3453    var l, a = "fullpage-wrapper", r = "." + a, s = "fp-scrollable", c = "." + s, f = ".slimScrollBar", d = ".slimScrollRail", u = "fp-responsive", p = "fp-notransition", h = "fp-destroyed", v = "fp-enabled", m = "fp-viewing", g = "active", S = "." + g, w = ".section", y = "fp-section", x = "." + y, b = x + S, T = x + ":first", C = x + ":last", k = "fp-tableCell", A = "." + k, B = "fp-auto-height", M = "fp-normal-scroll", L = "fp-nav", E = "#" + L, R = "fp-tooltip", F = "." + R, H = "fp-show-active", q = ".slide", O = "fp-slide", z = "." + O, D = z + S, I = "fp-slides", P = "." + I, V = "fp-slidesContainer", W = "." + V, Y = "fp-table", U = "fp-slidesNav", X = "." + U, N = X + " a", K = "fp-controlArrow", j = "." + K, Q = "fp-prev", G = "." + Q, J = K + " " + Q, Z = j + G, $ = "fp-next", _ = "." + $, ee = K + " " + $, ne = j + _, oe = e(n), te = e(o);
3454    e.fn.fullpage = function(s) {
3455        function c() {
3456            s.css3 && (s.css3 = mn()), s.scrollBar = s.scrollBar || s.hybrid, d(), K(), Hn.setAllowScrolling(!0), Wn = oe.height(), Hn.setAutoScrolling(s.autoScrolling, "internal");
3457            var n = e(b).find(D);
3458            n.length && (0 !== e(b).index(x) || 0 === e(b).index(x) && 0 !== n.index()) && Tn(n), je(), vn(), oe.on("load", function() {
3459                Fe()
3460            })
3461        }
3462        function f() {
3463            oe.on("scroll", ce).on("hashchange", He).blur(Ve).resize(Ke), Vn.mousedown(De).mouseup(Ie), te.keydown(qe).keyup(ze).on("click touchstart", E + " a", We).on("click touchstart", N, Ye).on("click", F, Oe), e(x).on("click touchstart", j, Pe), s.normalScrollElements && (te.on("mouseenter", s.normalScrollElements, function() {
3464                Hn.setMouseWheelScrolling(!1)
3465            }), te.on("mouseleave", s.normalScrollElements, function() {
3466                Hn.setMouseWheelScrolling(!0)
3467            }))
3468        }
3469        function d() {
3470            s.anchors.length || (s.anchors = e(s.sectionSelector + "[data-anchor]").map(function() {
3471                return e(this).data("anchor").toString()
3472            }).get()), s.navigationTooltips.length || (s.navigationTooltips = e(s.sectionSelector + "[data-tooltip]").map(function() {
3473                return e(this).data("tooltip").toString()
3474            }).get())
3475        }
3476        function K() {
3477            Vn.css({
3478                height: "100%",
3479                position: "relative"
3480            }), Vn.addClass(a), e("html").addClass(v), Vn.removeClass(h), ie(), e(x).each(function(n) {
3481                var o = e(this), t = o.find(z), i = t.length;
3482                $(o, n), _(o, n), i > 0 ? G(o, t, i) : s.verticalCentered && tn(o)
3483            }), s.fixedElements && s.css3 && e(s.fixedElements).appendTo(Fn), s.navigation && ae(), s.scrollOverflow ? ("complete" === o.readyState && re(), oe.on("load", re)) : se()
3484        }
3485        function G(n, o, t) {
3486            var i = 100 * t, l = 100 / t;
3487            o.wrapAll('<div class="' + V + '" />'), o.parent().wrap('<div class="' + I + '" />'), n.find(W).css("width", i + "%"), t > 1 && (s.controlArrows && le(n), s.slidesNavigation && dn(n, t)), o.each(function(n) {
3488                e(this).css("width", l + "%"), s.verticalCentered && tn(e(this))
3489            });
3490            var a = n.find(D);
3491            a.length && (0 !== e(b).index(x) || 0 === e(b).index(x) && 0 !== a.index()) ? Tn(a) : o.eq(0).addClass(g)
3492        }
3493        function $(n, o) {
3494            o || 0 !== e(b).length || n.addClass(g), n.css("height", Wn + "px"), s.paddingTop && n.css("padding-top", s.paddingTop), s.paddingBottom && n.css("padding-bottom", s.paddingBottom), "undefined" != typeof s.sectionsColor[o] && n.css("background-color", s.sectionsColor[o]), "undefined" != typeof s.anchors[o] && n.attr("data-anchor", s.anchors[o])
3495        }
3496        function _(n, o) {
3497            "undefined" != typeof s.anchors[o] && n.hasClass(g) && _e(s.anchors[o], o), s.menu && s.css3 && e(s.menu).closest(r).length && e(s.menu).appendTo(Fn)
3498        }
3499        function ie() {
3500            e(s.sectionSelector).each(function() {
3501                e(this).addClass(y)
3502            }), e(s.slideSelector).each(function() {
3503                e(this).addClass(O)
3504            })
3505        }
3506        function le(e) {
3507            e.find(P).after('<div class="' + J + '"></div><div class="' + ee + '"></div>'), "#fff" != s.controlArrowColor && (e.find(ne).css("border-color", "transparent transparent transparent " + s.controlArrowColor), e.find(Z).css("border-color", "transparent " + s.controlArrowColor + " transparent transparent")), s.loopHorizontal || e.find(Z).hide()
3508        }
3509        function ae() {
3510            Fn.append('<div id="' + L + '"><ul></ul></div>');
3511            var n = e(E);
3512            n.addClass(function() {
3513                return s.showActiveTooltip ? H + " " + s.navigationPosition : s.navigationPosition
3514            });
3515            for (var o = 0; o < e(x).length; o++) {
3516                var t = "";
3517                s.anchors.length && (t = s.anchors[o]);
3518                var i = '<li><a href="#' + t + '"><span></span></a>', l = s.navigationTooltips[o];
3519                "undefined" != typeof l && "" !== l && (i += '<div class="' + R + " " + s.navigationPosition + '">' + l + "</div>"), i += "</li>", n.find("ul").append(i)
3520            }
3521            e(E).css("margin-top", "-" + e(E).height() / 2 + "px"), e(E).find("li").eq(e(b).index(x)).find("a").addClass(g)
3522        }
3523        function re() {
3524            e(x).each(function() {
3525                var n = e(this).find(z);
3526                n.length ? n.each(function() {
3527                    on(e(this))
3528                }) : on(e(this))
3529            }), se()
3530        }
3531        function se() {
3532            var n = e(b);
3533            n.addClass("completely"), s.scrollOverflowHandler.afterRe
3533nder && s.scrollOverflowHandler.afterRender(n), Me(n), Le(n), e.isFunction(s.afterLoad) && s.afterLoad.call(n, n.data("anchor"), n.index(x) + 1), e.isFunction(s.afterRender) && s.afterRender.call(Vn)
3534        }
3535        function ce() {
3536            var n;
3537            if (!s.autoScrolling || s.scrollBar) {
3538                for (var t = oe.scrollTop(), i = de(t), l = 0, a = t + oe.height() / 2, r = o.querySelectorAll(x), c = 0; c < r.length; ++c) {
3539                    var f = r[c];
3540                    f.offsetTop <= a && (l = c)
3541                }
3542                if (fe(i) && (e(b).hasClass("completely") || e(b).addClass("completely").siblings().removeClass("completely")), n = e(r).eq(l), !n.hasClass(g)) {
3543                    eo=!0;
3544                    var d = e(b), u = d.index(x) + 1, p = en(n), h = n.data("anchor"), v = n.index(x) + 1, m = n.find(D);
3545                    if (m.length)
3546                        var S = m.data("anchor"), w = m.index();
3547                    Xn && (n.addClass(g).siblings().removeClass(g), e.isFunction(s.onLeave) && s.onLeave.call(d, u, v, p), e.isFunction(s.afterLoad) && s.afterLoad.call(n, h, v), Me(n), _e(h, v - 1), s.anchors.length && (qn = h, un(w, S, h, v))), clearTimeout(Jn), Jn = setTimeout(function() {
3548                        eo=!1
3549                    }, 100)
3550                }
3551                s.fitToSection && (clearTimeout(Zn), Zn = setTimeout(function() {
3552                    Xn && s.fitToSection && (e(b).is(n) && requestAnimFrame(function() {
3553                        Yn=!0
3554                    }), be(n), requestAnimFrame(function() {
3555                        Yn=!1
3556                    }))
3557                }, s.fitToSectionDelay))
3558            }
3559        }
3560        function fe(n) {
3561            var o = e(b).position().top, t = o + oe.height();
3562            return "up" == n ? t >= oe.scrollTop() + oe.height() : o <= oe.scrollTop()
3563        }
3564        function de(e) {
3565            var n = e > no ? "down": "up";
3566            return no = e, n
3567        }
3568        function ue(e, n) {
3569            if (Kn.m[e]) {
3570                var o, t;
3571                if ("down" == e ? (o = "bottom", t = Hn.moveSectionDown) : (o = "top", t = Hn.moveSectionUp), n.length > 0) {
3572                    if (!s.scrollOverflowHandler.isScrolled(o, n))
3573                        return !0;
3574                    t()
3575                } else 
3576                    t()
3577            }
3578        }
3579        function pe(n) {
3580            var o = n.originalEvent;
3581            if (!he(n.target) && ve(o)) {
3582                s.autoScrolling && n.preventDefault();
3583                var i = e(b), l = s.scrollOverflowHandler.scrollable(i);
3584                if (Xn&&!Dn) {
3585                    var a = bn(o);
3586                    io = a.y, lo = a.x, i.find(P).length && t.abs(to - lo) > t.abs(oo - io) ? t.abs(to - lo) > oe.outerWidth() / 100 * s.touchSensitivity && (to > lo ? Kn.m.right && Hn.moveSlideRight() : Kn.m.left && Hn.moveSlideLeft()) : s.autoScrolling && t.abs(oo - io) > oe.height() / 100 * s.touchSensitivity && (oo > io ? ue("down", l) : io > oo && ue("up", l))
3587                }
3588            }
3589        }
3590        function he(n, o) {
3591            o = o || 0;
3592            var t = e(n).parent();
3593            return o < s.normalScrollElementTouchThreshold && t.is(s.normalScrollElements)?!0 : o == s.normalScrollElementTouchThreshold?!1 : he(t, ++o)
3594        }
3595        function ve(e) {
3596            return "undefined" == typeof e.pointerType || "mouse" != e.pointerType
3597        }
3598        function me(e) {
3599            var n = e.originalEvent;
3600            if (s.fitToSection && Rn.stop(), ve(n)) {
3601                var o = bn(n);
3602                oo = o.y, to = o.x
3603            }
3604        }
3605        function ge(e, n) {
3606            for (var o = 0, i = e.slice(t.max(e.length - n, 1)), l = 0; l < i.length; l++)
3607                o += i[l];
3608            return t.ceil(o / n)
3609        }
3610        function Se(o) {
3611            var i = (new Date).getTime(), l = e(".completely").hasClass(M);
3612            if (s.autoScrolling&&!zn&&!l) {
3613                o = o || n.event;
3614                var a = o.wheelDelta||-o.deltaY||-o.detail, r = t.max( - 1, t.min(1, a)), c = "undefined" != typeof o.wheelDeltaX || "undefined" != typeof o.deltaX, f = t.abs(o.wheelDeltaX) < t.abs(o.wheelDelta) || t.abs(o.deltaX) < t.abs(o.deltaY) ||!c;
3615                Nn.length > 149 && Nn.shift(), Nn.push(t.abs(a)), s.scrollBar && (o.preventDefault ? o.preventDefault() : o.returnValue=!1);
3616                var d = e(b), u = s.scrollOverflowHandler.scrollable(d), p = i - ao;
3617                if (ao = i, p > 200 && (Nn = []), Xn) {
3618                    var h = ge(Nn, 10), v = ge(Nn, 70), m = h >= v;
3619                    m && f && (0 > r ? ue("down", u) : ue("up", u))
3620                }
3621                return !1
3622            }
3623            s.fitToSection && Rn.stop()
3624        }
3625        function we(n, o) {
3626            var t = "undefined" == typeof o ? e(b): o, i = t.find(P), l = i.find(z).length;
3627            if (!(!i.length || Dn || 2 > l)) {
3628                var a = i.find(D), r = null;
3629                if (r = "prev" === n ? a.prev(z) : a.next(z), !r.length) {
3630                    if (!s.loopHorizontal)
3631                        return;
3632                    r = "prev" === n ? a.siblings(":last") : a.siblings(":first")
3633                }
3634                Dn=!0, Ne(i, r)
3635            }
3636        }
3637        function ye() {
3638            e(D).each(function() {
3639                Tn(e(this), "internal")
3640            })
3641        }
3642        function xe(e, n) {
3643            var o = e.top;
3644            return e.top >
3644 ro && (o = o - Wn + n.outerHeight()), ro = o, o
3645        }
3646        function be(n, o, t) {
3647            requestAnimFrame(function() {
3648                var i = n.position();
3649                if ("undefined" != typeof i) {
3650                    var l = xe(i, n), a = {
3651                        element: n,
3652                        callback: o,
3653                        isMovementUp: t,
3654                        dest: i,
3655                        dtop: l,
3656                        yMovement: en(n),
3657                        anchorLink: n.data("anchor"),
3658                        sectionIndex: n.index(x),
3659                        activeSlide: n.find(D),
3660                        activeSection: e(b),
3661                        leavingSection: e(b).index(x) + 1,
3662                        localIsResizing: Yn
3663                    };
3664                    if (!(a.activeSection.is(n)&&!Yn || s.scrollBar && oe.scrollTop() === a.dtop&&!n.hasClass(B))) {
3665                        if (a.activeSlide.length)
3666                            var r = a.activeSlide.data("anchor"), c = a.activeSlide.index();
3667                        s.autoScrolling && s.continuousVertical && "undefined" != typeof a.isMovementUp && (!a.isMovementUp && "up" == a.yMovement || a.isMovementUp && "down" == a.yMovement) && (a = ke(a)), (!e.isFunction(s.onLeave) || a.localIsResizing || s.onLeave.call(a.activeSection, a.leavingSection, a.sectionIndex + 1, a.yMovement)!==!1) && (Ee(a.activeSection), n.addClass(g).siblings().removeClass(g), Me(n), Xn=!1, un(c, r, a.anchorLink, a.sectionIndex), Te(a), qn = a.anchorLink, _e(a.anchorLink, a.sectionIndex))
3668                    }
3669                }
3670            })
3671        }
3672        function Te(n) {
3673            if (s.css3 && s.autoScrolling&&!s.scrollBar) {
3674                var o = "translate3d(0px, -" + n.dtop + "px, 0px)";
3675                an(o, !0), s.scrollingSpeed ? Qn = setTimeout(function() {
3676                    Be(n)
3677                }, s.scrollingSpeed) : Be(n)
3678            } else {
3679                var t = Ce(n);
3680                e(t.element).animate(t.options, s.scrollingSpeed, s.easing).promise().done(function() {
3681                    s.scrollBar ? setTimeout(function() {
3682                        Be(n)
3683                    }, 30) : Be(n)
3684                })
3685            }
3686        }
3687        function Ce(e) {
3688            var n = {};
3689            return s.autoScrolling&&!s.scrollBar ? (n.options = {
3690                top: - e.dtop
3691            }, n.element = r) : (n.options = {
3692                scrollTop: e.dtop
3693            }, n.element = "html, body"), n
3694        }
3695        function ke(n) {
3696            return n.isMovementUp ? e(b).before(n.activeSection.nextAll(x)) : e(b).after(n.activeSection.prevAll(x).get().reverse()), Cn(e(b).position().top), ye(), n.wrapAroundElements = n.activeSection, n.dest = n.element.position(), n.dtop = n.dest.top, n.yMovement = en(n.element), n
3697        }
3698        function Ae(n) {
3699            n.wrapAroundElements && n.wrapAroundElements.length && (n.isMovementUp ? e(T).before(n.wrapAroundElements) : e(C).after(n.wrapAroundElements), Cn(e(b).position().top), ye())
3700        }
3701        function Be(n) {
3702            Ae(n), n.element.find(".fp-scrollable").mouseover(), e.isFunction(s.afterLoad)&&!n.localIsResizing && s.afterLoad.call(n.element, n.anchorLink, n.sectionIndex + 1), Le(n.element), n.element.addClass("completely").siblings().removeClass("completely"), Xn=!0, e.isFunction(n.callback) && n.callback.call(this)
3703        }
3704        function Me(n) {
3705            var n = Re(n);
3706            n.find("img[data-src], source[data-src], audio[data-src]").each(function() {
3707                e(this).attr("src", e(this).data("src")), e(this).removeAttr("data-src"), e(this).is("source") && e(this).closest("video").get(0).load()
3708            })
3709        }
3710        function Le(n) {
3711            var n = Re(n);
3712            n.find("video, audio").each(function() {
3713                var n = e(this).get(0);
3714                n.hasAttribute("autoplay") && "function" == typeof n.play && n.play()
3715            })
3716        }
3717        function Ee(n) {
3718            var n = Re(n);
3719            n.find("video, audio").each(function() {
3720                var n = e(this).get(0);
3721                n.hasAttribute("data-ignore") || "function" != typeof n.pause || n.pause()
3722            })
3723        }
3724        function Re(n) {
3725            var o = n.find(D);
3726            return o.length && (n = e(o)), n
3727        }
3728        function Fe() {
3729            var e = n.location.hash.replace("#", "").split("/"), o = e[0], t = e[1];
3730            o && (s.animateAnchor ? cn(o, t) : Hn.silentMoveTo(o, t))
3731        }
3732        function He() {
3733            if (!eo&&!s.lockAnchors) {
3734                var e = n.location.hash.replace("#", "").split("/"), o = e[0], t = e[1], i = "undefined" == typeof qn, l = "undefined" == typeof qn && "undefined" == typeof t&&!Dn;
3735                o.length && (o && o !== qn&&!i || l ||!Dn && On != t) && cn(o, t)
3736            }
3737        }
3738        function qe(n) {
3739            clearTimeout($n);
3740            var o = e(":focus");
3741            if (!o.is("textarea")&&!o.is("input")&&!o.is("select") && s.keyboardScrolling && s.autoScrolling) {
3742                var t = n.which, i = [40, 38, 32, 33, 34];
3743                e.inArray(t, i)>-1 && n.preventDefault(), zn = n.ctrlKey, $n = setTimeout(function() {
3744                    Ue(n)
3745                }, 150)
3746            }
3747        }
3748        function Oe() {
3749            e(this).prev().trigger("click")
3750        }
3751        function ze(e) {
3752            Un && (zn = e.ctrlKey)
3753        }
3754        function De(e) {
3755            2 == e.which && (so = e.pageY, Vn.on("mousemove", Xe))
3756        }
3757        function Ie(e) {
3758            2 == e.which && Vn.off("mousemove")
3759        }
3760        function Pe() {
3761            var n = e(this).closest(x);
3762            e(this).hasClass(Q) ? Kn.m.left && Hn.moveSlideLeft(n) : Kn.m.right && Hn.moveSlideRight(n)
3763        }
3764        function Ve() {
3765            Un=!1, zn=!1
3766        }
3767        function We(n) {
3768            n.preventDefault();
3769            var o = e(this).parent().index();
3770            be(e(x).eq(o))
3771        }
3772        function Ye(n) {
3773            n.preventDefault();
3774            var o = e(this).closest(x).find(P), t = o.find(z).eq(e(this).closest("li").index());
3775            Ne(o, t)
3776        }
3777        function Ue(n) {
3778            var o = n.shiftKey;
3779            switch (n.which) {
3780            case 38:
3781            case 33:
3782                Kn.k.up && Hn.moveSectionUp();
3783                break;
3784            case 32:
3785                if (o && Kn.k.up) {
3786                    Hn.moveSectionUp();
3787                    break
3788                }
3789            case 40:
3790            case 34:
3791                Kn.k.down && Hn.moveSectionDown();
3792                break;
3793            case 36:
3794                Kn.k.up && Hn.moveTo(1);
3795                break;
3796            case 35:
3797                Kn.k.down && Hn.moveTo(e(x).length);
3798                break;
3799            case 37:
3800                Kn.k.left && Hn.moveSlideLeft();
3801                break;
3802            case 39:
3803                Kn.k.right && Hn.moveSlideRight();
3804                break;
3805            default:
3806                return 
3807            }
3808        }
3809        function Xe(e) {
3810            Xn && (e.pageY < so ? Hn.moveSectionUp() : e.pageY > so && Hn.moveSectionDown()), so = e.pageY
3811        }
3812        function Ne(n, o) {
3813            var i = o.position(), l = o.index(), a = n.closest(x), r = a.index(x), c = a.data("anchor"), f = a.find(X), d = hn(o), u = a.find(D), p = Yn;
3814            if (s.onSlideLeave) {
3815                var h = u.index(), v = nn(h, l);
3816                if (!p && "none" !== v && e.isFunction(s.onSlideLeave) && s.onSlideLeave.call(u, c, r + 1, h, v, l)===!1)
3817                    return void(Dn=!1)
3818            }
3819            Ee(u), o.addClass(g).siblings().removeClass(g), p || Me(o), !s.loopHorizontal && s.controlArrows && (a.find(Z).toggle(0 !== l), a.find(ne).toggle(!o.is(":last-child"))), a.hasClass(g) && un(l, d, c, r);
3820            var m = function() {
3821                p || e.isFunction(s.afterSlideLoad) && s.afterSlideLoad.call(o, c, r + 1, d, l), Le(o), Dn=!1
3822            };
3823            if (s.css3) {
3824                var w = "translate3d(-" + t.round(i.left) + "px, 0px, 0px)";
3825                Qe(n.find(W), s.scrollingSpeed > 0).css(kn(w)), Gn = setTimeout(function() {
3826                    m()
3827                }, s.scrollingSpeed, s.easing)
3828            } else 
3829                n.animate({
3830                    scrollLeft: t.round(i.left)
3831                }, s.scrollingSpeed, s.easing, function() {
3832                    m()
3833                });
3834            f.find(S).removeClass(g), f.find("li").eq(l).find("a").addClass(g)
3835        }
3836        function Ke() {
3837            if (je(), In) {
3838                var n = e(o.activeElement);
3839                if (!n.is("textarea")&&!n.is("input")&&!n.is("select")) {
3840                    var i = oe.height();
3841                    t.abs(i - co) > 20 * t.max(co, i) / 100 && (Hn.reBuild(!0), co = i)
3842                }
3843            } else 
3844                clearTimeout(jn), jn = setTimeout(function() {
3845                    Hn.reBuild(!0)
3846                }, 350)
3847        }
3848        function je() {
3849            var e = s.responsive || s.responsiveWidth, n = s.responsiveHeight, o = e && oe.outerWidth() < e, t = n && oe.height() < n;
3850            e && n ? Hn.setResponsive(o || t) : e ? Hn.setResponsive(o) : n && Hn.setResponsive(t)
3851        }
3852        function Qe(e) {
3853            var n = "all " + s.scrollingSpeed + "ms " + s.easingcss3;
3854            return e.removeClass(p), e.css({
3855                "-webkit-transition": n,
3856                transition: n
3857            })
3858        }
3859        function Ge(e) {
3860            return e.addClass(p)
3861        }
3862        function Je(e, n) {
3863            var o = 825, i = 900;
3864            if (o > e || i > n) {
3865                var l = 100 * e / o, a = 100 * n / i, r = t.min(l, a), s = r.toFixed(2);
3866                Fn.css("font-size", s + "%")
3867            } else 
3868                Fn.css("font-size", "100%")
3869        }
3870        function Ze(n, o) {
3871            s.navigation && (e(E).find(S).removeClass(g), n ? e(E).find('a[href="#' + n + '"]').addClass(g) : e(E).find("li").eq(o).find("a").addClass(g))
3872        }
3873        function $e(n) {
3874            s.menu && (e(s.menu).find(S).removeClass(g), e(s.menu).find('[data-menuanchor="' + n + '"]').addClass(g))
3875        }
3876        function _e(e, n) {
3877            $e(e), Ze(e, n)
3878        }
3879        function en(n) {
3880            var o = e(b).index(x), t = n.index(x);
3881            return o == t ? "none" : o > t ? "up" : "down"
3882        }
3883        function nn(e, n) {
3884            return e == n ? "none" : e > n ? "left" : "right"
3885        }
3886        function on(e) {
3887            e.css("overflow", "hidden");
3888            var n, o = s.scrollOverflowHandler, t = o.wrapContent(), i = e.closest(x), l = o.scrollable(e);
3889            l.length ? n = o.scrollHeight(e) : (n = e.get(0).scrollHeight, s.verticalCentered && (n = e.find(A).get(0).scrollHeight));
3890            var a = Wn - parseInt(i.css("padding-bottom")) - parseInt(i.css("padding-top"));
3891            n > a ? l.length ? o.update(e, a) : (s.verticalCentered ? e.find(A).wrapInner(t) : e.wrapInner(t), o.create(e, a)) : o.remove(e), e.css("overflow", "")
3892        }
3893        function tn(e) {
3894            e.addClass(Y).wrapInner('<div class="' + k + '" style="height:' + ln(e) + 'px;" />')
3895        }
3896        function ln(e) {
3897            var n = Wn;
3898            if (s.paddingTop || s.paddingBottom) {
3899                var o = e;
3900                o.hasClass(y) || (o = e.closest(x));
3901                var t = parseInt(o.css("padding-top")) + parseInt(o.css("padding-bottom"));
3902                n = Wn - t
3903            }
3904            return n
3905        }
3906        function an(e, n) {
3907            n ? Qe(Vn) : Ge(Vn), Vn.css(kn(e)), setTimeout(function() {
3908                Vn.removeClass(p)
3909            }, 10)
3910        }
3911        function rn(n) {
3912            var o = Vn.find(x + '[data-anchor="' + n + '"]');
3913            return o.length || (o = e(x).eq(n - 1)), o
3914        }
3915        function sn(e, n) {
3916            var o = n.find(P), t = o.find(z + '[data-anchor="' + e + '"]');
3917            return t.length || (t = o.find(z).eq(e)), t
3918        }
3919        function cn(e, n) {
3920            var o = rn(e);
3921            "undefined" == typeof n && (n = 0), e === qn || o.hasClass(g) ? fn(o, n) : be(o, function() {
3922                fn(o, n)
3923            })
3924        }
3925        function fn(e, n) {
3926            if ("undefined" != typeof n) {
3927                var o = e.find(P), t = sn(n, e);
3928                t.length && Ne(o, t)
3929            }
3930        }
3931        function dn(e, n) {
3932            e.append('<div class="' + U + '"><ul></ul></div>');
3933            var o = e.find(X);
3934            o.addClass(s.slidesNavPosition);
3935            for (var t = 0; n > t; t++)
3936                o.find("ul").append('<li><a href="#"><span></span></a></li>');
3937            o.css("margin-left", "-" + o.width() / 2 + "px"), o.find("li").first().find("a").addClass(g)
3938        }
3939        function un(e, n, o, t) {
3940            var i = "";
3941            s.anchors.length&&!s.lockAnchors && (e ? ("undefined" != typeof o && (i = o), "undefined" == typeof n && (n = e), On = n, pn(i + "/" + n)) : "undefined" != typeof e ? (On = n, pn(o)) : pn(o)), vn()
3942        }
3943        function pn(e) {
3944            if (s.recordHistory)
3945                location.hash = e;
3946            else if (In || Pn)
3947                n.history.replaceState(i, i, "#" + e);
3948            else {
3949                var o = n.location.href.split("#")[0];
3950                n.location.replace(o + "#" + e)
3951            }
3952        }
3953        function hn(e) {
3954            var n = e.data("anchor"), o = e.index();
3955            return "undefined" == typeof n && (n = o), n
3956        }
3957        function vn() {
3958            var n = e(b), o = n.find(D), t = hn(n), i = hn(o), l = (n.index(x), String(t));
3959            o.length && (l = l + "-" + i), l = l.replace("/", "-").replace("#", "");
3960            var a = new RegExp("\\b\\s?" + m + "-[^\\s]+\\b", "g");
3961            Fn[0].className = Fn[0].className.replace(a, ""), Fn.addClass(m + "-" + l)
3962        }
3963        function mn() {
3964            var e, t = o.createElement("p"), l = {
3965                webkitTransform: "-webkit-transform",
3966                OTransform: "-o-transform",
3967                msTransform: "-ms-transform",
3968                MozTransform: "-moz-transform",
3969                transform: "transform"
3970            };
3971            o.body.insertBefore(t, null);
3972            for (var a in l)
3973                t.style[a] !== i && (t.style[a] = "translate3d(1px,1px,1px)", e = n.getComputedStyle(t).getPropertyValue(l[a]));
3974            return o.body.removeChild(t), e !== i && e.length > 0 && "none" !== e
3975        }
3976        function gn() {
3977            o.addEventListener ? (o.removeEventListener("mousewheel", Se, !1), o.removeEventListener("wheel", Se, !1), o.removeEventListener("MozMousePixelScroll", Se, !1)) : o.detachEvent("onmousewheel", Se)
3978        }
3979        function Sn() {
3980            var e, t = "";
3981            n.addEventListener ? e = "addEventListener" : (e = "attachEvent", t = "on");
3982            var l = "onwheel"in o.createElement("div") ? "wheel": o.onmousewheel !== i ? "mousewheel": "DOMMouseScroll";
3983            "DOMMouseScroll" == l ? o[e](t + "MozMousePixelScroll", Se, !1) : o[e](t + l, Se, !1)
3984        }
3985        function wn() {
3986            if (In || Pn) {
3987                var n = xn();
3988                e(r).off("touchstart " + n.down).on("touchstart " + n.down, me), e(r).off("touchmove " + n.move).on("touchmove " + n.move, pe)
3989            }
3990        }
3991        function yn() {
3992            if (In || Pn) {
3993                var n = xn();
3994                e(r).off("touchstart " + n.down), e(r).off("touchmove " + n.move)
3995            }
3996        }
3997        function xn() {
3998            var e;
3999            return e = n.PointerEvent ? {
4000                down: "pointerdown",
4001                move: "pointermove"
4002            } : {
4003                down: "MSPointerDown",
4004                move: "MSPointerMove"
4005            }
4006        }
4007        function bn(e) {
4008            var n = [];
4009            return n.y = "undefined" != typeof e.pageY && (e.pageY || e.pageX) ? e.pageY : e.touches[0].pageY, n.x = "undefined" != typeof e.pageX && (e.pageY || e.pageX) ? e.pageX : e.touches[0].pageX, Pn && ve(e) && s.scrollBar && (n.y = e.touches[0].pageY, n.x = e.touches[0].pageX), n
4010        }
4011        function Tn(e, n) {
4012            Hn.setScrollingSpeed(0, "internal"), "undefined" != typeof n && (Yn=!0), Ne(e.closest(P), e), "undefined" != typeof n && (Yn=!1), Hn.setScrollingSpeed(_n.scrollingSpeed, "internal")
4013        }
4014        function Cn(e) {
4015            if (s.scrollBar)
4016                Vn.scrollTop(e);
4017            else if (s.css3) {
4018                var n = "translate3d(0px, -" + e + "px, 0px)";
4019                an(n, !1)
4020            } else 
4021                Vn.css("top", - e)
4022        }
4023        function kn(e) {
4024            return {
4025                "-webkit-transform": e,
4026                "-moz-transform": e,
4027                "-ms-transform": e,
4028                transform: e
4029            }
4030        }
4031        function An(e, n, o) {
4032            switch (n) {
4033            case"up":
4034                Kn[o].up = e;
4035                break;
4036            case"down":
4037                Kn[o].down = e;
4038                break;
4039            case"left":
4040                Kn[o].left = e;
4041                break;
4042            case"right":
4043                Kn[o].right = e;
4044                break;
4045            case"all":
4046                "m" == o ? Hn.setAllowScrolling(e) : Hn.setKeyboardScrolling(e)
4047            }
4048        }
4049        function Bn() {
4050            Cn(0), e(E + ", " + X + ", " + j).remove(), e(x).css({
4051                height: "",
4052                "background-color": "",
4053                padding: ""
4054            }), e(z).css({
4055                width: ""
4056            }), Vn.css({
4057                height: "",
4058                position: "",
4059                "-ms-touch-action": "",
4060                "touch-action": ""
4061            }), Rn.css({
4062                overflow: "",
4063                height: ""
4064            }), e("html").removeClass(v), e.each(Fn.get(0).className.split(/\s+/), function(e, n) {
4065                0 === n.indexOf(m) && Fn.removeClass(n)
4066            }), e(x + ", " + z).each(function() {
4067                s.scrollOverflowHandler.remove(e(this)), e(this).removeClass(Y + " " + g)
4068            }), Ge(Vn), Vn.find(A + ", " + W + ", " + P).each(function() {
4069                e(this).replaceWith(this.childNodes)
4070            }), Rn.scrollTop(0);
4071            var n = [y, O, V];
4072            e.each(n, function(n, o) {
4073                e("." + o).removeClass(o)
4074            })
4075        }
4076        function Mn(e, n, o) {
4077            s[e] = n, "internal" !== o && (_n[e] = n)
4078        }
4079        function Ln() {
4080            s.continuousVertical && (s.loopTop || s.loopBottom) && (s.continuousVertical=!1, En("warn", "Option `loopTop/loopBottom` is mutually exclusive with `continuousVertical`; `continuousVertical` disabled")), s.scrollBar && s.scrollOverflow && En("warn", "Option `scrollBar` is mutually exclusive with `scrollOverflow`. Sections with scrollOverflow might not work well in Firefox"), s.continuousVertical && s.scrollBar && (s.continuousVertical=!1, En("warn", "Option `scrollBar` is mutually exclusive with `continuousVertical`; `continuousVertical` disabled")), e.each(s.anchors, function(n, o) {
4081                (e("#" + o).length || e('[name="' + o + '"]').length) && En("error", "data-anchor tags can not have the same value as any `id` element on the site (or `name` element for IE).")
4082            })
4083        }
4084        function En(e, n) {
4085            console && console[e] && console[e]("fullPage: " + n)
4086        }
4087        var Rn = e("html, body"), Fn = e("body"), Hn = e.fn.fullpage;
4088        s = e.extend({
4089            menu: !1,
4090            anchors: [],
4091            lockAnchors: !1,
4092            navigation: !1,
4093            navigationPosition: "right",
4094            navigationTooltips: [],
4095            showActiveTooltip: !1,
4096            slidesNavigation: !1,
4097            slidesNavPosition: "bottom",
4098            scrollBar: !1,
4099            hybrid: !1,
4100            css3: !0,
4101            scrollingSpeed: 700,
4102            autoScrolling: !0,
4103            fitToSection: !0,
4104            fitToSectionDelay: 1e3,
4105            easing: "easeInOutCubic",
4106            easingcss3: "ease",
4107            loopBottom: !1,
4108            loopTop: !1,
4109            loopHorizontal: !0,
4110            continuousVertical: !1,
4111            normalScrollElements: null,
4112            scrollOverflow: !1,
4113            scrollOverflowHandler: l,
4114            touchSensitivity: 5,
4115            normalScrollElementTouchThreshold: 5,
4116            keyboardScrolling: !0,
4117            animateAnchor: !0,
4118            recordHistory: !0,
4119            controlArrows: !0,
4120            controlArrowColor: "#fff",
4121            verticalCentered: !0,
4122            resize: !1,
4123            sectionsColor: [],
4124            paddingTop: 0,
4125            paddingBottom: 0,
4126            fixedElements: null,
4127            responsive: 0,
4128            responsiveWidth: 0,
4129            responsiveHeight: 0,
4130            sectionSelector: w,
4131            slideSelector: q,
4132            afterLoad: null,
4133            onLeave: null,
4134            afterRender: null,
4135            afterResize: null,
4136            afterReBuild: null,
4137            afterSlideLoad: null,
4138            onSlideLeave: null
4139        }, s), Ln(), e.extend(e.easing, {
4140            easeInOutCubic: function(e, n, o, t, i) {
4141                return (n/=i / 2) < 1 ? t / 2 * n * n * n + o : t / 2 * ((n -= 2) * n * n + 2) + o
4142            }
4143        }), e.extend(e.easing, {
4144            easeInQuart: function(e, n, o, t, i) {
4145                return t * (n/=i) * n * n * n + o
4146            }
4147        }), Hn.setAutoScrolling = function(n, o) {
4148            Mn("autoScrolling", n, o);
4149            var t = e(b);
4150            s.autoScrolling&&!s.scrollBar ? (Rn.css({
4151                overflow: "hidden",
4152                height: "100%"
4153            }), Hn.setRecordHistory(_n.recordHistory, "internal"), Vn.css({
4154                "-ms-touch-action": "none",
4155                "touch-action": "none"
4156            }), t.length && Cn(t.position().top)) : (Rn.css({
4157                overflow: "visible",
4158                height: "initial"
4159            }), Hn.setRecordHistory(!1, "internal"), Vn.css({
4160                "-ms-touch-action": "",
4161                "touch-action": ""
4162            }), Cn(0), t.length && Rn.scrollTop(t.position().top))
4163        }, Hn.setRecordHistory = function(e, n) {
4164            Mn("recordHistory", e, n)
4165        }, Hn.setScrollingSpeed = function(e, n) {
4166            Mn("scrollingSpeed", e, n)
4167        }, Hn.setFitToSection = function(e, n) {
4168            Mn("fitToSection", e, n)
4169        }, Hn.setLockAnchors = function(e) {
4170            s.lockAnchors = e
4171        }, Hn.setMouseWheelScrolling = function(e) {
4172            e ? Sn() : gn()
4173        }, Hn.setAllowScrolling = function(n, o) {
4174            "undefined" != typeof o ? (o = o.replace(/ /g, "").split(","), e.each(o, function(e, o) {
4175                An(n, o, "m")
4176            })) : n ? (Hn.setMouseWheelScrolling(!0), wn()) : (Hn.setMouseWheelScrolling(!1), yn())
4177        }, Hn.setKeyboardScrolling = function(n, o) {
4178            "undefined" != typeof o ? (o = o.replace(/ /g, "").split(","), e.each(o, function(e, o) {
4179                An(n, o, "k")
4180            })) : s.keyboardScrolling = n
4181        }, Hn.moveSectionUp = function() {
4182            var n = e(b).prev(x);
4183            n.length ||!s.loopTop&&!s.continuousVertical || (n = e(x).last()), n.length && be(n, null, !0)
4184        }, Hn.moveSectionDown = function() {
4185            var n = e(b).next(x);
4186            n.length ||!s.loopBottom&&!s.continuousVertical || (n = e(x).first()), n.length && be(n, null, !1)
4187        }, Hn.silentMoveTo = function(e, n) {
4188            requestAnimFrame(function() {
4189                Hn.setScrollingSpeed(0, "internal")
4190            }), Hn.moveTo(e, n), requestAnimFrame(function() {
4191                Hn.setScrollingSpeed(_n.scrollingSpeed, "internal")
4192            })
4193        }, Hn.moveTo = function(e, n) {
4194            var o = rn(e);
4195            "undefined" != typeof n ? cn(e, n) : o.length > 0 && be(o)
4196        }, Hn.moveSlideRight = function(e) {
4197            we("next", e)
4198        }, Hn.moveSlideLeft = function(e) {
4199            we("prev", e)
4200        }, Hn.reBuild = function(n) {
4201            if (!Vn.hasClass(h)) {
4202                Yn=!0, requestAnimFrame(function() {
4203                    Yn=!0
4204                });
4205                var o = oe.outerWidth();
4206                Wn = oe.height(), s.resize && Je(Wn, o), e(x).each(function() {
4207                    var n = e(this).find(P), o = e(this).find(z);
4208                    s.verticalCentered && e(this).find(A).css("height", ln(e(this)) + "px"), e(this).css("height", Wn + "px"), s.scrollOverflow && (o.length ? o.each(function() {
4209                        on(e(this))
4210                    }) : on(e(this))), o.length > 1 && Ne(n, n.find(D))
4211                });
4212                var t = e(b), i = t.index(x);
4213                i && Hn.silentMoveTo(i + 1), Yn=!1, requestAnimFrame(function() {
4214                    Yn=!1
4215                }), e.isFunction(s.afterResize) && n && s.afterResize.call(Vn), e.isFunction(s.afterReBuild)&&!n && s.afterReBuild.call(Vn)
4216            }
4217        }, Hn.setResponsive = function(n) {
4218            var o = Fn.hasClass(u);
4219            n ? o || (Hn.setAutoScrolling(!1, "internal"), Hn.setFitToSection(!1, "internal"), e(E).hide(), Fn.addClass(u)) : o && (Hn.setAutoScrolling(_n.autoScrolling, "internal"), Hn.setFitToSection(_n.autoScrolling, "internal"), e(E).show(), Fn.removeClass(u))
4220        };
4221        var qn, On, zn, Dn=!1, In = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/), Pn = "ontouchstart"in n || navigator.msMaxTouchPoints > 0 || navigator.maxTouchPoints, Vn = e(this), Wn = oe.height(), Yn=!1, Un=!0, Xn=!0, Nn = [], Kn = {};
4222        Kn.m = {
4223            up: !0,
4224            down: !0,
4225            left: !0,
4226            right: !0
4227        }, Kn.k = e.extend(!0, {}, Kn.m);
4228        var jn, Qn, Gn, Jn, Zn, $n, _n = e.extend(!0, {}, s);
4229        e(this).length && (c(), f());
4230        var eo=!1, no = 0, oo = 0, to = 0, io = 0, lo = 0, ao = (new Date).getTime();
4231        n.requestAnimFrame = function() {
4232            return n.requestAnimationFrame || n.webkitRequestAnimationFrame || n.mozRequestAnimationFrame || n.oRequestAnimationFrame || n.msRequestAnimationFrame || function(e) {
4233                e()
4234            }
4235        }();
4236        var ro = 0, so = 0, co = Wn;
4237        Hn.destroy = function(n) {
4238            Hn.setAutoScrolling(!1, "internal"), Hn.setAllowScrolling(!1), Hn.setKeyboardScrolling(!1), Vn.addClass(h), clearTimeout(Gn), clearTimeout(Qn), clearTimeout(jn), clearTimeout(Jn), clearTimeout(Zn), oe.off("scroll", ce).off("hashchange", He).off("resize", Ke), te.off("click", E + " a").off("mouseenter", E + " li").off("mouseleave", E + " li").off("
4238click", N).off("mouseover", s.normalScrollElements).off("mouseout", s.normalScrollElements), e(x).off("click", j), clearTimeout(Gn), clearTimeout(Qn), n && Bn()
4239        }
4240    };
4241    var ie = {
4242        afterRender: function(e) {
4243            var n = e.find(I), o = e.find(c);
4244            n.length && (o = n.find(D)), o.mouseover()
4245        },
4246        create: function(e, n) {
4247            e.find(c).slimScroll({
4248                allowPageScroll: !0,
4249                height: n + "px",
4250                size: "10px",
4251                alwaysVisible: !0
4252            })
4253        },
4254        isScrolled: function(e, n) {
4255            return "top" === e?!n.scrollTop() : "bottom" === e ? n.scrollTop() + 1 + n.innerHeight() >= n[0].scrollHeight : void 0
4256        },
4257        scrollable: function(e) {
4258            return e.find(P).length ? e.find(D).find(c) : e.find(c)
4259        },
4260        scrollHeight: function(e) {
4261            return e.find(c).get(0).scrollHeight
4262        },
4263        remove: function(e) {
4264            e.find(c).children().first().unwrap().unwrap(), e.find(f).remove(), e.find(d).remove()
4265        },
4266        update: function(e, n) {
4267            e.find(c).css("height", n + "px").parent().css("height", n + "px")
4268        },
4269        wrapContent: function() {
4270            return '<div class="' + s + '"></div>'
4271        }
4272    };
4273    l = ie
4274});;
4275!function(t, e, i, n) {
4276    "use strict";
4277    function a(t) {
4278        return ("string" == typeof t || t instanceof String) && (t = t.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, "")), t
4279    }
4280    var s = function(e) {
4281        for (var i = e.length, n = t("head"); i--;)
4282            0 === n.has("." + e[i]).length && n.append('<meta class="' + e[i] + '" />')
4283    };
4284    s(["foundation-mq-small", "foundation-mq-small-only", "foundation-mq-medium", "foundation-mq-medium-only", "foundation-mq-large", "foundation-mq-large-only", "foundation-mq-xlarge", "foundation-mq-xlarge-only", "foundation-mq-xxlarge", "foundation-data-attribute-namespace"]), t(function() {
4285        "undefined" != typeof FastClick && "undefined" != typeof i.body && FastClick.attach(i.body)
4286    });
4287    var r = function(e, n) {
4288        if ("string" == typeof e) {
4289            if (n) {
4290                var a;
4291                if (n.jquery) {
4292                    if (a = n[0], !a)
4293                        return n
4294                } else 
4295                    a = n;
4296                return t(a.querySelectorAll(e))
4297            }
4298            return t(i.querySelectorAll(e))
4299        }
4300        return t(e, n)
4301    }, o = function(t) {
4302        var e = [];
4303        return t || e.push("data"), this.namespace.length > 0 && e.push(this.namespace), e.push(this.name), e.join("-")
4304    }, u = function(t) {
4305        for (var e = t.split("-"), i = e.length, n = []; i--;)
4306            0 !== i ? n.push(e[i]) : this.namespace.length > 0 ? n.push(this.namespace, e[i]) : n.push(e[i]);
4307        return n.reverse().join("-")
4308    }, l = function(e, i) {
4309        var n = this, a = function() {
4310            var a = r(this), s=!a.data(n.attr_name(!0) + "-init");
4311            a.data(n.attr_name(!0) + "-init", t.extend({}, n.settings, i || e, n.data_options(a))), s && n.events(this)
4312        };
4313        return r(this.scope).is("[" + this.attr_name() + "]") ? a.call(this.scope) : r("[" + this.attr_name() + "]", this.scope).each(a), "string" == typeof e ? this[e].call(this, i) : void 0
4314    }, c = function(t, e) {
4315        function i() {
4316            e(t[0])
4317        }
4318        function n() {
4319            if (this.one("load", i), /MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
4320                var t = this.attr("src"), e = t.match(/\?/) ? "&": "?";
4321                e += "random=" + (new Date).getTime(), this.attr("src", t + e)
4322            }
4323        }
4324        return t.attr("src") ? void(t[0].complete || 4 === t[0].readyState ? i() : n.call(t)) : void i()
4325    };
4326    e.matchMedia || (e.matchMedia = function() {
4327        var t = e.styleMedia || e.media;
4328        if (!t) {
4329            var n = i.createElement("style"), a = i.getElementsByTagName("script")[0], s = null;
4330            n.type = "text/css", n.id = "matchmediajs-test", a.parentNode.insertBefore(n, a), s = "getComputedStyle"in e && e.getComputedStyle(n, null) || n.currentStyle, t = {
4331                matchMedium: function(t) {
4332                    var e = "@media " + t + "{ #matchmediajs-test { width: 1px; } }";
4333                    return n.styleSheet ? n.styleSheet.cssText = e : n.textContent = e, "1px" === s.width
4334                }
4335            }
4336        }
4337        return function(e) {
4338            return {
4339                matches: t.matchMedium(e || "all"),
4340                media: e || "all"
4341            }
4342        }
4343    }()), function(t) {
4344        function i() {
4345            n && (r(i), u && t.fx.tick())
4346        }
4347        for (var n, a = 0, s = ["webkit", "moz"], r = e.requestAnimationFrame, o = e.cancelAnimationFrame, u = "undefined" != typeof t.fx; a < s.length&&!r; a++)
4348            r = e[s[a] + "RequestAnimationFrame"], o = o || e[s[a] + "CancelAnimationFrame"] || e[s[a] + "CancelRequestAnimationFrame"];
4349        r ? (e.requestAnimationFrame = r, e.cancelAnimationFrame = o, u && (t.fx.timer = function(e) {
4350            e() && t.timers.push(e)&&!n && (n=!0, i())
4351        }, t.fx.stop = function() {
4352            n=!1
4353        })) : (e.requestAnimationFrame = function(t) {
4354            var i = (new Date).getTime(), n = Math.max(0, 16 - (i - a)), s = e.setTimeout(function() {
4355                t(i + n)
4356            }, n);
4357            return a = i + n, s
4358        }, e.cancelAnimationFrame = function(t) {
4359            clearTimeout(t)
4360        })
4361    }(t), e.Foundation = {
4362        name: "Foundation",
4363        version: "5.5.2",
4364        media_queries: {
vendor: 21,145 bytes, lines 4365-4722
4365            small: r(".foundation-mq-small").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4366            "small-only": r(".foundation-mq-small-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4367            medium: r(".foundation-mq-medium").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4368            "medium-only": r(".foundation-mq-medium-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4369            large: r(".foundation-mq-large").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4370            "large-only": r(".foundation-mq-large-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4371            xlarge: r(".foundation-mq-xlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4372            "xlarge-only": r(".foundation-mq-xlarge-only").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ""),
4373            xxlarge: r(".foundation-mq-xxlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, "")
4374        },
4375        stylesheet: t("<style></style>").appendTo("head")[0].sheet,
4376        global: {
4377            namespace: n
4378        },
4379        init: function(t, i, n, a, s) {
4380            var o = [t, n, a, s], u = [];
4381            if (this.rtl = /rtl/i.test(r("html").attr("dir")), this.scope = t || this.scope, this.set_namespace(), i && "string" == typeof i&&!/reflow/i.test(i))
4382                this.libs.hasOwnProperty(i) && u.push(this.init_lib(i, o));
4383            else 
4384                for (var l in this.libs)
4385                    u.push(this.init_lib(l, i));
4386            return r(e).on('load', function () {
4387                r(e).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider")
4388            }), t
4389        },
4390        init_lib: function(e, i) {
4391            return this.libs.hasOwnProperty(e) ? (this.patch(this.libs[e]), i && i.hasOwnProperty(e) ? ("undefined" != typeof this.libs[e].settings ? t.extend(!0, this.libs[e].settings, i[e]) : "undefined" != typeof this.libs[e].defaults && t.extend(!0, this.libs[e].defaults, i[e]), this.libs[e].init.apply(this.libs[e], [this.scope, i[e]])) : (i = i instanceof Array ? i : new Array(i), this.libs[e].init.apply(this.libs[e], i))) : function() {}
4392        },
4393        patch: function(t) {
4394            t.scope = this.scope, t.namespace = this.global.namespace, t.rtl = this.rtl, t.data_options = this.utils.data_options, t.attr_name = o, t.add_namespace = u, t.bindings = l, t.S = this.utils.S
4395        },
4396        inherit: function(t, e) {
4397            for (var i = e.split(" "), n = i.length; n--;)
4398                this.utils.hasOwnProperty(i[n]) && (t[i[n]] = this.utils[i[n]])
4399        },
4400        set_namespace: function() {
4401            var e = this.global.namespace === n ? t(".foundation-data-attribute-namespace").css("font-family"): this.global.namespace;
4402            this.global.namespace = e === n || /false/i.test(e) ? "" : e
4403        },
4404        libs: {},
4405        utils: {
4406            S: r,
4407            throttle: function(t, e) {
4408                var i = null;
4409                return function() {
4410                    var n = this, a = arguments;
4411                    null == i && (i = setTimeout(function() {
4412                        t.apply(n, a), i = null
4413                    }, e))
4414                }
4415            },
4416            debounce: function(t, e, i) {
4417                var n, a;
4418                return function() {
4419                    var s = this, r = arguments, o = function() {
4420                        n = null, i || (a = t.apply(s, r))
4421                    }, u = i&&!n;
4422                    return clearTimeout(n), n = setTimeout(o, e), u && (a = t.apply(s, r)), a
4423                }
4424            },
4425            data_options: function(e, i) {
4426                function n(t) {
4427                    return !isNaN(t - 0) && null !== t && "" !== t && t!==!1 && t!==!0
4428                }
4429                function a(e) {
4430                    return "string" == typeof e ? t.trim(e) : e
4431                }
4432                i = i || "options";
4433                var s, r, o, u = {}, l = function(t) {
4434                    var e = Foundation.global.namespace;
4435                    return e.length > 0 ? t.data(e + "-" + i) : t.data(i)
4436                }, c = l(e);
4437                if ("object" == typeof c)
4438                    return c;
4439                for (o = (c || ":").split(";"), s = o.length; s--;)
4440                    r = o[s].split(":"), r = [r[0], r.slice(1).join(":")], /true/i.test(r[1]) && (r[1]=!0), /false/i.test(r[1]) && (r[1]=!1), n(r[1]) && ( - 1 === r[1].indexOf(".") ? r[1] = parseInt(r[1], 10) : r[1] = parseFloat(r[1])), 2 === r.length && r[0].length > 0 && (u[a(r[0])] = a(r[1]));
4441                return u
4442            },
4443            register_media: function(e, i) {
4444                Foundation.media_queries[e] === n && (t("head").append('<meta class="' + i + '"/>'), Foundation.media_queries[e] = a(t("." + i).css("font-family")))
4445            },
4446            add_custom_rule: function(t, e) {
4447                if (e === n && Foundation.stylesheet)
4448                    Foundation.stylesheet.insertRule(t, Foundation.stylesheet.cssRules.length);
4449                else {
4450                    var i = Foundation.media_queries[e];
4451                    i !== n && Foundation.stylesheet.insertRule("@media " + Foundation.media_queries[e] + "{ " + t + " }", Foundation.stylesheet.cssRules.length)
4452                }
4453            },
4454            image_loaded: function(t, e) {
4455                function i(t) {
4456                    for (var e = t.length, i = e - 1; i >= 0; i--)
4457                        if (t.attr("height") === n)
4458                            return !1;
4459                    return !0
4460                }
4461                var a = this, s = t.length;
4462                (0 === s || i(t)) && e(t), t.each(function() {
4463                    c(a.S(this), function() {
4464                        s -= 1, 0 === s && e(t)
4465                    })
4466                })
4467            },
4468            random_str: function() {
4469                return this.fidx || (this.fidx = 0), this.prefix = this.prefix || [this.name || "F", ( + new Date).toString(36)].join("-"), this.prefix + (this.fidx++).toString(36)
4470            },
4471            match: function(t) {
4472                return e.matchMedia(t).matches
4473            },
4474            is_small_up: function() {
4475                return this.match(Foundation.media_queries.small)
4476            },
4477            is_medium_up: function() {
4478                return this.match(Foundation.media_queries.medium)
4479            },
4480            is_large_up: function() {
4481                return this.match(Foundation.media_queries.large)
4482            },
4483            is_xlarge_up: function() {
4484                return this.match(Foundation.media_queries.xlarge)
4485            },
4486            is_xxlarge_up: function() {
4487                return this.match(Foundation.media_queries.xxlarge)
4488            },
4489            is_small_only: function() {
4490                return !(this.is_medium_up() || this.is_large_up() || this.is_xlarge_up() || this.is_xxlarge_up())
4491            },
4492            is_medium_only: function() {
4493                return this.is_medium_up()&&!this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()
4494            },
4495            is_large_only: function() {
4496                return this.is_medium_up() && this.is_large_up()&&!this.is_xlarge_up()&&!this.is_xxlarge_up()
4497            },
4498            is_xlarge_only: function() {
4499                return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up()&&!this.is_xxlarge_up()
4500            },
4501            is_xxlarge_only: function() {
4502                return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up()
4503            }
4504        }
4505    }, t.fn.foundation = function() {
4506        var t = Array.prototype.slice.call(arguments, 0);
4507        return this.each(function() {
4508            return Foundation.init.apply(Foundation, [this].concat(t)), this
4509        })
4510    }
4511}(jQuery, window, window.document);;
4512!function(t, n, i, e) {
4513    "use strict";
4514    Foundation.libs.alert = {
4515        name: "alert",
4516        version: "5.5.2",
4517        settings: {
4518            callback: function() {}
4519        },
4520        init: function(t, n, i) {
4521            this.bindings(n, i)
4522        },
4523        events: function() {
4524            var n = this, i = this.S;
4525            t(this.scope).off(".alert").on("click.fndtn.alert", "[" + this.attr_name() + "] .close", function(t) {
4526                var e = i(this).closest("[" + n.attr_name() + "]"), s = e.data(n.attr_name(!0) + "-init") || n.settings;
4527                t.preventDefault(), Modernizr.csstransitions ? (e.addClass("alert-close"), e.on("transitionend webkitTransitionEnd oTransitionEnd", function(t) {
4528                    i(this).trigger("close.fndtn.alert").remove(), s.callback()
4529                })) : e.fadeOut(300, function() {
4530                    i(this).trigger("close.fndtn.alert").remove(), s.callback()
4531                })
4532            })
4533        },
4534        reflow: function() {}
4535    }
4536}(jQuery, window, window.document);;
4537!function(e, t, a, s) {
4538    "use strict";
4539    Foundation.libs.offcanvas = {
4540        name: "offcanvas",
4541        version: "5.5.2",
4542        settings: {
4543            open_method: "move",
4544            close_on_click: !1
4545        },
4546        init: function(e, t, a) {
4547            this.bindings(t, a)
4548        },
4549        events: function() {
4550            var t = this, a = t.S, s = "", n = "", o = "";
4551            "move" === this.settings.open_method ? (s = "move-", n = "right", o = "left") : "overlap_single" === this.settings.open_method ? (s = "offcanvas-overlap-", n = "right", o = "left") : "overlap" === this.settings.open_method && (s = "offcanvas-overlap"), a(this.scope).off(".offcanvas").on("click.fndtn.offcanvas", ".left-off-canvas-toggle", function(o) {
4552                t.click_toggle_class(o, s + n), "overlap" !== t.settings.open_method && a(".left-submenu").removeClass(s + n), e(".left-off-canvas-toggle").attr("aria-expanded", "true")
4553            }).on("click.fndtn.offcanvas", ".left-off-canvas-menu a", function(o) {
4554                var i = t.get_settings(o), r = a(this).parent();
4555                !i.close_on_click || r.hasClass("has-submenu") || r.hasClass("back") ? a(this).parent().hasClass("has-submenu") ? (o.preventDefault(), a(this).siblings(".left-submenu").toggleClass(s + n)) : r.hasClass("back") && (o.preventDefault(), r.parent().removeClass(s + n)) : (t.hide.call(t, s + n, t.get_wrapper(o)), r.parent().removeClass(s + n)), e(".left-off-canvas-toggle").attr("aria-expanded", "true")
4556            }).on("click.fndtn.offcanvas", ".right-off-canvas-toggle", function(n) {
4557                t.click_toggle_class(n, s + o), "overlap" !== t.settings.open_method && a(".right-submenu").removeClass(s + o), e(".right-off-canvas-toggle").attr("aria-expanded", "true")
4558            }).on("click.fndtn.offcanvas", ".right-off-canvas-menu a", function(n) {
4559                var i = t.get_settings(n), r = a(this).parent();
4560                !i.close_on_click || r.hasClass("has-submenu") || r.hasClass("back") ? a(this).parent().hasClass("has-submenu") ? (n.preventDefault(), a(this).siblings(".right-submenu").toggleClass(s + o)) : r.hasClass("back") && (n.preventDefault(), r.parent().removeClass(s + o)) : (t.hide.call(t, s + o, t.get_wrapper(n)), r.parent().removeClass(s + o)), e(".right-off-canvas-toggle").attr("aria-expanded", "true")
4561            }).on("click.fndtn.offcanvas", ".exit-off-canvas", function(i) {
4562                t.click_remove_class(i, s + o), a(".right-submenu").removeClass(s + o), n && (t.click_remove_class(i, s + n), a(".left-submenu").removeClass(s + o)), e(".right-off-canvas-toggle").attr("aria-expanded", "true")
4563            }).on("click.fndtn.offcanvas", ".exit-off-canvas", function(a) {
4564                t.click_remove_class(a, s + o), e(".left-off-canvas-toggle").attr("aria-expanded", "false"), n && (t.click_remove_class(a, s + n), e(".right-off-canvas-toggle").attr("aria-expanded", "false"))
4565            })
4566        },
4567        toggle: function(e, t) {
4568            t = t || this.get_wrapper(), t.is("." + e) ? this.hide(e, t) : this.show(e, t)
4569        },
4570        show: function(e, t) {
4571            t = t || this.get_wrapper(), t.trigger("open.fndtn.offcanvas"), t.addClass(e)
4572        },
4573        hide: function(e, t) {
4574            t = t || this.get_wrapper(), t.trigger("close.fndtn.offcanvas"), t.removeClass(e)
4575        },
4576        click_toggle_class: function(e, t) {
4577            e.preventDefault();
4578            var a = this.get_wrapper(e);
4579            this.toggle(t, a)
4580        },
4581        click_remove_class: function(e, t) {
4582            e.preventDefault();
4583            var a = this.get_wrapper(e);
4584            this.hide(t, a)
4585        },
4586        get_settings: function(e) {
4587            var t = this.S(e.target).closest("[" + this.attr_name() + "]");
4588            return t.data(this.attr_name(!0) + "-init") || this.settings
4589        },
4590        get_wrapper: function(e) {
4591            var t = this.S(e ? e.target : this.scope).closest(".off-canvas-wrap");
4592            return 0 === t.length && (t = this.S(".off-canvas-wrap")), t
4593        },
4594        reflow: function() {}
4595    }
4596}(jQuery, window, window.document);;
4597!function(e, t, n, a) {
4598    "use strict";
4599    function s(e) {
4600        var t = /fade/i.test(e), n = /pop/i.test(e);
4601        return {
4602            animate: t || n,
4603            pop: n,
4604            fade: t
4605        }
4606    }
4607    Foundation.libs.reveal = {
4608        name: "reveal",
4609        version: "5.5.2",
4610        locked: !1,
4611        settings: {
4612            animation: "fadeAndPop",
4613            animation_speed: 250,
4614            close_on_background_click: !0,
4615            close_on_esc: !0,
4616            dismiss_modal_class: "close-reveal-modal",
4617            multiple_opened: !1,
4618            bg_class: "reveal-modal-bg",
4619            root_element: "body",
4620            open: function() {},
4621            opened: function() {},
4622            close: function() {},
4623            closed: function() {},
4624            on_ajax_error: e.noop,
4625            bg: e(".reveal-modal-bg"),
4626            css: {
4627                open: {
4628                    opacity: 0,
4629                    visibility: "visible",
4630                    display: "block"
4631                },
4632                close: {
4633                    opacity: 1,
4634                    visibility: "hidden",
4635                    display: "none"
4636                }
4637            }
4638        },
4639        init: function(t, n, a) {
4640            e.extend(!0, this.settings, n, a), this.bindings(n, a)
4641        },
4642        events: function(e) {
4643            var t = this, a = t.S;
4644            return a(this.scope).off(".reveal").on("click.fndtn.reveal", "[" + this.add_namespace("data-reveal-id") + "]:not([disabled])", function(e) {
4645                if (e.preventDefault(), !t.locked) {
4646                    var n = a(this), s = n.data(t.data_attr("reveal-ajax")), o = n.data(t.data_attr("reveal-replace-content"));
4647                    if (t.locked=!0, "undefined" == typeof s)
4648                        t.open.call(t, n);
4649                    else {
4650                        var i = s===!0 ? n.attr("href"): s;
4651                        t.open.call(t, n, {
4652                            url: i
4653                        }, {
4654                            replaceContentSel: o
4655                        })
4656                    }
4657                }
4658            }), a(n).on("click.fndtn.reveal", this.close_targets(), function(e) {
4659                if (e.preventDefault(), !t.locked) {
4660                    var n = a("[" + t.attr_name() + "].open").data(t.attr_name(!0) + "-init") || t.settings, s = a(e.target)[0] === a("." + n.bg_class)[0];
4661                    if (s) {
4662                        if (!n.close_on_background_click)
4663                            return;
4664                        e.stopPropagation()
4665                    }
4666                    t.locked=!0, t.close.call(t, s ? a("[" + t.attr_name() + "].open:not(.toback)") : a(this).closest("[" + t.attr_name() + "]"))
4667                }
4668            }), a("[" + t.attr_name() + "]", this.scope).length > 0 ? a(this.scope).on("open.fndtn.reveal", this.settings.open).on("opened.fndtn.reveal", this.settings.opened).on("opened.fndtn.reveal", this.open_video).on("close.fndtn.reveal", this.settings.close).on("closed.fndtn.reveal", this.settings.closed).on("closed.fndtn.reveal", this.close_video) : a(this.scope).on("open.fndtn.reveal", "[" + t.attr_name() + "]", this.settings.open).on("opened.fndtn.reveal", "[" + t.attr_name() + "]", this.settings.opened).on("opened.fndtn.reveal", "[" + t.attr_name() + "]", this.open_video).on("close.fndtn.reveal", "[" + t.attr_name() + "]", this.settings.close).on("closed.fndtn.reveal", "[" + t.attr_name() + "]", this.settings.closed).on("closed.fndtn.reveal", "[" + t.attr_name() + "]", this.close_video), !0
4669        },
4670        key_up_on: function(e) {
4671            var t = this;
4672            return t.S("body").off("keyup.fndtn.reveal").on("keyup.fndtn.reveal", function(e) {
4673                var n = t.S("[" + t.attr_name() + "].open"), a = n.data(t.attr_name(!0) + "-init") || t.settings;
4674                a && 27 === e.which && a.close_on_esc&&!t.locked && t.close.call(t, n)
4675            }), !0
4676        },
4677        key_up_off: function(e) {
4678            return this.S("body").off("keyup.fndtn.reveal"), !0
4679        },
4680        open: function(n, a) {
4681            var s, o = this;
4682            n ? "undefined" != typeof n.selector ? s = o.S("#" + n.data(o.data_attr("reveal-id"))).first() : (s = o.S(this.scope), a = n) : s = o.S(this.scope);
4683            var i = s.data(o.attr_name(!0) + "-init");
4684            if (i = i || this.settings, s.hasClass("open") && n.attr("data-reveal-id") == s.attr("id"))
4685                return o.close(s);
4686            if (!s.hasClass("open")) {
4687                var r = o.S("[" + o.attr_name() + "].open");
4688                if ("undefined" == typeof s.data("css-top") && s.data("css-top", parseInt(s.css("top"), 10)).data("offset", this.cache_offset(s)), s.attr("tabindex", "0").attr("aria-hidden", "false"), this.key_up_on(s), s.on("open.fndtn.reveal", function(e) {
4689                    "fndtn.reveal" !== e.namespace
4690                }), s.on("open.fndtn.reveal").trigger("open.fndtn.reveal"), r.length < 1 && this.toggle_bg(s, !0), "string" == typeof a && (a = {
4691                    url: a
4692                }), "undefined" != typeof a && a.url) {
4693                    var d = "undefined" != typeof a.success ? a.success: null;
4694                    e.extend(a, {
4695                        success: function(t, n, a) {
4696                            if (e.isFunction(d)) {
4697                                var l = d(t, n, a);
4698                                "string" == typeof l && (t = l)
4699                            }
4700                            "undefined" != typeof options && "undefined" != typeof options.replaceContentSel ? s.find(options.replaceContentSel).html(t) : s.html(t), o.S(s).foundation("section", "reflow"), o.S(s).children().foundation(), r.length > 0 && (i.multiple_opened ? o.to_back(r) : o.hide(r, i.css.close)), o.show(s, i.css.open)
4701                        }
4702                    }), i.on_ajax_error !== e.noop && e.extend(a, {
4703                        error: i.on_ajax_error
4704                    }), e.ajax(a)
4705                } else 
4706                    r.length > 0 && (i.multiple_opened ? o.to_back(r) : o.hide(r, i.css.close)), this.show(s, i.css.open)
4707            }
4708            o.S(t).trigger("resize")
4709        },
4710        close: function(t) {
4711            var t = t && t.length ? t: this.S(this.scope), n = this.S("[" + this.attr_name() + "].open"), a = t.data(this.attr_name(!0) + "-init") || this.settings, s = this;
4712            n.length > 0 && (t.removeAttr("tabindex", "0").attr("aria-hidden", "true"), this.locked=!0, this.key_up_off(t), t.trigger("close.fndtn.reveal"), (a.multiple_opened && 1 === n.length ||!a.multiple_opened || t.length > 1) && (s.toggle_bg(t, !1), s.to_front(t)), a.multiple_opened ? (s.hide(t, a.css.close, a), s.to_front(e(e.makeArray(n).reverse()[1]))) : s.hide(n, a.css.close, a))
4713        },
4714        close_targets: function() {
4715            var e = "." + this.settings.dismiss_modal_class;
4716            return this.settings.close_on_background_click ? e + ", ." + this.settings.bg_class : e
4717        },
4718        toggle_bg: function(t, n) {
4719            0 === this.S("." + this.settings.bg_class).length && (this.settings.bg = e("<div />", {
4720                "class": this.settings.bg_class
4721            }).appendTo("body").hide());
4722            var s = this.settings.bg.filter(":visible").length > 0;
4723            n != s && ((n == a ? s : !n) ? this.hide(this.settings.bg) : this.show(this.settings.bg))
4724        },
4725        show: function(n, a) {
4726            if (a) {
4727                var o = n.data(this.attr_name(!0) + "-init") || this.settings, i = o.root_element, r = this;
4728                if (0 === n.parent(i).length) {
4729                    var d = n.wrap('<div style="display: none;" />').parent();
4730                    n.on("closed.fndtn.reveal.wrapped", function() {
4731                        n.detach().appendTo(d), n.unwrap().unbind("closed.fndtn.reveal.wrapped")
4732                    }), n.detach().appendTo(i)
4733                }
4734                var l = s(o.animation);
4735                if (l.animate || (this.locked=!1), l.pop) {
4736                    a.top = e(t).scrollTop() - n.data("offset") + "px";
4737                    var c = {
4738                        top: e(t).scrollTop() + n.data("css-top") + "px",
4739                        opacity: 1
4740                    };
4741                    return setTimeout(function() {
4742                        return n.css(a).animate(c, o.animation_speed, "linear", function() {
4743                            r.locked=!1, n.trigger("opened.fndtn.reveal")
4744                        }).addClass("open")
4745                    }, o.animation_speed / 2)
4746                }
4747                if (l.fade) {
4748                    a.top = e(t).scrollTop() + n.data("css-top") + "px";
4749                    var c = {
4750                        opacity: 1
4751                    };
4752                    return setTimeout(function() {
4753                        return n.css(a).animate(c, o.animation_speed, "linear", function() {
4754                            r.locked=!1, n.trigger("opened.fndtn.reveal")
4755                        }).addClass("open")
4756                    }, o.animation_speed / 2)
4757                }
4758                return n.css(a).show().css({
4759                    opacity: 1
4760                }).addClass("open").trigger("opened.fndtn.reveal")
4761            }
4762            var o = this.settings;
4763            return s(o.animation).fade ? n.fadeIn(o.animation_speed / 2) : (this.locked=!1, n.show())
4764        },
4765        to_back: function(e) {
4766            e.addClass("toback")
4767        },
4768        to_front: function(e) {
4769            e.removeClass("toback")
4770        },
4771        hide: function(n, a) {
4772            if (a) {
4773                var o = n.data(this.attr_name(!0) + "-init"), i = this;
4774                o = o || this.settings;
4775                var r = s(o.animation);
4776                if (r.animate || (this.locked=!1), r.pop) {
4777                    var d = {
4778                        top: - e(t).scrollTop() - n.data("offset") + "px",
4779                        opacity: 0
4780                    };
4781                    return setTimeout(function() {
4782                        return n.animate(d, o.animation_speed, "linear", function() {
4783                            i.locked=!1, n.css(a).trigger("closed.fndtn.reveal")
4784                        }).removeClass("open")
4785                    }, o.animation_speed / 2)
4786                }
4787                if (r.fade) {
4788                    var d = {
4789                        opacity: 0
4790                    };
4791                    return setTimeout(function() {
4792                        return n.animate(d, o.animation_speed, "linear", function() {
4793                            i.locked=!1, n.css(a).trigger("closed.fndtn.reveal")
4794                        }).removeClass("open")
4795                    }, o.animation_speed / 2)
4796                }
4797                return n.hide().css(a).removeClass("open").trigger("closed.fndtn.reveal")
4798            }
4799            var o = this.settings;
4800            return s(o.animation).fade ? n.fadeOut(o.animation_speed / 2) : n.hide()
4801        },
4802        close_video: function(t) {
4803            var n = e(".flex-video", t.target), a = e("iframe", n);
4804            a.length > 0 && (a.attr("data-src", a[0].src), a.attr("src", a.attr("src")), n.hide())
4805        },
4806        open_video: function(t) {
4807            var n = e(".flex-video", t.target), s = n.find("iframe");
4808            if (s.length > 0) {
4809                var o = s.attr("data-src");
4810                if ("string" == typeof o)
4811                    s[0].src = s.attr("data-src");
4812                else {
4813                    var i = s[0].src;
4814                    s[0].src = a, s[0].src = i
4815                }
4816                n.show()
4817            }
4818        },
4819        data_attr: function(e) {
4820            return this.namespace.length > 0 ? this.namespace + "-" + e : e
4821        },
4822        cache_offset: function(e) {
4823            var t = e.show().height() + parseInt(e.css("top"), 10) + e.scrollY;
4824            return e.hide(), t
4825        },
4826        off: function() {
4827            e(this.scope).off(".fndtn.reveal")
4828        },
4829        reflow: function() {}
4830    }
4831}(jQuery, window, window.document);;
4832!function(t, s, a) {
4833    function e(s, a) {
4834        this.element = s, this.$element = t(s), this.tabs = [], this.state = "", this.rotateInterval = 0, this.$queue = t({}), this.options = t.extend({}, o, a), this.init()
4835    }
4836    var o = {
4837        active: null,
4838        event: "click",
4839        disabled: [],
4840        collapsible: "accordion",
4841        startCollapsed: !1,
4842        rotate: !1,
4843        setHash: !1,
4844        animation: "default",
4845        animationQueue: !1,
4846        duration: 500,
4847        scrollToAccordion: !1,
4848        scrollToAccordionOnLoad: !0,
4849        scrollToAccordionOffset: 0,
4850        accordionTabElement: "<div></div>",
4851        activate: function() {},
4852        deactivate: function() {},
4853        load: function() {},
4854        activateState: function() {},
4855        classes: {
4856            stateDefault: "r-tabs-state-default",
4857            stateActive: "r-tabs-state-active",
4858            stateDisabled: "r-tabs-state-disabled",
4859            stateExcluded: "r-tabs-state-excluded",
4860            container: "r-tabs",
4861            ul: "r-tabs-nav",
4862            tab: "r-tabs-tab",
4863            anchor: "r-tabs-anchor",
4864            panel: "r-tabs-panel",
4865            accordionTitle: "r-tabs-accordion-title"
4866        }
4867    };
4868    e.prototype.init = function() {
4869        var a = this;
4870        this.tabs = this._loadElements(), this._loadClasses(), this._loadEvents(), t(s).on("resize", function(t) {
4871            a._setState(t)
4872        }), t(s).on("hashchange", function(t) {
4873            var e = a._getTabRefBySelector(s.location.hash), o = a._getTab(e);
4874            e >= 0&&!o._ignoreHashChange&&!o.disabled && a._openTab(t, a._getTab(e), !0)
4875        }), this.options.rotate!==!1 && this.startRotation(), this.$element.bind("tabs-activate", function(t, s) {
4876            a.options.activate.call(this, t, s)
4877        }), this.$element.bind("tabs-deactivate", function(t, s) {
4878            a.options.deactivate.call(this, t, s)
4879        }), this.$element.bind("tabs-activate-state", function(t, s) {
4880            a.options.activateState.call(this, t, s)
4881        }), this.$element.bind("tabs-load", function(t) {
4882            var s;
4883            a._setState(t), a.options.startCollapsed===!0 || "accordion" === a.options.startCollapsed && "accordion" === a.state || (s = a._getStartTab(), a._openTab(t, s), a.options.load.call(this, t, s))
4884        }), this.$element.trigger("tabs-load")
4885    }, e.prototype._loadElements = function() {
4886        var s = this, a = this.$element.children("ul"), e = [], o = 0;
4887        return this.$element.addClass(s.options.classes.container), a.addClass(s.options.classes.ul), t("li", a).each(function() {
4888            var a, i, n, l, r, c = t(this), p = c.hasClass(s.options.classes.stateExcluded);
4889            if (!p) {
4890                a = t("a", c), r = a.attr("href"), i = t(r), n = t(s.options.accordionTabElement).insertBefore(i), l = t("<a></a>").attr("href", r).html(a.html()).appendTo(n);
4891                var h = {
4892                    _ignoreHashChange: !1,
4893                    id: o,
4894                    disabled: - 1 !== t.inArray(o, s.options.disabled),
4895                    tab: t(this),
4896                    anchor: t("a", c),
4897                    panel: i,
4898                    selector: r,
4899                    accordionTab: n,
4900                    accordionAnchor: l,
4901                    active: !1
4902                };
4903                o++, e.push(h)
4904            }
4905        }), e
4906    }, e.prototype._loadClasses = function() {
4907        for (var t = 0; t < this.tabs.length; t++)
4908            this.tabs[t].tab.addClass(this.options.classes.stateDefault).addClass(this.options.classes.tab), this.tabs[t].anchor.addClass(this.options.classes.anchor), this.tabs[t].panel.addClass(this.options.classes.stateDefault).addClass(this.options.classes.panel), this.tabs[t].accordionTab.addClass(this.options.classes.accordionTitle), this.tabs[t].accordionAnchor.addClass(this.options.classes.anchor), this.tabs[t].disabled && (this.tabs[t].tab.removeClass(this.options.classes.stateDefault).addClass(this.options.classes.stateDisabled), this.tabs[t].accordionTab.removeClass(this.options.classes.stateDefault).addClass(this.options.classes.stateDisabled))
4909    }, e.prototype._loadEvents = function() {
4910        for (var t = this, a = function(a) {
4911            var e = t._getCurrentTab(), o = a.data.tab;
4912            a.preventDefault(), o.disabled || (t.options.setHash && (history.pushState ? history.pushState(null, null, o.selector) : s.location.hash = o.selector), a.data.tab._ignoreHashChange=!0, (e !== o || t._isCollapisble()) && (t._closeTab(a, e), e === o && t._isCollapisble() || t._openTab(a, o, !1, !0)))
4913        }, e = 0; e < this.tabs.length; e++)
4914            this.tabs[e].anchor.on(t.options.event, {
4915                tab: t.tabs[e]
4916            }, a), this.tabs[e].accordionAnchor.on(t.options.event, {
4917                tab: t.tabs[e]
4918            }, a)
4919    }, e.prototype._getStartTab = function() {
4920        var t, a = this._getTabRefBySelector(s.location.hash);
4921        return t = a >= 0&&!this._getTab(a).disabled ? this._getTab(a) : this.options.active > 0&&!this._getTab(this.options.active).disabled ? this._getTab(this.options.active) : this._getTab(0)
4922    }, e.prototype._setState = function(s) {
4923        var e, o = t("ul", this.$element).first(), i = this.state, n = "string" == typeof this.options.startCollapsed;
4924        o.is(":visible") ? this.state = "tabs" : this.state = "accordion", this.state !== i && (this.$element.trigger("tabs-activate-state", {
4925            oldState: i,
4926            newState: this.state
4927        }), i && n && this.options.startCollapsed !== this.state && this._getCurrentTab() === a && (e = this._getStartTab(s), this._openTab(s, e)))
4928    }, e.prototype._openTab = function(s, a, e, o) {
4929        var i, n = this;
4930        e && this._closeTab(s, this._getCurrentTab()), o && this.rotateInterval > 0 && this.stopRotation(), a.active=!0, a.tab.removeClass(n.options.classes.stateDefault).addClass(n.options.classes.stateActive), a.accordionTab.removeClass(n.options.classes.stateDefault).addClass(n.options.classes.stateActive), n._doTransition(a.panel, n.options.animation, "open", function() {
4931            var e = "tabs-load" !== s.type || n.options.scrollToAccordionOnLoad;
4932            a.panel.removeClass(n.options.classes.stateDefault).addClass(n.options.classes.stateActive), "accordion" !== n.getState() ||!n.options.scrollToAccordion || n._isInView(a.accordionTab) && "default" === n.options.animation ||!e || (i = a.accordionTab.offset().top - n.options.scrollToAccordionOffset, "default" !== n.options.animation && n.options.duration > 0 ? t("html, body").animate({
4933                scrollTop: i
4934            }, n.options.duration) : t("html, body").scrollTop(i))
4935        }), this.$element.trigger("tabs-activate", a)
4936    }, e.prototype._closeTab = function(t, s) {
4937        var e, o = this, i = "string" == typeof o.options.animationQueue;
4938        s !== a && (e = i && o.getState() === o.options.animationQueue?!0 : i?!1 : o.options.animationQueue, s.active=!1, s.tab.removeClass(o.options.classes.stateActive).addClass(o.options.classes.stateDefault), o._doTransition(s.panel, o.options.animation, "close", function() {
4939            s.accordionTab.removeClass(o.options.classes.stateActive).addClass(o.options.classes.stateDefault), s.panel.removeClass(o.options.classes.stateActive).addClass(o.options.classes.stateDefault)
4940        }, !e), this.$element.trigger("tabs-deactivate", s))
4941    }, e.prototype._doTransition = function(t, s, a, e, o) {
4942        var i, n = this;
4943        switch (s) {
4944        case"slide":
4945            i = "open" === a ? "slideDown" : "slideUp";
4946            break;
4947        case"fade":
4948            i = "open" === a ? "fadeIn" : "fadeOut";
4949            break;
4950        default:
4951            i = "open" === a ? "show" : "hide", n.options.duration = 0
4952        }
4953        this.$queue.queue("responsive-tabs", function(o) {
4954            t[i]({
4955                duration: n.options.duration,
4956                complete: function() {
4957                    e.call(t, s, a), o()
4958                }
4959            })
4960        }), ("open" === a || o) && this.$queue.dequeue("responsive-tabs")
4961    }, e.prototype._isCollapisble = function() {
4962        return "boolean" == typeof this.options.collapsible && this.options.collapsible || "string" == typeof this.options.collapsible && this.options.collapsible === this.get
4962State()
4963    }, e.prototype._getTab = function(t) {
4964        return this.tabs[t]
4965    }, e.prototype._getTabRefBySelector = function(t) {
4966        for (var s = 0; s < this.tabs.length; s++)
4967            if (this.tabs[s].selector === t)
4968                return s;
4969        return - 1
4970    }, e.prototype._getCurrentTab = function() {
4971        return this._getTab(this._getCurrentTabRef())
4972    }, e.prototype._getNextTabRef = function(t) {
4973        var s = t || this._getCurrentTabRef(), a = s === this.tabs.length - 1 ? 0: s + 1;
4974        return this._getTab(a).disabled ? this._getNextTabRef(a) : a
4975    }, e.prototype._getPreviousTabRef = function() {
4976        return 0 === this._getCurrentTabRef() ? this.tabs.length - 1 : this._getCurrentTabRef() - 1
4977    }, e.prototype._getCurrentTabRef = function() {
4978        for (var t = 0; t < this.tabs.length; t++)
4979            if (this.tabs[t].active)
4980                return t;
4981        return - 1
4982    }, e.prototype._isInView = function(a) {
4983        var e = t(s).scrollTop(), o = e + t(s).height(), i = a.offset().top, n = i + a.height();
4984        return o >= n && i >= e
4985    }, e.prototype.activate = function(t, s) {
4986        var a = jQuery.Event("tabs-activate"), e = this._getTab(t);
4987        e.disabled || this._openTab(a, e, !0, s ||!0)
4988    }, e.prototype.deactivate = function(t) {
4989        var s = jQuery.Event("tabs-dectivate"), a = this._getTab(t);
4990        a.disabled || this._closeTab(s, a)
4991    }, e.prototype.enable = function(t) {
4992        var s = this._getTab(t);
4993        s && (s.disabled=!1, s.tab.addClass(this.options.classes.stateDefault).removeClass(this.options.classes.stateDisabled), s.accordionTab.addClass(this.options.classes.stateDefault).removeClass(this.options.classes.stateDisabled))
4994    }, e.prototype.disable = function(t) {
4995        var s = this._getTab(t);
4996        s && (s.disabled=!0, s.tab.removeClass(this.options.classes.stateDefault).addClass(this.options.classes.stateDisabled), s.accordionTab.removeClass(this.options.classes.stateDefault).addClass(this.options.classes.stateDisabled))
4997    }, e.prototype.getState = function() {
4998        return this.state
4999    }, e.prototype.startRotation = function(s) {
5000        var a = this;
5001        if (!(this.tabs.length > this.options.disabled.length))
5002            throw new Error("Rotation is not possible if all tabs are disabled");
5003        this.rotateInterval = setInterval(function() {
5004            var t = jQuery.Event("rotate");
5005            a._openTab(t, a._getTab(a._getNextTabRef()), !0)
5006        }, s || (t.isNumeric(a.options.rotate) ? a.options.rotate : 4e3))
5007    }, e.prototype.stopRotation = function() {
5008        s.clearInterval(this.rotateInterval), this.rotateInterval = 0
5009    }, e.prototype.option = function(t, s) {
5010        return s && (this.options[t] = s), this.options[t]
5011    }, t.fn.responsiveTabs = function(s) {
5012        var o, i = arguments;
5013        return s === a || "object" == typeof s ? this.each(function() {
5014            t.data(this, "responsivetabs") || t.data(this, "responsivetabs", new e(this, s))
5015        }) : "string" == typeof s && "_" !== s[0] && "init" !== s ? (o = t.data(this[0], "responsivetabs"), "destroy" === s && t.data(this, "responsivetabs", null), o instanceof e && "function" == typeof o[s] ? o[s].apply(o, Array.prototype.slice.call(i, 1)) : this) : void 0
5016    }
5017}(jQuery, window);;
5018!function(e) {
5019    "function" == typeof define && define.amd ? define(["jquery"], e) : e("object" == typeof exports ? require("jquery") : window.jQuery || window.Zepto)
5020}(function(e) {
5021    var t, n, i, o, r, a, s = "Close", l = "BeforeClose", c = "AfterClose", d = "BeforeAppend", u = "MarkupParse", p = "Open", f = "Change", m = "mfp", g = "." + m, v = "mfp-ready", h = "mfp-removing", y = "mfp-prevent-close", C = function() {}, w=!!window.jQuery, b = e(window), I = function(e, n) {
5022        t.ev.on(m + e + g, n)
5023    }, x = function(t, n, i, o) {
5024        var r = document.createElement("div");
5025        return r.className = "mfp-" + t, i && (r.innerHTML = i), o ? n && n.appendChild(r) : (r = e(r), n && r.appendTo(n)), r
5026    }, k = function(n, i) {
5027        t.ev.triggerHandler(m + n, i), t.st.callbacks && (n = n.charAt(0).toLowerCase() + n.slice(1), t.st.callbacks[n] && t.st.callbacks[n].apply(t, e.isArray(i) ? i : [i]))
5028    }, T = function(n) {
5029        return n === a && t.currTemplate.closeBtn || (t.currTemplate.closeBtn = e(t.st.closeMarkup.replace("%title%", t.st.tClose)), a = n), t.currTemplate.closeBtn
5030    }, _ = function() {
5031        e.magnificPopup.instance || (t = new C, t.init(), e.magnificPopup.instance = t)
5032    }, P = function() {
5033        var e = document.createElement("p").style, t = ["ms", "O", "Moz", "Webkit"];
5034        if (void 0 !== e.transition)
5035            return !0;
5036        for (; t.length;)
5037            if (t.pop() + "Transition"in e)
5038                return !0;
5039        return !1
5040    };
5041    C.prototype = {
5042        constructor: C,
5043        init: function() {
5044            var n = navigator.appVersion;
5045            t.isLowIE = t.isIE8 = document.all&&!document.addEventListener, t.isAndroid = /android/gi.test(n), t.isIOS = /iphone|ipad|ipod/gi.test(n), t.supportsTransition = P(), t.probablyMobile = t.isAndroid || t.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent), i = e(document), t.popupsCache = {}
5046        },
5047        open: function(n) {
5048            var o;
5049            if (n.isObj===!1) {
5050                t.items = n.items.toArray(), t.index = 0;
5051                var a, s = n.items;
5052                for (o = 0; o < s.length; o++)
5053                    if (a = s[o], a.parsed && (a = a.el[0]), a === n.el[0]) {
5054                        t.index = o;
5055                        break
5056                    }
5057            } else 
5058                t.items = e.isArray(n.items) ? n.items : [n.items], t.index = n.index || 0;
5059            if (t.isOpen)
5060                return void t.updateItemHTML();
5061            t.types = [], r = "", n.mainEl && n.mainEl.length ? t.ev = n.mainEl.eq(0) : t.ev = i, n.key ? (t.popupsCache[n.key] || (t.popupsCache[n.key] = {}), t.currTemplate = t.popupsCache[n.key]) : t.currTemplate = {}, t.st = e.extend(!0, {}, e.magnificPopup.defaults, n), t.fixedContentPos = "auto" === t.st.fixedContentPos?!t.probablyMobile : t.st.fixedContentPos, t.st.modal && (t.st.closeOnContentClick=!1, t.st.closeOnBgClick=!1, t.st.showCloseBtn=!1, t.st.enableEscapeKey=!1), t.bgOverlay || (t.bgOverlay = x("bg").on("click" + g, function() {
5062                t.close()
5063            }), t.wrap = x("wrap").attr("tabindex", - 1).on("click" + g, function(e) {
5064                t._checkIfClose(e.target) && t.close()
5065            }), t.container = x("container", t.wrap)), t.contentContainer = x("content"), t.st.preloader && (t.preloader = x("preloader", t.container, t.st.tLoading));
5066            var l = e.magnificPopup.modules;
5067            for (o = 0; o < l.length; o++) {
5068                var c = l[o];
5069                c = c.charAt(0).toUpperCase() + c.slice(1), t["init" + c].call(t)
5070            }
5071            k("BeforeOpen"), t.st.showCloseBtn && (t.st.closeBtnInside ? (I(u, function(e, t, n, i) {
5072                n.close_replaceWith = T(i.type)
5073            }), r += " mfp-close-btn-in") : t.wrap.append(T())), t.st.alignTop && (r += " mfp-align-top"), t.fixedContentPos ? t.wrap.css({
5074                overflow: t.st.overflowY,
5075                overflowX: "hidden",
5076                overflowY: t.st.overflowY
5077            }) : t.wrap.css({
5078                top: b.scrollTop(),
5079                position: "absolute"
5080            }), (t.st.fixedBgPos===!1 || "auto" === t.st.fixedBgPos&&!t.fixedContentPos) && t.bgOverlay.css({
5081                height: i.height(),
5082                position: "absolute"
5083            }), t.st.enableEscapeKey && i.on("keyup" + g, function(e) {
5084                27 === e.keyCode && t.close()
5085            }), b.on("resize" + g, function() {
5086                t.updateSize()
5087            }), t.st.closeOnContentClick || (r += " mfp-auto-cursor"), r && t.wrap.addClass(r);
5088            var d = t.wH = b.height(), f = {};
5089            if (t.fixedContentPos && t._hasScrollBar(d)) {
5090                var m = t._getScrollbarSize();
5091                m && (f.marginRight = m)
5092            }
5093            t.fixedContentPos && (t.isIE7 ? e("body, html").css("overflow", "hidden") : f.overflow = "hidden");
5094            var h = t.st.mainClass;
5095            return t.isIE7 && (h += " mfp-ie7"), h && t._addClassToMFP(h), t.updateItemHTML(), k("BuildControls"), e("html").css(f), t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo || e(document.body)), t._lastFocusedEl = document.activeElement, setTimeout(function() {
5096                t.content ? (t._addClassToMFP(v), t._setFocus()) : t.bgOverlay.addClass(v), i.on("focusin" + g, t._onFocusIn)
5097            }, 16), t.isOpen=!0, t.updateSize(d), k(p), n
5098        },
5099        close: function() {
5100            t.isOpen && (k(l), t.isOpen=!1, t.st.removalDelay&&!t.isLowIE && t.supportsTransition ? (t._addClassToMFP(h), setTimeout(function() {
5101                t._close()
5102            }, t.st.removalDelay)) : t._close())
5103        },
5104        _close: function() {
5105            k(s);
5106            var n = h + " " + v + " ";
5107            if (t.bgOverlay.detach(), t.wrap.detach(), t.container.empty(), t.st.mainClass && (n += t.st.mainClass + " "), t._removeClassFromMFP(n), t.fixedContentPos) {
5108                var o = {
5109                    marginRight: ""
5110                };
5111                t.isIE7 ? e("body, html").css("overflow", "") : o.overflow = "", e("html").css(o)
5112            }
5113            i.off("keyup" + g + " focusin" + g), t.ev.off(g), t.wrap.attr("class", "mfp-wrap").removeAttr("style"), t.bgOverlay.attr("class", "mfp-bg"), t.container.attr("class", "mfp-container"), !t.st.showCloseBtn || t.st.closeBtnInside && t.currTemplate[t.currItem.type]!==!0 || t.currTemplate.closeBtn && t.currTemplate.closeBtn.detach(), t.st.autoFocusLast && t._lastFocusedEl && e(t._lastFocusedEl).focus(), t.currItem = null, t.content = null, t.currTemplate = null, t.prevHeight = 0, k(c)
5114        },
5115        updateSize: function(e) {
5116            if (t.isIOS) {
5117                var n = document.documentElement.clientWidth / window.innerWidth, i = window.innerHeight * n;
5118                t.wrap.css("height", i), t.wH = i
5119            } else 
5120                t.wH = e || b.height();
5121            t.fixedContentPos || t.wrap.css("height", t.wH), k("Resize")
5122        },
5123        updateItemHTML: function() {
5124            var n = t.items[t.index];
5125            t.contentContainer.detach(), t.content && t.content.detach(), n.parsed || (n = t.parseEl(t.index));
5126            var i = n.type;
5127            if (k("BeforeChange", [t.currItem ? t.currItem.type: "", i]), t.currItem = n, !t.currTemplate[i]) {
5128                var r = t.st[i] ? t.st[i].markup: !1;
5129                k("FirstMarkupParse", r), r ? t.currTemplate[i] = e(r) : t.currTemplate[i]=!0
5130            }
5131            o && o !== n.type && t.container.removeClass("mfp-" + o + "-holder");
5132            var a = t["get" + i.charAt(0).toUpperCase() + i.slice(1)](n, t.currTemplate[i]);
5133            t.appendContent(a, i), n.preloaded=!0, k(f, n), o = n.type, t.container.prepend(t.contentContainer), k("AfterChange")
5134        },
5135        appendContent: function(e, n) {
5136            t.content = e, e ? t.st.showCloseBtn && t.st.closeBtnInside && t.currTemplate[n]===!0 ? t.content.find(".mfp-close").length || t.content.append(T()) : t.content = e : t.content = "", k(d), t.container.addClass("mfp-" + n + "-holder"), t.contentContainer.append(t.content)
5137        },
5138        parseEl: function(n) {
5139            var i, o = t.items[n];
5140            if (o.tagName ? o = {
5141                el: e(o)
5142            } : (i = o.type, o = {
5143                data: o,
5144                src: o.src
5145            }), o.el) {
5146                for (var r = t.types, a = 0; a < r.length; a++)
5147                    if (o.el.hasClass("mfp-" + r[a])) {
5148                        i = r[a];
5149                        break
5150                    }
5151                o.src = o.el.attr("data-mfp-src"), o.src || (o.src = o.el.attr("href"))
5152            }
5153            return o.type = i || t.st.type || "inline", o.index = n, o.parsed=!0, t.items[n] = o, k("ElementParse", o), t.items[n]
5154        },
5155        addGroup: function(e, n) {
5156            var i = function(i) {
5157                i.mfpEl = this, t._openClick(i, e, n)
5158            };
5159            n || (n = {});
5160            var o = "click.magnificPopup";
5161            n.mainEl = e, n.items ? (n.isObj=!0, e.off(o).on(o, i)) : (n.isObj=!1, n.delegate ? e.off(o).on(o, n.delegate, i) : (n.items = e, e.off(o).on(o, i)))
5162        },
5163        _openClick: function(n, i, o) {
5164            var r = void 0 !== o.midClick ? o.midClick : e.magnificPopup.defaults.midClick;
5165            if (r ||!(2 === n.which || n.ctrlKey || n.metaKey || n.altKey || n.shiftKey)) {
5166                var a = void 0 !== o.disableOn ? o.disableOn : e.magnificPopup.defaults.disableOn;
5167                if (a)
5168                    if (e.isFunction(a)) {
5169                        if (!a.call(t))
5170                            return !0
5171                    } else if (b.width() < a)
5172                        return !0;
5173                n.type && (n.preventDefault(), t.isOpen && n.stopPropagation()), o.el = e(n.mfpEl), o.delegate && (o.items = i.find(o.delegate)), t.open(o)
5174            }
5175        },
5176        updateStatus: function(e, i) {
5177            if (t.preloader) {
5178                n !== e && t.container.removeClass("mfp-s-" + n), i || "loading" !== e || (i = t.st.tLoading);
5179                var o = {
5180                    status: e,
5181                    text: i
5182                };
5183                k("UpdateStatus", o), e = o.status, i = o.text, t.preloader.html(i), t.preloader.find("a").on("click", function(e) {
5184                    e.stopImmediatePropagation()
5185                }), t.container.addClass("mfp-s-" + e), n = e
5186            }
5187        },
5188        _checkIfClose: function(n) {
5189            if (!e(n).hasClass(y)) {
5190                var i = t.st.closeOnContentClick, o = t.st.closeOnBgClick;
5191                if (i && o)
5192                    return !0;
5193                if (!t.content || e(n).hasClass("mfp-close") || t.preloader && n === t.preloader[0])
5194                    return !0;
5195                if (n === t.content[0] || e.contains(t.content[0], n)) {
5196                    if (i)
5197                        return !0
5198                } else if (o && e.contains(document, n))
5199                    return !0;
5200                return !1
5201            }
5202        },
5203        _addClassToMFP: function(e) {
5204            t.bgOverlay.addClass(e), t.wrap.addClass(e)
5205        },
5206        _removeClassFromMFP: function(e) {
5207            this.bgOverlay.removeClass(e), t.wrap.removeClass(e)
5208        },
5209        _hasScrollBar: function(e) {
5210            return (t.isIE7 ? i.height() : document.body.scrollHeight) > (e || b.height())
5211        },
5212        _setFocus: function() {
5213            (t.st.focus ? t.content.find(t.st.focus).eq(0) : t.wrap).focus()
5214        },
5215        _onFocusIn: function(n) {
5216            return n.target === t.wrap[0] || e.contains(t.wrap[0], n.target) ? void 0 : (t._setFocus(), !1)
5217        },
5218        _parseMarkup: function(t, n, i) {
5219            var o;
5220            i.data && (n = e.extend(i.data, n)), k(u, [t, n, i]), e.each(n, function(n, i) {
5221                if (void 0 === i || i===!1)
5222                    return !0;
5223                if (o = n.split("_"), o.length > 1) {
5224                    var r = t.find(g + "-" + o[0]);
5225                    if (r.length > 0) {
5226                        var a = o[1];
5227                        "replaceWith" === a ? r[0] !== i[0] && r.replaceWith(i) : "img" === a ? r.is("img") ? r.attr("src", i) : r.replaceWith(e("<img>").attr("src", i).attr("class", r.attr("class"))) : r.attr(o[1], i)
5228                    }
5229                } else 
5230                    t.find(g + "-" + n).html(i)
5231            })
5232        },
5233        _getScrollbarSize: function() {
5234            if (void 0 === t.scrollbarSize) {
5235                var e = document.createElement("div");
5236                e.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;", document.body.appendChild(e), t.scrollbarSize = e.offsetWidth - e.clientWidth, document.body.removeChild(e)
5237            }
5238            return t.scrollbarSize
5239        }
5240    }, e.magnificPopup = {
5241        instance: null,
5242        proto: C.prototype,
5243        modules: [],
5244        open: function(t, n) {
5245            return _(), t = t ? e.extend(!0, {}, t) : {}, t.isObj=!0, t.index = n || 0, this.instance.open(t)
5246        },
5247        close: function() {
5248            return e.magnificPopup.instance && e.magnificPopup.instance.close()
5249        },
5250        registerModule: function(t, n) {
5251            n.options && (e.magnificPopup.defaults[t] = n.options), e.extend(this.proto, n.proto), this.modules.push(t)
5252        },
5253        defaults: {
5254            disableOn: 0,
5255            key: null,
5256            midClick: !1,
5257            mainClass: "",
5258            preloader: !0,
5259            focus: "",
5260            closeOnContentClick: !1,
5261            closeOnBgClick: !0,
5262            closeBtnInside: !0,
5263            showCloseBtn: !0,
5264            enableEscapeKey: !0,
5265            modal: !1,
5266            alignTop: !1,
5267            removalDelay: 0,
5268            prependTo: null,
5269            fixedContentPos: "auto",
5270            fixedBgPos: "auto",
5271            overflowY: "auto",
5272            closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>',
5273            tClose: "Close (Esc)",
5274            tLoading: "Loading...",
5275            autoFocusLast: !0
5276        }
5277    }, e.fn.magnificPopup = function(n) {
5278        _();
5279        var i = e(this);
5280        if ("string" == typeof n)
5281            if ("open" === n) {
5282                var o, r = w ? i.data("magnificPopup"): i[0].magnificPopup, a = parseInt(arguments[1], 10) || 0;
5283                r.items ? o = r.items[a] : (o = i, r.delegate && (o = o.find(r.delegate)), o = o.eq(a)), t._openClick({
5284                    mfpEl: o
5285                }, i, r)
5286            } else 
5287                t.isOpen && t[n].apply(t, Array.prototype.slice.call(arguments, 1));
5288        else 
5289            n = e.extend(!0, {}, n), w ? i.data("magnificPopup", n) : i[0].magnificPopup = n, t.addGroup(i, n);
5290        return i
5291    };
5292    var S, E, z, O = "inline", M = function() {
5293        z && (E.after(z.addClass(S)).detach(), z = null)
5294    };
5295    e.magnificPopup.registerModule(O, {
5296        options: {
5297            hiddenClass: "hide",
5298            markup: "",
5299            tNotFound: "Content not found"
5300        },
5301        proto: {
5302            initInline: function() {
5303                t.types.push(O), I(s + "." + O, function() {
5304                    M()
5305                })
5306            },
5307            getInline: function(n, i) {
5308                if (M(), n.src) {
5309                    var o = t.st.inline, r = e(n.src);
5310                    if (r.length) {
5311                        var a = r[0].parentNode;
5312                        a && a.tagName && (E || (S = o.hiddenClass, E = x(S), S = "mfp-" + S), z = r.after(E).detach().removeClass(S)), t.updateStatus("ready")
5313                    } else 
5314                        t.updateStatus("error", o.tNotFound), r = e("<div>");
5315                    return n.inlineElement = r, r
5316                }
5317                return t.updateStatus("ready"), t._parseMarkup(i, {}, n), i
5318            }
5319        }
5320    });
5321    var B, L = "ajax", H = function() {
5322        B && e(document.body).removeClass(B)
5323    }, A = function() {
5324        H(), t.req && t.req.abort()
5325    };
5326    e.magnificPopup.registerModule(L, {
5327        options: {
5328            settings: null,
5329            cursor: "mfp-ajax-cur",
5330            tError: '<a href="%url%">The content</a> could not be loaded.'
5331        },
5332        proto: {
5333            initAjax: function() {
5334                t.types.push(L), B = t.st.ajax.cursor, I(s + "." + L, A), I("BeforeChange." + L, A)
5335            },
5336            getAjax: function(n) {
5337                B && e(document.body).addClass(B), t.updateStatus("loading");
5338                var i = e.extend({
5339                    url: n.src,
5340                    success: function(i, o, r) {
5341                        var a = {
5342                            data: i,
5343                            xhr: r
5344                        };
5345                        k("ParseAjax", a), t.appendContent(e(a.data), L), n.finished=!0, H(), t._setFocus(), setTimeout(function() {
5346                            t.wrap.addClass(v)
5347                        }, 16), t.updateStatus("ready"), k("AjaxContentAdded")
5348                    },
5349                    error: function() {
5350                        H(), n.finished = n.loadError=!0, t.updateStatus("error", t.st.ajax.tError.replace("%url%", n.src))
5351                    }
5352                }, t.st.ajax.settings);
5353                return t.req = e.ajax(i), ""
5354            }
5355        }
5356    });
5357    var F, j = function(n) {
5358        if (n.data && void 0 !== n.data.title)
5359            return n.data.title;
5360        var i = t.st.image.titleSrc;
5361        if (i) {
5362            if (e.isFunction(i))
5363                return i.call(t, n);
5364            if (n.el)
5365                return n.el.attr(i) || ""
5366        }
5367        return ""
5368    };
5369    e.magnificPopup.registerModule("image", {
5370        options: {
5371            markup: '<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',
5372            cursor: "mfp-zoom-out-cur",
5373            titleSrc: "title",
5374            verticalFit: !0,
5375            tError: '<a href="%url%">The image</a> could not be loaded.'
5376        },
5377        proto: {
5378            initImage: function() {
5379                var n = t.st.image, i = ".image";
5380                t.types.push("image"), I(p + i, function() {
5381                    "image" === t.currItem.type && n.cursor && e(document.body).addClass(n.cursor)
5382                }), I(s + i, function() {
5383                    n.cursor && e(document.body).removeClass(n.cursor), b.off("resize" + g)
5384                }), I("Resize" + i, t.resizeImage), t.isLowIE && I("AfterChange", t.resizeImage)
5385            },
5386            resizeImage: function() {
5387                var e = t.currItem;
5388                if (e && e.img && t.st.image.verticalFit) {
5389                    var n = 0;
5390                    t.isLowIE && (n = parseInt(e.img.css("padding-top"), 10) + parseInt(e.img.css("padding-bottom"), 10)), e.img.css("max-height", t.wH - n)
5391                }
5392            },
5393            _onImageHasSize: function(e) {
5394                e.img && (e.hasSize=!0, F && clearInterval(F), e.isCheckingImgSize=!1, k("ImageHasSize", e), e.imgHidden && (t.content && t.content.removeClass("mfp-loading"), e.imgHidden=!1))
5395            },
5396            findImageSize: function(e) {
5397                var n = 0, i = e.img[0], o = function(r) {
5398                    F && clearInterval(F), F = setInterval(function() {
5399                        return i.naturalWidth > 0 ? void t._onImageHasSize(e) : (n > 200 && clearInterval(F), n++, void(3 === n ? o(10) : 40 === n ? o(50) : 100 === n && o(500)))
5400                    }, r)
5401                };
5402                o(1)
5403            },
5404            getImage: function(n, i) {
5405                var o = 0, r = function() {
5406                    n && (n.img[0].complete ? (n.img.off(".mfploader"), n === t.currItem && (t._onImageHasSize(n), t.updateStatus("ready")), n.hasSize=!0, n.loaded=!0, k("ImageLoadComplete")) : (o++, 200 > o ? setTimeout(r, 100) : a()))
5407                }, a = function() {
5408                    n && (n.img.off(".mfploader"), n === t.currItem && (t._onImageHasSize(n), t.updateStatus("error", s.tError.replace("%url%", n.src))), n.hasSize=!0, n.loaded=!0, n.loadError=!0)
5409                }, s = t.st.image, l = i.find(".mfp-img");
5410                if (l.length) {
5411                    var c = document.createElement("img");
5412                    c.className = "mfp-img", n.el && n.el.find("img").length && (c.alt = n.el.find("img").attr("alt")), n.img = e(c).on("load.mfploader", r).on("error.mfploader", a), c.src = n.src, l.is("img") && (n.img = n.img.clone()), c = n.img[0], c.naturalWi
5412dth > 0 ? n.hasSize=!0 : c.width || (n.hasSize=!1)
5413                }
5414                return t._parseMarkup(i, {
5415                    title: j(n),
5416                    img_replaceWith: n.img
5417                }, n), t.resizeImage(), n.hasSize ? (F && clearInterval(F), n.loadError ? (i.addClass("mfp-loading"), t.updateStatus("error", s.tError.replace("%url%", n.src))) : (i.removeClass("mfp-loading"), t.updateStatus("ready")), i) : (t.updateStatus("loading"), n.loading=!0, n.hasSize || (n.imgHidden=!0, i.addClass("mfp-loading"), t.findImageSize(n)), i)
5418            }
5419        }
5420    });
5421    var N, W = function() {
5422        return void 0 === N && (N = void 0 !== document.createElement("p").style.MozTransform), N
5423    };
5424    e.magnificPopup.registerModule("zoom", {
5425        options: {
5426            enabled: !1,
5427            easing: "ease-in-out",
5428            duration: 300,
5429            opener: function(e) {
5430                return e.is("img") ? e : e.find("img")
5431            }
5432        },
5433        proto: {
5434            initZoom: function() {
5435                var e, n = t.st.zoom, i = ".zoom";
5436                if (n.enabled && t.supportsTransition) {
5437                    var o, r, a = n.duration, c = function(e) {
5438                        var t = e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"), i = "all " + n.duration / 1e3 + "s " + n.easing, o = {
5439                            position: "fixed",
5440                            zIndex: 9999,
5441                            left: 0,
5442                            top: 0,
5443                            "-webkit-backface-visibility": "hidden"
5444                        }, r = "transition";
5445                        return o["-webkit-" + r] = o["-moz-" + r] = o["-o-" + r] = o[r] = i, t.css(o), t
5446                    }, d = function() {
5447                        t.content.css("visibility", "visible")
5448                    };
5449                    I("BuildControls" + i, function() {
5450                        if (t._allowZoom()) {
5451                            if (clearTimeout(o), t.content.css("visibility", "hidden"), e = t._getItemToZoom(), !e)
5452                                return void d();
5453                            r = c(e), r.css(t._getOffset()), t.wrap.append(r), o = setTimeout(function() {
5454                                r.css(t._getOffset(!0)), o = setTimeout(function() {
5455                                    d(), setTimeout(function() {
5456                                        r.remove(), e = r = null, k("ZoomAnimationEnded")
5457                                    }, 16)
5458                                }, a)
5459                            }, 16)
5460                        }
5461                    }), I(l + i, function() {
5462                        if (t._allowZoom()) {
5463                            if (clearTimeout(o), t.st.removalDelay = a, !e) {
5464                                if (e = t._getItemToZoom(), !e)
5465                                    return;
5466                                r = c(e)
5467                            }
5468                            r.css(t._getOffset(!0)), t.wrap.append(r), t.content.css("visibility", "hidden"), setTimeout(function() {
5469                                r.css(t._getOffset())
5470                            }, 16)
5471                        }
5472                    }), I(s + i, function() {
5473                        t._allowZoom() && (d(), r && r.remove(), e = null)
5474                    })
5475                }
5476            },
5477            _allowZoom: function() {
5478                return "image" === t.currItem.type
5479            },
5480            _getItemToZoom: function() {
5481                return t.currItem.hasSize ? t.currItem.img : !1
5482            },
5483            _getOffset: function(n) {
5484                var i;
5485                i = n ? t.currItem.img : t.st.zoom.opener(t.currItem.el || t.currItem);
5486                var o = i.offset(), r = parseInt(i.css("padding-top"), 10), a = parseInt(i.css("padding-bottom"), 10);
5487                o.top -= e(window).scrollTop() - r;
5488                var s = {
5489                    width: i.width(),
5490                    height: (w ? i.innerHeight() : i[0].offsetHeight) - a - r
5491                };
5492                return W() ? s["-moz-transform"] = s.transform = "translate(" + o.left + "px," + o.top + "px)" : (s.left = o.left, s.top = o.top), s
5493            }
5494        }
5495    });
5496    var Z = "iframe", q = "//about:blank", R = function(e) {
5497        if (t.currTemplate[Z]) {
5498            var n = t.currTemplate[Z].find("iframe");
5499            n.length && (e || (n[0].src = q), t.isIE8 && n.css("display", e ? "block" : "none"))
5500        }
5501    };
5502    e.magnificPopup.registerModule(Z, {
5503        options: {
5504            markup: '<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',
5505            srcAction: "iframe_src",
5506            patterns: {
5507                youtube: {
5508                    index: "youtube.com",
5509                    id: "v=",
5510                    src: "//www.youtube.com/embed/%id%?autoplay=1"
5511                },
5512                vimeo: {
5513                    index: "vimeo.com/",
5514                    id: "/",
5515                    src: "//player.vimeo.com/video/%id%?autoplay=1"
5516                },
5517                gmaps: {
5518                    index: "//maps.google.",
5519                    src: "%id%&output=embed"
5520                }
5521            }
5522        },
5523        proto: {
5524            initIframe: function() {
5525                t.types.push(Z), I("BeforeChange", function(e, t, n) {
5526                    t !== n && (t === Z ? R() : n === Z && R(!0))
5527                }), I(s + "." + Z, function() {
5528                    R()
5529                })
5530            },
5531            getIframe: function(n, i) {
5532                var o = n.src, r = t.st.iframe;
5533                e.each(r.patterns, function() {
5534                    return o.indexOf(this.index)>-1 ? (this.id && (o = "string" == typeof this.id ? o.substr(o.lastIndexOf(this.id) + this.id.length, o.length) : this.id.call(this, o)), o = this.src.replace("%id%", o), !1) : void 0
5535                });
5536                var a = {};
5537                return r.srcAction && (a[r.srcAction] = o), t._parseMarkup(i, a, n), t.updateStatus("ready"), i
5538            }
5539        }
5540    });
5541    var K = function(e) {
5542        var n = t.items.length;
5543        return e > n - 1 ? e - n : 0 > e ? n + e : e
5544    }, D = function(e, t, n) {
5545        return e.replace(/%curr%/gi, t + 1).replace(/%total%/gi, n)
5546    };
5547    e.magnificPopup.registerModule("gallery", {
5548        options: {
5549            enabled: !1,
5550            arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
5551            preload: [0, 2],
5552            navigateByImgClick: !0,
5553            arrows: !0,
5554            tPrev: "Previous (Left arrow key)",
5555            tNext: "Next (Right arrow key)",
5556            tCounter: "%curr% of %total%"
5557        },
5558        proto: {
5559            initGallery: function() {
5560                var n = t.st.gallery, o = ".mfp-gallery";
5561                return t.direction=!0, n && n.enabled ? (r += " mfp-gallery", I(p + o, function() {
5562                    n.navigateByImgClick && t.wrap.on("click" + o, ".mfp-img", function() {
5563                        return t.items.length > 1 ? (t.next(), !1) : void 0
5564                    }), i.on("keydown" + o, function(e) {
5565                        37 === e.keyCode ? t.prev() : 39 === e.keyCode && t.next()
5566                    })
5567                }), I("UpdateStatus" + o, function(e, n) {
5568                    n.text && (n.text = D(n.text, t.currItem.index, t.items.length))
5569                }), I(u + o, function(e, i, o, r) {
5570                    var a = t.items.length;
5571                    o.counter = a > 1 ? D(n.tCounter, r.index, a) : ""
5572                }), I("BuildControls" + o, function() {
5573                    if (t.items.length > 1 && n.arrows&&!t.arrowLeft) {
5574                        var i = n.arrowMarkup, o = t.arrowLeft = e(i.replace(/%title%/gi, n.tPrev).replace(/%dir%/gi, "left")).addClass(y), r = t.arrowRight = e(i.replace(/%title%/gi, n.tNext).replace(/%dir%/gi, "right")).addClass(y);
5575                        o.click(function() {
5576                            t.prev()
5577                        }), r.click(function() {
5578                            t.next()
5579                        }), t.container.append(o.add(r))
5580                    }
5581                }), I(f + o, function() {
5582                    t._preloadTimeout && clearTimeout(t._preloadTimeout), t._preloadTimeout = setTimeout(function() {
5583                        t.preloadNearbyImages(), t._preloadTimeout = null
5584                    }, 16)
5585                }), void I(s + o, function() {
5586                    i.off(o), t.wrap.off("click" + o), t.arrowRight = t.arrowLeft = null
5587                })) : !1
5588            },
5589            next: function() {
5590                t.direction=!0, t.index = K(t.index + 1), t.updateItemHTML()
5591            },
5592            prev: function() {
5593                t.direction=!1, t.index = K(t.index - 1), t.updateItemHTML()
5594            },
5595            goTo: function(e) {
5596                t.direction = e >= t.index, t.index = e, t.updateItemHTML()
5597            },
5598            preloadNearbyImages: function() {
5599                var e, n = t.st.gallery.preload, i = Math.min(n[0], t.items.length), o = Math.min(n[1], t.items.length);
5600                for (e = 1; e <= (t.direction ? o : i); e++)
5601                    t._preloadItem(t.index + e);
5602                for (e = 1; e <= (t.direction ? i : o); e++)
5603                    t._preloadItem(t.index - e)
5604            },
5605            _preloadItem: function(n) {
5606                if (n = K(n), !t.items[n].preloaded) {
5607                    var i = t.items[n];
5608                    i.parsed || (i = t.parseEl(n)), k("LazyLoad", i), "image" === i.type && (i.img = e('<img class="mfp-img" />').on("load.mfploader", function() {
5609                        i.hasSize=!0
5610                    }).on("error.mfploader", function() {
5611                        i.hasSize=!0, i.loadError=!0, k("LazyLoadError", i)
5612                    }).attr("src", i.src)), i.preloaded=!0
5613                }
5614            }
5615        }
5616    });
5617    var U = "retina";
5618    e.magnificPopup.registerModule(U, {
5619        options: {
5620            replaceSrc: function(e) {
5621                return e.src.replace(/\.\w+$/, function(e) {
5622                    return "@2x" + e
5623                })
5624            },
5625            ratio: 1
5626        },
5627        proto: {
5628            initRetina: function() {
5629                if (window.devicePixelRatio > 1) {
5630                    var e = t.st.retina, n = e.ratio;
5631                    n = isNaN(n) ? n() : n, n > 1 && (I("ImageHasSize." + U, function(e, t) {
5632                        t.img.css({
5633                            "max-width": t.img[0].naturalWidth / n,
5634                            width: "100%"
5635                        })
5636                    }), I("ElementParse." + U, function(t, i) {
5637                        i.src = e.replaceSrc(i, n)
5638                    }))
5639                }
5640            }
5641        }
5642    }), _()
5643});
5644
5645
5646
5647

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