PageSourceSearch

https://www.scottishlawreports.org.uk/scripts/plugins.js

js scottishlawreports.org.uk collected 2026-10-02 10:27:22 UTC 110,829 bytes, 1,661 lines download raw bytes

vendor: 10,418 bytes, lines 1-89
1// SLICK CAROUSEL
2/*
3 * http://kenwheeler.github.io/slick/
4 */
5/*
6     _ _      _       _
7 ___| (_) ___| | __  (_)___
8/ __| | |/ __| |/ /  | / __|
9\__ \ | | (__|   < _ | \__ \
10|___/_|_|\___|_|\_(_)/ |___/
11                   |__/
12
13 Version: 1.6.0
14  Author: Ken Wheeler
15 Website: http://kenwheeler.github.io
16    Docs: http://kenwheeler.github.io/slick
17    Repo: http://github.com/kenwheeler/slick
18  Issues: http://github.com/kenwheeler/slick/issues
19
20 */
21! function(a) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], a) : "undefined" != typeof exports ? module.exports = a(require("jquery")) : a(jQuery) }(function(a) {
22    "use strict";
23    var b = window.Slick || {};
24    b = function() {
25        function c(c, d) {
26            var f, e = this;
27            e.defaults = { accessibility: !0, adaptiveHeight: !1, appendArrows: a(c), appendDots: a(c), arrows: !0, asNavFor: null, prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>', nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>', autoplay: !1, autoplaySpeed: 3e3, centerMode: !1, centerPadding: "50px", cssEase: "ease", customPaging: function(b, c) { return a('<button type="button" data-role="none" role="button" tabindex="0" />').text(c + 1) }, dots: !1, dotsClass: "slick-dots", draggable: !0, easing: "linear", edgeFriction: .35, fade: !1, focusOnSelect: !1, infinite: !0, initialSlide: 0, lazyLoad: "ondemand", mobileFirst: !1, pauseOnHover: !0, pauseOnFocus: !0, pauseOnDotsHover: !1, respondTo: "window", responsive: null, rows: 1, rtl: !1, slide: "", slidesPerRow: 1, slidesToShow: 1, slidesToScroll: 1, speed: 500, swipe: !0, swipeToSlide: !1, touchMove: !0, touchThreshold: 5, useCSS: !0, useTransform: !0, variableWidth: !1, vertical: !1, verticalSwiping: !1, waitForAnimate: !0, zIndex: 1e3 }, e.initials = { animating: !1, dragging: !1, autoPlayTimer: null, currentDirection: 0, currentLeft: null, currentSlide: 0, direction: 1, $dots: null, listWidth: null, listHeight: null, loadIndex: 0, $nextArrow: null, $prevArrow: null, slideCount: null, slideWidth: null, $slideTrack: null, $slides: null, sliding: !1, slideOffset: 0, swipeLeft: null, $list: null, touchObject: {}, transformsEnabled: !1, unslicked: !1 }, a.extend(e, e.initials), e.activeBreakpoint = null, e.animType = null, e.animProp = null, e.breakpoints = [], e.breakpointSettings = [], e.cssTransitions = !1, e.focussed = !1, e.interrupted = !1, e.hidden = "hidden", e.paused = !0, e.positionProp = null, e.respondTo = null, e.rowCount = 1, e.shouldClick = !0, e.$slider = a(c), e.$slidesCache = null, e.transformType = null, e.transitionType = null, e.visibilityChange = "visibilitychange", e.windowWidth = 0, e.windowTimer = null, f = a(c).data("slick") || {}, e.options = a.extend({}, e.defaults, d, f), e.currentSlide = e.options.initialSlide, e.originalSettings = e.options, "undefined" != typeof document.mozHidden ? (e.hidden = "mozHidden", e.visibilityChange = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (e.hidden = "webkitHidden", e.visibilityChange = "webkitvisibilitychange"), e.autoPlay = a.proxy(e.autoPlay, e), e.autoPlayClear = a.proxy(e.autoPlayClear, e), e.autoPlayIterator = a.proxy(e.autoPlayIterator, e), e.changeSlide = a.proxy(e.changeSlide, e), e.clickHandler = a.proxy(e.clickHandler, e), e.selectHandler = a.proxy(e.selectHandler, e), e.setPosition = a.proxy(e.setPosition, e), e.swipeHandler = a.proxy(e.swipeHandler, e), e.dragHandler = a.proxy(e.dragHandler, e), e.keyHandler = a.proxy(e.keyHandler, e), e.instanceUid = b++, e.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, e.registerBreakpoints(), e.init(!0)
28        }
29        var b = 0;
30        return c
31    }(), b.prototype.activateADA = function() {
32        var a = this;
33        a.$slideTrack.find(".slick-active").attr({ "aria-hidden": "false" }).find("a, input, button, select").attr({ tabindex: "0" })
34    }, b.prototype.addSlide = b.prototype.slickAdd = function(b, c, d) {
35        var e = this;
36        if ("boolean" == typeof c) d = c, c = null;
37        else if (0 > c || c >= e.slideCount) return !1;
38        e.unload(), "number" == typeof c ? 0 === c && 0 === e.$slides.length ? a(b).appendTo(e.$slideTrack) : d ? a(b).insertBefore(e.$slides.eq(c)) : a(b).insertAfter(e.$slides.eq(c)) : d === !0 ? a(b).prependTo(e.$slideTrack) : a(b).appendTo(e.$slideTrack), e.$slides = e.$slideTrack.children(this.options.slide), e.$slideTrack.children(this.options.slide).detach(), e.$slideTrack.append(e.$slides), e.$slides.each(function(b, c) { a(c).attr("data-slick-index", b) }), e.$slidesCache = e.$slides, e.reinit()
39    }, b.prototype.animateHeight = function() {
40        var a = this;
41        if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
42            var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
43            a.$list.animate({ height: b }, a.options.speed)
44        }
45    }, b.prototype.animateSlide = function(b, c) {
46        var d = {},
47            e = this;
48        e.animateHeight(), e.options.rtl === !0 && e.options.vertical === !1 && (b = -b), e.transformsEnabled === !1 ? e.options.vertical === !1 ? e.$slideTrack.animate({ left: b }, e.options.speed, e.options.easing, c) : e.$slideTrack.animate({ top: b }, e.options.speed, e.options.easing, c) : e.cssTransitions === !1 ? (e.options.rtl === !0 && (e.currentLeft = -e.currentLeft), a({ animStart: e.currentLeft }).animate({ animStart: b }, { duration: e.options.speed, easing: e.options.easing, step: function(a) { a = Math.ceil(a), e.options.vertical === !1 ? (d[e.animType] = "translate(" + a + "px, 0px)", e.$slideTrack.css(d)) : (d[e.animType] = "translate(0px," + a + "px)", e.$slideTrack.css(d)) }, complete: function() { c && c.call() } })) : (e.applyTransition(), b = Math.ceil(b), e.options.vertical === !1 ? d[e.animType] = "translate3d(" + b + "px, 0px, 0px)" : d[e.animType] = "translate3d(0px," + b + "px, 0px)", e.$slideTrack.css(d), c && setTimeout(function() { e.disableTransition(), c.call() }, e.options.speed))
49    }, b.prototype.getNavTarget = function() {
50        var b = this,
51            c = b.options.asNavFor;
52        return c && null !== c && (c = a(c).not(b.$slider)), c
53    }, b.prototype.asNavFor = function(b) {
54        var c = this,
55            d = c.getNavTarget();
56        null !== d && "object" == typeof d && d.each(function() {
57            var c = a(this).slick("getSlick");
58            c.unslicked || c.slideHandler(b, !0)
59        })
60    }, b.prototype.applyTransition = function(a) {
61        var b = this,
62            c = {};
63        b.options.fade === !1 ? c[b.transitionType] = b.transformType + " " + b.options.speed + "ms " + b.options.cssEase : c[b.transitionType] = "opacity " + b.options.speed + "ms " + b.options.cssEase, b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
64    }, b.prototype.autoPlay = function() {
65        var a = this;
66        a.autoPlayClear(), a.slideCount > a.options.slidesToShow && (a.autoPlayTimer = setInterval(a.autoPlayIterator, a.options.autoplaySpeed))
67    }, b.prototype.autoPlayClear = function() {
68        var a = this;
69        a.autoPlayTimer && clearInterval(a.autoPlayTimer)
70    }, b.prototype.autoPlayIterator = function() {
71        var a = this,
72            b = a.currentSlide + a.options.slidesToScroll;
73        a.paused || a.interrupted || a.focussed || (a.options.infinite === !1 && (1 === a.direction && a.currentSlide + 1 === a.slideCount - 1 ? a.direction = 0 : 0 === a.direction && (b = a.currentSlide - a.options.slidesToScroll, a.currentSlide - 1 === 0 && (a.direction = 1))), a.slideHandler(b))
74    }, b.prototype.buildArrows = function() {
75        var b = this;
76        b.options.arrows === !0 && (b.$prevArrow = a(b.options.prevArrow).addClass("slick-arrow"), b.$nextArrow = a(b.options.nextArrow).addClass("slick-arrow"), b.slideCount > b.options.slidesToShow ? (b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.prependTo(b.options.appendArrows), b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.appendTo(b.options.appendArrows), b.options.infinite !== !0 && b.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({ "aria-disabled": "true", tabindex: "-1" }))
77    }, b.prototype.buildDots = function() {
78        var c, d, b = this;
79        if (b.options.dots === !0 && b.slideCount > b.options.slidesToShow) {
80            for (b.$slider.addClass("slick-dotted"), d = a("<ul />").addClass(b.options.dotsClass), c = 0; c <= b.getDotCount(); c += 1) d.append(a("<li />").append(b.options.customPaging.call(this, b, c)));
81            b.$dots = d.appendTo(b.options.appendDots), b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false")
82        }
83    }, b.prototype.buildOut = function() {
84        var b = this;
85        b.$slides = b.$slider.children(b.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), b.slideCount = b.$slides.length, b.$slides.each(function(b, c) { a(c).attr("data-slick-index", b).data("originalStyling", a(c).attr("style") || "") }), b.$slider.addClass("slick-slider"), b.$slideTrack = 0 === b.slideCount ? a('<div class="slick-track"/>').appendTo(b.$slider) : b.$slides.wrapAll('<div class="slick-track"/>').parent(), b.$list = b.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent(), b.$slideTrack.css("opacity", 0), (b.options.centerMode === !0 || b.options.swipeToSlide === !0) && (b.options.slidesToScroll = 1), a("img[data-lazy]", b.$slider).not("[src]").addClass("slick-loading"), b.setupInfinite(), b.buildArrows(), b.buildDots(), b.updateDots(), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.options.draggable === !0 && b.$list.addClass("draggable")
86    }, b.prototype.buildRows = function() {
87        var b, c, d, e, f, g, h, a = this;
88        if (e = document.createDocumentFragment(), g = a.$slider.children(), a.options.rows > 1) {
89            for (h = a.options.slidesPerRow * a.options.rows, f = Math.
vendor: 4,287 bytes, lines 89-141
89ceil(g.length / h), b = 0; f > b; b++) {
90                var i = document.createElement("div");
91                for (c = 0; c < a.options.rows; c++) {
92                    var j = document.createElement("div");
93                    for (d = 0; d < a.options.slidesPerRow; d++) {
94                        var k = b * h + (c * a.options.slidesPerRow + d);
95                        g.get(k) && j.appendChild(g.get(k))
96                    }
97                    i.appendChild(j)
98                }
99                e.appendChild(i)
100            }
101            a.$slider.empty().append(e), a.$slider.children().children().children().css({ width: 100 / a.options.slidesPerRow + "%", display: "inline-block" })
102        }
103    }, b.prototype.checkResponsive = function(b, c) {
104        var e, f, g, d = this,
105            h = !1,
106            i = d.$slider.width(),
107            j = window.innerWidth || a(window).width();
108        if ("window" === d.respondTo ? g = j : "slider" === d.respondTo ? g = i : "min" === d.respondTo && (g = Math.min(j, i)), d.options.responsive && d.options.responsive.length && null !== d.options.responsive) {
109            f = null;
110            for (e in d.breakpoints) d.breakpoints.hasOwnProperty(e) && (d.originalSettings.mobileFirst === !1 ? g < d.breakpoints[e] && (f = d.breakpoints[e]) : g > d.breakpoints[e] && (f = d.breakpoints[e]));
111            null !== f ? null !== d.activeBreakpoint ? (f !== d.activeBreakpoint || c) && (d.activeBreakpoint = f, "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : (d.activeBreakpoint = f, "unslick" === d.breakpointSettings[f] ? d.unslick(f) : (d.options = a.extend({}, d.originalSettings, d.breakpointSettings[f]), b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b)), h = f) : null !== d.activeBreakpoint && (d.activeBreakpoint = null, d.options = d.originalSettings, b === !0 && (d.currentSlide = d.options.initialSlide), d.refresh(b), h = f), b || h === !1 || d.$slider.trigger("breakpoint", [d, h])
112        }
113    }, b.prototype.changeSlide = function(b, c) {
114        var f, g, h, d = this,
115            e = a(b.currentTarget);
116        switch (e.is("a") && b.preventDefault(), e.is("li") || (e = e.closest("li")), h = d.slideCount % d.options.slidesToScroll !== 0, f = h ? 0 : (d.slideCount - d.currentSlide) % d.options.slidesToScroll, b.data.message) {
117            case "previous":
118                g = 0 === f ? d.options.slidesToScroll : d.options.slidesToShow - f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide - g, !1, c);
119                break;
120            case "next":
121                g = 0 === f ? d.options.slidesToScroll : f, d.slideCount > d.options.slidesToShow && d.slideHandler(d.currentSlide + g, !1, c);
122                break;
123            case "index":
124                var i = 0 === b.data.index ? 0 : b.data.index || e.index() * d.options.slidesToScroll;
125                d.slideHandler(d.checkNavigable(i), !1, c), e.children().trigger("focus");
126                break;
127            default:
128                return
129        }
130    }, b.prototype.checkNavigable = function(a) {
131        var c, d, b = this;
132        if (c = b.getNavigableIndexes(), d = 0, a > c[c.length - 1]) a = c[c.length - 1];
133        else
134            for (var e in c) {
135                if (a < c[e]) { a = d; break }
136                d = c[e]
137            }
138        return a
139    }, b.prototype.cleanUpEvents = function() {
140        var b = this;
141        b.options.dots && null !== b.$dots && a("li", b.$dots).off("click.slick", b.changeSlide).off("mouseenter.slick", a.proxy(b.interrupt, b, !0)).off("mouseleave.slick", a.proxy(b.interrupt, b, !1)), b.$slider.off("focus.slick blur.slick"), b.options.arrows === !0 && b.slideCount > b.options.slidesToShow && (b.$prevArrow && b.$prevArrow.off("click.slick", b.changeSlide), b.$nextArrow && b.$nextArrow.off("click.slick", b.changeSlide)), b.$list.off("touchstart.slick mousedown.slick", b.swipeHandler), b.$list.off("touchmove.slick mousemove.slick", b.swipeHandler), b.$list.off("touchend.slick mouseup.slick", b.swipeHandler), b.$list.off("touchcancel.
141slick mouseleave.slick", b.swipeHandler), b.$list.off("click.slick", b.clickHandler), a(document).off(b.visibilityChange, b.visibility), b.cleanUpSlideEvents(), b.options.accessibility === !0 && b.$list.off("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().off("click.slick", b.selectHandler), a(window).off("orientationchange.slick.slick-" + b.instanceUid, b.orientationChange), a(window).off("resize.slick.slick-" + b.instanceUid, b.resize), a("[draggable!=true]", b.$slideTrack).off("dragstart", b.preventDefault), a(window).off("load.slick.slick-" + b.instanceUid, b.setPosition), a(document).off("ready.slick.slick-" + b.instanceUid, b.setPosition)
142    }, b.prototype.cleanUpSlideEvents = function() {
143        var b = this;
144        b.$list.off("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.off("mouseleave.slick", a.proxy(b.interrupt, b, !1))
145    }, b.prototype.cleanUpRows = function() {
146        var b, a = this;
147        a.options.rows > 1 && (b = a.$slides.children().children(), b.removeAttr("style"), a.$slider.empty().append(b))
148    }, b.prototype.clickHandler = function(a) {
149        var b = this;
150        b.shouldClick === !1 && (a.stopImmediatePropagation(), a.stopPropagation(), a.preventDefault())
151    }, b.prototype.destroy = function(b) {
152        var c = this;
153        c.autoPlayClear(), c.touchObject = {}, c.cleanUpEvents(), a(".slick-cloned", c.$slider).detach(), c.$dots && c.$dots.remove(), c.$prevArrow && c.$prevArrow.length && (c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), c.htmlExpr.test(c.options.prevArrow) && c.$prevArrow.remove()), c.$nextArrow && c.$nextArrow.length && (c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), c.htmlExpr.test(c.options.nextArrow) && c.$nextArrow.remove()), c.$slides && (c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() { a(this).attr("style", a(this).data("originalStyling")) }), c.$slideTrack.children(this.options.slide).detach(), c.$slideTrack.detach(), c.$list.detach(), c.$slider.append(c.$slides)), c.cleanUpRows(), c.$slider.removeClass("slick-slider"), c.$slider.removeClass("slick-initialized"), c.$slider.removeClass("slick-dotted"), c.unslicked = !0, b || c.$slider.trigger("destroy", [c])
154    }, b.prototype.disableTransition = function(a) {
155        var b = this,
156            c = {};
157        c[b.transitionType] = "", b.options.fade === !1 ? b.$slideTrack.css(c) : b.$slides.eq(a).css(c)
158    }, b.prototype.fadeSlide = function(a, b) {
159        var c = this;
160        c.cssTransitions === !1 ? (c.$slides.eq(a).css({ zIndex: c.options.zIndex }), c.$slides.eq(a).animate({ opacity: 1 }, c.options.speed, c.options.easing, b)) : (c.applyTransition(a), c.$slides.eq(a).css({ opacity: 1, zIndex: c.options.zIndex }), b && setTimeout(function() { c.disableTransition(a), b.call() }, c.options.speed))
161    }, b.prototype.fadeSlideOut = function(a) {
162        var b = this;
163        b.cssTransitions === !1 ? b.$slides.eq(a).animate({ opacity: 0, zIndex: b.options.zIndex - 2 }, b.options.speed, b.options.easing) : (b.applyTransition(a), b.$slides.eq(a).css({ opacity: 0, zIndex: b.options.zIndex - 2 }))
164    }, b.prototype.filterSlides = b.prototype.slickFilter = function(a) {
165        var b = this;
166        null !== a && (b.$slidesCache = b.$slides, b.unload(), b.$slideTrack.children(this.options.slide).detach(), b.$slidesCache.filter(a).appendTo(b.$slideTrack), b.reinit())
167    }, b.prototype.focusHandler = function() {
168        var b = this;
169        b.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*:not(.slick-arrow)", function(c) {
170            c.stopImmediatePropagation();
171            var d = a(this);
172            setTimeout(function() { b.options.pauseOnFocus && (b.focussed = d.is(":focus"), b.autoPlay()) }, 0)
173        })
174    }, b.prototype.getCurrent = b.prototype.slickCurrentSlide = function() { var a = this; return a.currentSlide }, b.prototype.getDotCount = function() {
175        var a = this,
176            b = 0,
177            c = 0,
178            d = 0;
179        if (a.options.infinite === !0)
180            for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
181        else if (a.options.centerMode === !0) d = a.slideCount;
182        else if (a.options.asNavFor)
183            for (; b < a.slideCount;) ++d, b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
vendor: 5,505 bytes, lines 184-211
184        else d = 1 + Math.ceil((a.slideCount - a.options.slidesToShow) / a.options.slidesToScroll);
185        return d - 1
186    }, b.prototype.getLeft = function(a) {
187        var c, d, f, b = this,
188            e = 0;
189        return b.slideOffset = 0, d = b.$slides.first().outerHeight(!0), b.options.infinite === !0 ? (b.slideCount > b.options.slidesToShow && (b.slideOffset = b.slideWidth * b.options.slidesToShow * -1, e = d * b.options.slidesToShow * -1), b.slideCount % b.options.slidesToScroll !== 0 && a + b.options.slidesToScroll > b.slideCount && b.slideCount > b.options.slidesToShow && (a > b.slideCount ? (b.slideOffset = (b.options.slidesToShow - (a - b.slideCount)) * b.slideWidth * -1, e = (b.options.slidesToShow - (a - b.slideCount)) * d * -1) : (b.slideOffset = b.slideCount % b.options.slidesToScroll * b.slideWidth * -1, e = b.slideCount % b.options.slidesToScroll * d * -1))) : a + b.options.slidesToShow > b.slideCount && (b.slideOffset = (a + b.options.slidesToShow - b.slideCount) * b.slideWidth, e = (a + b.options.slidesToShow - b.slideCount) * d), b.slideCount <= b.options.slidesToShow && (b.slideOffset = 0, e = 0), b.options.centerMode === !0 && b.options.infinite === !0 ? b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2) - b.slideWidth : b.options.centerMode === !0 && (b.slideOffset = 0, b.slideOffset += b.slideWidth * Math.floor(b.options.slidesToShow / 2)), c = b.options.vertical === !1 ? a * b.slideWidth * -1 + b.slideOffset : a * d * -1 + e, b.options.variableWidth === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow), c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, b.options.centerMode === !0 && (f = b.slideCount <= b.options.slidesToShow || b.options.infinite === !1 ? b.$slideTrack.children(".slick-slide").eq(a) : b.$slideTrack.children(".slick-slide").eq(a + b.options.slidesToShow + 1), c = b.options.rtl === !0 ? f[0] ? -1 * (b.$slideTrack.width() - f[0].offsetLeft - f.width()) : 0 : f[0] ? -1 * f[0].offsetLeft : 0, c += (b.$list.width() - f.outerWidth()) / 2)), c
190    }, b.prototype.getOption = b.prototype.slickGetOption = function(a) { var b = this; return b.options[a] }, b.prototype.getNavigableIndexes = function() {
191        var e, a = this,
192            b = 0,
193            c = 0,
194            d = [];
195        for (a.options.infinite === !1 ? e = a.slideCount : (b = -1 * a.options.slidesToScroll, c = -1 * a.options.slidesToScroll, e = 2 * a.slideCount); e > b;) d.push(b), b = c + a.options.slidesToScroll, c += a.options.slidesToScroll <= a.options.slidesToShow ? a.options.slidesToScroll : a.options.slidesToShow;
196        return d
197    }, b.prototype.getSlick = function() { return this }, b.prototype.getSlideCount = function() { var c, d, e, b = this; return e = b.options.centerMode === !0 ? b.slideWidth * Math.floor(b.options.slidesToShow / 2) : 0, b.options.swipeToSlide === !0 ? (b.$slideTrack.find(".slick-slide").each(function(c, f) { return f.offsetLeft - e + a(f).outerWidth() / 2 > -1 * b.swipeLeft ? (d = f, !1) : void 0 }), c = Math.abs(a(d).attr("data-slick-index") - b.currentSlide) || 1) : b.options.slidesToScroll }, b.prototype.goTo = b.prototype.slickGoTo = function(a, b) {
198        var c = this;
199        c.changeSlide({ data: { message: "index", index: parseInt(a) } }, b)
200    }, b.prototype.init = function(b) {
201        var c = this;
202        a(c.$slider).hasClass("slick-initialized") || (a(c.$slider).addClass("slick-initialized"), c.buildRows(), c.buildOut(), c.setProps(), c.startLoad(), c.loadSlider(), c.initializeEvents(), c.updateArrows(), c.updateDots(), c.checkResponsive(!0), c.focusHandler()), b && c.$slider.trigger("init", [c]), c.options.accessibility === !0 && c.initADA(), c.options.autoplay && (c.paused = !1, c.autoPlay())
203    }, b.prototype.initADA = function() {
204        var b = this;
205        b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({ "aria-hidden": "true", tabindex: "-1" }).find("a, input, button, select").attr({ tabindex: "-1" }), b.$slideTrack.attr("role", "listbox"), b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c) { a(this).attr({ role: "option", "aria-describedby": "slick-slide" + b.instanceUid + c }) }), null !== b.$dots && b.$dots.attr("role", "tablist").find("li").each(function(c) { a(this).attr({ role: "presentation", "aria-selected": "false", "aria-controls": "navigation" + b.instanceUid + c, id: "slick-slide" + b.instanceUid + c }) }).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar"), b.activateADA()
206    }, b.prototype.initArrowEvents = function() {
207        var a = this;
208        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.off("click.slick").on("click.slick", { message: "previous" }, a.changeSlide), a.$nextArrow.off("click.slick").on("click.slick", { message: "next" }, a.changeSlide))
209    }, b.prototype.initDotEvents = function() {
210        var b = this;
211        b.options.dots === !0 && b.slideCount > b.options.slidesToShow && a("li", b.$dots).on("click.slick", { message: "index" }, b.changeSlide), b.options.dots === !0 && b.options.pauseOnDotsHover === !0 && a("li", b.$dots).on("mouseenter.slick", a.proxy(b.interrupt, b, !0)).on("mouseleave.
vendor: 11,348 bytes, lines 211-303
211slick", a.proxy(b.interrupt, b, !1))
212    }, b.prototype.initSlideEvents = function() {
213        var b = this;
214        b.options.pauseOnHover && (b.$list.on("mouseenter.slick", a.proxy(b.interrupt, b, !0)), b.$list.on("mouseleave.slick", a.proxy(b.interrupt, b, !1)))
215    }, b.prototype.initializeEvents = function() {
216        var b = this;
217        b.initArrowEvents(), b.initDotEvents(), b.initSlideEvents(), b.$list.on("touchstart.slick mousedown.slick", { action: "start" }, b.swipeHandler), b.$list.on("touchmove.slick mousemove.slick", { action: "move" }, b.swipeHandler), b.$list.on("touchend.slick mouseup.slick", { action: "end" }, b.swipeHandler), b.$list.on("touchcancel.slick mouseleave.slick", { action: "end" }, b.swipeHandler), b.$list.on("click.slick", b.clickHandler), a(document).on(b.visibilityChange, a.proxy(b.visibility, b)), b.options.accessibility === !0 && b.$list.on("keydown.slick", b.keyHandler), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler), a(window).on("orientationchange.slick.slick-" + b.instanceUid, a.proxy(b.orientationChange, b)), a(window).on("resize.slick.slick-" + b.instanceUid, a.proxy(b.resize, b)), a("[draggable!=true]", b.$slideTrack).on("dragstart", b.preventDefault), a(window).on("load.slick.slick-" + b.instanceUid, b.setPosition), a(document).on("ready.slick.slick-" + b.instanceUid, b.setPosition)
218    }, b.prototype.initUI = function() {
219        var a = this;
220        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.show(), a.$nextArrow.show()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.show()
221    }, b.prototype.keyHandler = function(a) {
222        var b = this;
223        a.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === a.keyCode && b.options.accessibility === !0 ? b.changeSlide({ data: { message: b.options.rtl === !0 ? "next" : "previous" } }) : 39 === a.keyCode && b.options.accessibility === !0 && b.changeSlide({ data: { message: b.options.rtl === !0 ? "previous" : "next" } }))
224    }, b.prototype.lazyLoad = function() {
225        function g(c) {
226            a("img[data-lazy]", c).each(function() {
227                var c = a(this),
228                    d = a(this).attr("data-lazy"),
229                    e = document.createElement("img");
230                e.onload = function() { c.animate({ opacity: 0 }, 100, function() { c.attr("src", d).animate({ opacity: 1 }, 200, function() { c.removeAttr("data-lazy").removeClass("slick-loading") }), b.$slider.trigger("lazyLoaded", [b, c, d]) }) }, e.onerror = function() { c.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), b.$slider.trigger("lazyLoadError", [b, c, d]) }, e.src = d
231            })
232        }
233        var c, d, e, f, b = this;
234        b.options.centerMode === !0 ? b.options.infinite === !0 ? (e = b.currentSlide + (b.options.slidesToShow / 2 + 1), f = e + b.options.slidesToShow + 2) : (e = Math.max(0, b.currentSlide - (b.options.slidesToShow / 2 + 1)), f = 2 + (b.options.slidesToShow / 2 + 1) + b.currentSlide) : (e = b.options.infinite ? b.options.slidesToShow + b.currentSlide : b.currentSlide, f = Math.ceil(e + b.options.slidesToShow), b.options.fade === !0 && (e > 0 && e--, f <= b.slideCount && f++)), c = b.$slider.find(".slick-slide").slice(e, f), g(c), b.slideCount <= b.options.slidesToShow ? (d = b.$slider.find(".slick-slide"), g(d)) : b.currentSlide >= b.slideCount - b.options.slidesToShow ? (d = b.$slider.find(".slick-cloned").slice(0, b.options.slidesToShow), g(d)) : 0 === b.currentSlide && (d = b.$slider.find(".slick-cloned").slice(-1 * b.options.slidesToShow), g(d))
235    }, b.prototype.loadSlider = function() {
236        var a = this;
237        a.setPosition(), a.$slideTrack.css({ opacity: 1 }), a.$slider.removeClass("slick-loading"), a.initUI(), "progressive" === a.options.lazyLoad && a.progressiveLazyLoad()
238    }, b.prototype.next = b.prototype.slickNext = function() {
239        var a = this;
240        a.changeSlide({ data: { message: "next" } })
241    }, b.prototype.orientationChange = function() {
242        var a = this;
243        a.checkResponsive(), a.setPosition()
244    }, b.prototype.pause = b.prototype.slickPause = function() {
245        var a = this;
246        a.autoPlayClear(), a.paused = !0
247    }, b.prototype.play = b.prototype.slickPlay = function() {
248        var a = this;
249        a.autoPlay(), a.options.autoplay = !0, a.paused = !1, a.focussed = !1, a.interrupted = !1
250    }, b.prototype.postSlide = function(a) {
251        var b = this;
252        b.unslicked || (b.$slider.trigger("afterChange", [b, a]), b.animating = !1, b.setPosition(), b.swipeLeft = null, b.options.autoplay && b.autoPlay(), b.options.accessibility === !0 && b.initADA())
253    }, b.prototype.prev = b.prototype.slickPrev = function() {
254        var a = this;
255        a.changeSlide({ data: { message: "previous" } })
256    }, b.prototype.preventDefault = function(a) { a.preventDefault() }, b.prototype.progressiveLazyLoad = function(b) {
257        b = b || 1;
258        var e, f, g, c = this,
259            d = a("img[data-lazy]", c.$slider);
260        d.length ? (e = d.first(), f = e.attr("data-lazy"), g = document.createElement("img"), g.onload = function() { e.attr("src", f).removeAttr("data-lazy").removeClass("slick-loading"), c.options.adaptiveHeight === !0 && c.setPosition(), c.$slider.trigger("lazyLoaded", [c, e, f]), c.progressiveLazyLoad() }, g.onerror = function() { 3 > b ? setTimeout(function() { c.progressiveLazyLoad(b + 1) }, 500) : (e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), c.$slider.trigger("lazyLoadError", [c, e, f]), c.progressiveLazyLoad()) }, g.src = f) : c.$slider.trigger("allImagesLoaded", [c])
261    }, b.prototype.refresh = function(b) {
262        var d, e, c = this;
263        e = c.slideCount - c.options.slidesToShow, !c.options.infinite && c.currentSlide > e && (c.currentSlide = e), c.slideCount <= c.options.slidesToShow && (c.currentSlide = 0), d = c.currentSlide, c.destroy(!0), a.extend(c, c.initials, { currentSlide: d }), c.init(), b || c.changeSlide({ data: { message: "index", index: d } }, !1)
264    }, b.prototype.registerBreakpoints = function() {
265        var c, d, e, b = this,
266            f = b.options.responsive || null;
267        if ("array" === a.type(f) && f.length) {
268            b.respondTo = b.options.respondTo || "window";
269            for (c in f)
270                if (e = b.breakpoints.length - 1, d = f[c].breakpoint, f.hasOwnProperty(c)) {
271                    for (; e >= 0;) b.breakpoints[e] && b.breakpoints[e] === d && b.breakpoints.splice(e, 1), e--;
272                    b.breakpoints.push(d), b.breakpointSettings[d] = f[c].settings
273                }
274            b.breakpoints.sort(function(a, c) { return b.options.mobileFirst ? a - c : c - a })
275        }
276    }, b.prototype.reinit = function() {
277        var b = this;
278        b.$slides = b.$slideTrack.children(b.options.slide).addClass("slick-slide"), b.slideCount = b.$slides.length, b.currentSlide >= b.slideCount && 0 !== b.currentSlide && (b.currentSlide = b.currentSlide - b.options.slidesToScroll), b.slideCount <= b.options.slidesToShow && (b.currentSlide = 0), b.registerBreakpoints(), b.setProps(), b.setupInfinite(), b.buildArrows(), b.updateArrows(), b.initArrowEvents(), b.buildDots(), b.updateDots(), b.initDotEvents(), b.cleanUpSlideEvents(), b.initSlideEvents(), b.checkResponsive(!1, !0), b.options.focusOnSelect === !0 && a(b.$slideTrack).children().on("click.slick", b.selectHandler), b.setSlideClasses("number" == typeof b.currentSlide ? b.currentSlide : 0), b.setPosition(), b.focusHandler(), b.paused = !b.options.autoplay, b.autoPlay(), b.$slider.trigger("reInit", [b])
279    }, b.prototype.resize = function() {
280        var b = this;
281        a(window).width() !== b.windowWidth && (clearTimeout(b.windowDelay), b.windowDelay = window.setTimeout(function() { b.windowWidth = a(window).width(), b.checkResponsive(), b.unslicked || b.setPosition() }, 50))
282    }, b.prototype.removeSlide = b.prototype.slickRemove = function(a, b, c) { var d = this; return "boolean" == typeof a ? (b = a, a = b === !0 ? 0 : d.slideCount - 1) : a = b === !0 ? --a : a, d.slideCount < 1 || 0 > a || a > d.slideCount - 1 ? !1 : (d.unload(), c === !0 ? d.$slideTrack.children().remove() : d.$slideTrack.children(this.options.slide).eq(a).remove(), d.$slides = d.$slideTrack.children(this.options.slide), d.$slideTrack.children(this.options.slide).detach(), d.$slideTrack.append(d.$slides), d.$slidesCache = d.$slides, void d.reinit()) }, b.prototype.setCSS = function(a) {
283        var d, e, b = this,
284            c = {};
285        b.options.rtl === !0 && (a = -a), d = "left" == b.positionProp ? Math.ceil(a) + "px" : "0px", e = "top" == b.positionProp ? Math.ceil(a) + "px" : "0px", c[b.positionProp] = a, b.transformsEnabled === !1 ? b.$slideTrack.css(c) : (c = {}, b.cssTransitions === !1 ? (c[b.animType] = "translate(" + d + ", " + e + ")", b.$slideTrack.css(c)) : (c[b.animType] = "translate3d(" + d + ", " + e + ", 0px)", b.$slideTrack.css(c)))
286    }, b.prototype.setDimensions = function() {
287        var a = this;
288        a.options.vertical === !1 ? a.options.centerMode === !0 && a.$list.css({ padding: "0px " + a.options.centerPadding }) : (a.$list.height(a.$slides.first().outerHeight(!0) * a.options.slidesToShow), a.options.centerMode === !0 && a.$list.css({ padding: a.options.centerPadding + " 0px" })), a.listWidth = a.$list.width(), a.listHeight = a.$list.height(), a.options.vertical === !1 && a.options.variableWidth === !1 ? (a.slideWidth = Math.ceil(a.listWidth / a.options.slidesToShow), a.$slideTrack.width(Math.ceil(a.slideWidth * a.$slideTrack.children(".slick-slide").length))) : a.options.variableWidth === !0 ? a.$slideTrack.width(5e3 * a.slideCount) : (a.slideWidth = Math.ceil(a.listWidth), a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0) * a.$slideTrack.children(".slick-slide").length)));
289        var b = a.$slides.first().outerWidth(!0) - a.$slides.first().width();
290        a.options.variableWidth === !1 && a.$slideTrack.children(".slick-slide").width(a.slideWidth - b)
291    }, b.prototype.setFade = function() {
292        var c, b = this;
293        b.$slides.each(function(d, e) { c = b.slideWidth * d * -1, b.options.rtl === !0 ? a(e).css({ position: "relative", right: c, top: 0, zIndex: b.options.zIndex - 2, opacity: 0 }) : a(e).css({ position: "relative", left: c, top: 0, zIndex: b.options.zIndex - 2, opacity: 0 }) }), b.$slides.eq(b.currentSlide).css({ zIndex: b.options.zIndex - 1, opacity: 1 })
294    }, b.prototype.setHeight = function() {
295        var a = this;
296        if (1 === a.options.slidesToShow && a.options.adaptiveHeight === !0 && a.options.vertical === !1) {
297            var b = a.$slides.eq(a.currentSlide).outerHeight(!0);
298            a.$list.css("height", b)
299        }
300    }, b.prototype.setOption = b.prototype.slickSetOption = function() {
301        var c, d, e, f, h, b = this,
302            g = !1;
303        if ("object" === a.type(arguments[0]) ? (e = arguments[0], g = arguments[1], h = "multiple") : "string" === a.type(arguments[0]) && (e = arguments[0], f = arguments[1], g = arguments[2], "responsive" === arguments[0] && "array" === a.type(arguments[1]) ? h 
vendor: 12,602 bytes, lines 303-379
303= "responsive" : "undefined" != typeof arguments[1] && (h = "single")), "single" === h) b.options[e] = f;
304        else if ("multiple" === h) a.each(e, function(a, c) { b.options[a] = c });
305        else if ("responsive" === h)
306            for (d in f)
307                if ("array" !== a.type(b.options.responsive)) b.options.responsive = [f[d]];
308                else {
309                    for (c = b.options.responsive.length - 1; c >= 0;) b.options.responsive[c].breakpoint === f[d].breakpoint && b.options.responsive.splice(c, 1), c--;
310                    b.options.responsive.push(f[d])
311                }
312        g && (b.unload(), b.reinit())
313    }, b.prototype.setPosition = function() {
314        var a = this;
315        a.setDimensions(), a.setHeight(), a.options.fade === !1 ? a.setCSS(a.getLeft(a.currentSlide)) : a.setFade(), a.$slider.trigger("setPosition", [a])
316    }, b.prototype.setProps = function() {
317        var a = this,
318            b = document.body.style;
319        a.positionProp = a.options.vertical === !0 ? "top" : "left", "top" === a.positionProp ? a.$slider.addClass("slick-vertical") : a.$slider.removeClass("slick-vertical"), (void 0 !== b.WebkitTransition || void 0 !== b.MozTransition || void 0 !== b.msTransition) && a.options.useCSS === !0 && (a.cssTransitions = !0), a.options.fade && ("number" == typeof a.options.zIndex ? a.options.zIndex < 3 && (a.options.zIndex = 3) : a.options.zIndex = a.defaults.zIndex), void 0 !== b.OTransform && (a.animType = "OTransform", a.transformType = "-o-transform", a.transitionType = "OTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !== b.MozTransform && (a.animType = "MozTransform", a.transformType = "-moz-transform", a.transitionType = "MozTransition", void 0 === b.perspectiveProperty && void 0 === b.MozPerspective && (a.animType = !1)), void 0 !== b.webkitTransform && (a.animType = "webkitTransform", a.transformType = "-webkit-transform", a.transitionType = "webkitTransition", void 0 === b.perspectiveProperty && void 0 === b.webkitPerspective && (a.animType = !1)), void 0 !== b.msTransform && (a.animType = "msTransform", a.transformType = "-ms-transform", a.transitionType = "msTransition", void 0 === b.msTransform && (a.animType = !1)), void 0 !== b.transform && a.animType !== !1 && (a.animType = "transform", a.transformType = "transform", a.transitionType = "transition"), a.transformsEnabled = a.options.useTransform && null !== a.animType && a.animType !== !1
320    }, b.prototype.setSlideClasses = function(a) {
321        var c, d, e, f, b = this;
322        d = b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), b.$slides.eq(a).addClass("slick-current"), b.options.centerMode === !0 ? (c = Math.floor(b.options.slidesToShow / 2), b.options.infinite === !0 && (a >= c && a <= b.slideCount - 1 - c ? b.$slides.slice(a - c, a + c + 1).addClass("slick-active").attr("aria-hidden", "false") : (e = b.options.slidesToShow + a,
323            d.slice(e - c + 1, e + c + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === a ? d.eq(d.length - 1 - b.options.slidesToShow).addClass("slick-center") : a === b.slideCount - 1 && d.eq(b.options.slidesToShow).addClass("slick-center")), b.$slides.eq(a).addClass("slick-center")) : a >= 0 && a <= b.slideCount - b.options.slidesToShow ? b.$slides.slice(a, a + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : d.length <= b.options.slidesToShow ? d.addClass("slick-active").attr("aria-hidden", "false") : (f = b.slideCount % b.options.slidesToShow, e = b.options.infinite === !0 ? b.options.slidesToShow + a : a, b.options.slidesToShow == b.options.slidesToScroll && b.slideCount - a < b.options.slidesToShow ? d.slice(e - (b.options.slidesToShow - f), e + f).addClass("slick-active").attr("aria-hidden", "false") : d.slice(e, e + b.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")), "ondemand" === b.options.lazyLoad && b.lazyLoad()
324    }, b.prototype.setupInfinite = function() {
325        var c, d, e, b = this;
326        if (b.options.fade === !0 && (b.options.centerMode = !1), b.options.infinite === !0 && b.options.fade === !1 && (d = null, b.slideCount > b.options.slidesToShow)) {
327            for (e = b.options.centerMode === !0 ? b.options.slidesToShow + 1 : b.options.slidesToShow, c = b.slideCount; c > b.slideCount - e; c -= 1) d = c - 1, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d - b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");
328            for (c = 0; e > c; c += 1) d = c, a(b.$slides[d]).clone(!0).attr("id", "").attr("data-slick-index", d + b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");
329            b.$slideTrack.find(".slick-cloned").find("[id]").each(function() { a(this).attr("id", "") })
330        }
331    }, b.prototype.interrupt = function(a) {
332        var b = this;
333        a || b.autoPlay(), b.interrupted = a
334    }, b.prototype.selectHandler = function(b) {
335        var c = this,
336            d = a(b.target).is(".slick-slide") ? a(b.target) : a(b.target).parents(".slick-slide"),
337            e = parseInt(d.attr("data-slick-index"));
338        return e || (e = 0), c.slideCount <= c.options.slidesToShow ? (c.setSlideClasses(e), void c.asNavFor(e)) : void c.slideHandler(e)
339    }, b.prototype.slideHandler = function(a, b, c) {
340        var d, e, f, g, j, h = null,
341            i = this;
342        return b = b || !1, i.animating === !0 && i.options.waitForAnimate === !0 || i.options.fade === !0 && i.currentSlide === a || i.slideCount <= i.options.slidesToShow ? void 0 : (b === !1 && i.asNavFor(a), d = a, h = i.getLeft(d), g = i.getLeft(i.currentSlide), i.currentLeft = null === i.swipeLeft ? g : i.swipeLeft, i.options.infinite === !1 && i.options.centerMode === !1 && (0 > a || a > i.getDotCount() * i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function() { i.postSlide(d) }) : i.postSlide(d))) : i.options.infinite === !1 && i.options.centerMode === !0 && (0 > a || a > i.slideCount - i.options.slidesToScroll) ? void(i.options.fade === !1 && (d = i.currentSlide, c !== !0 ? i.animateSlide(g, function() { i.postSlide(d) }) : i.postSlide(d))) : (i.options.autoplay && clearInterval(i.autoPlayTimer), e = 0 > d ? i.slideCount % i.options.slidesToScroll !== 0 ? i.slideCount - i.slideCount % i.options.slidesToScroll : i.slideCount + d : d >= i.slideCount ? i.slideCount % i.options.slidesToScroll !== 0 ? 0 : d - i.slideCount : d, i.animating = !0, i.$slider.trigger("beforeChange", [i, i.currentSlide, e]), f = i.currentSlide, i.currentSlide = e, i.setSlideClasses(i.currentSlide), i.options.asNavFor && (j = i.getNavTarget(), j = j.slick("getSlick"), j.slideCount <= j.options.slidesToShow && j.setSlideClasses(i.currentSlide)), i.updateDots(), i.updateArrows(), i.options.fade === !0 ? (c !== !0 ? (i.fadeSlideOut(f), i.fadeSlide(e, function() { i.postSlide(e) })) : i.postSlide(e), void i.animateHeight()) : void(c !== !0 ? i.animateSlide(h, function() { i.postSlide(e) }) : i.postSlide(e))))
343    }, b.prototype.startLoad = function() {
344        var a = this;
345        a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && (a.$prevArrow.hide(), a.$nextArrow.hide()), a.options.dots === !0 && a.slideCount > a.options.slidesToShow && a.$dots.hide(), a.$slider.addClass("slick-loading")
346    }, b.prototype.swipeDirection = function() { var a, b, c, d, e = this; return a = e.touchObject.startX - e.touchObject.curX, b = e.touchObject.startY - e.touchObject.curY, c = Math.atan2(b, a), d = Math.round(180 * c / Math.PI), 0 > d && (d = 360 - Math.abs(d)), 45 >= d && d >= 0 ? e.options.rtl === !1 ? "left" : "right" : 360 >= d && d >= 315 ? e.options.rtl === !1 ? "left" : "right" : d >= 135 && 225 >= d ? e.options.rtl === !1 ? "right" : "left" : e.options.verticalSwiping === !0 ? d >= 35 && 135 >= d ? "down" : "up" : "vertical" }, b.prototype.swipeEnd = function(a) {
347        var c, d, b = this;
348        if (b.dragging = !1, b.interrupted = !1, b.shouldClick = b.touchObject.swipeLength > 10 ? !1 : !0, void 0 === b.touchObject.curX) return !1;
349        if (b.touchObject.edgeHit === !0 && b.$slider.trigger("edge", [b, b.swipeDirection()]), b.touchObject.swipeLength >= b.touchObject.minSwipe) {
350            switch (d = b.swipeDirection()) {
351                case "left":
352                case "down":
353                    c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide + b.getSlideCount()) : b.currentSlide + b.getSlideCount(), b.currentDirection = 0;
354                    break;
355                case "right":
356                case "up":
357                    c = b.options.swipeToSlide ? b.checkNavigable(b.currentSlide - b.getSlideCount()) : b.currentSlide - b.getSlideCount(), b.currentDirection = 1
358            }
359            "vertical" != d && (b.slideHandler(c), b.touchObject = {}, b.$slider.trigger("swipe", [b, d]))
360        } else b.touchObject.startX !== b.touchObject.curX && (b.slideHandler(b.currentSlide), b.touchObject = {})
361    }, b.prototype.swipeHandler = function(a) {
362        var b = this;
363        if (!(b.options.swipe === !1 || "ontouchend" in document && b.options.swipe === !1 || b.options.draggable === !1 && -1 !== a.type.indexOf("mouse"))) switch (b.touchObject.fingerCount = a.originalEvent && void 0 !== a.originalEvent.touches ? a.originalEvent.touches.length : 1, b.touchObject.minSwipe = b.listWidth / b.options.touchThreshold, b.options.verticalSwiping === !0 && (b.touchObject.minSwipe = b.listHeight / b.options.touchThreshold), a.data.action) {
364            case "start":
365                b.swipeStart(a);
366                break;
367            case "move":
368                b.swipeMove(a);
369                break;
370            case "end":
371                b.swipeEnd(a)
372        }
373    }, b.prototype.swipeMove = function(a) { var d, e, f, g, h, b = this; return h = void 0 !== a.originalEvent ? a.originalEvent.touches : null, !b.dragging || h && 1 !== h.length ? !1 : (d = b.getLeft(b.currentSlide), b.touchObject.curX = void 0 !== h ? h[0].pageX : a.clientX, b.touchObject.curY = void 0 !== h ? h[0].pageY : a.clientY, b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curX - b.touchObject.startX, 2))), b.options.verticalSwiping === !0 && (b.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(b.touchObject.curY - b.touchObject.startY, 2)))), e = b.swipeDirection(), "vertical" !== e ? (void 0 !== a.originalEvent && b.touchObject.swipeLength > 4 && a.preventDefault(), g = (b.options.rtl === !1 ? 1 : -1) * (b.touchObject.curX > b.touchObject.startX ? 1 : -1), b.options.verticalSwiping === !0 && (g = b.touchObject.curY > b.touchObject.startY ? 1 : -1), f = b.touchObject.swipeLength, b.touchObject.edgeHit = !1, b.options.infinite === !1 && (0 === b.currentSlide && "right" === e || b.currentSlide >= b.getDotCount() && "left" === e) && (f = b.touchObject.swipeLength * b.options.edgeFriction, b.touchObject.edgeHit = !0), b.options.vertical === !1 ? b.swipeLeft = d + f * g : b.swipeLeft = d + f * (b.$list.height() / b.listWidth) * g, b.options.verticalSwiping === !0 && (b.swipeLeft = d + f * g), b.options.fade === !0 || b.options.touchMove === !1 ? !1 : b.animating === !0 ? (b.swipeLeft = null, !1) : void b.setCSS(b.swipeLeft)) : void 0) }, b.prototype.swipeStart = function(a) { var c, b = this; return b.interrupted = !0, 1 !== b.touchObject.fingerCount || b.slideCount <= b.options.slidesToShow ? (b.touchObject = {}, !1) : (void 0 !== a.originalEvent && void 0 !== a.originalEvent.touches && (c = a.originalEvent.touches[0]), b.touchObject.startX = b.touchObject.curX = void 0 !== c ? c.pageX : a.clientX, b.touchObject.startY = b.touchObject.curY = void 0 !== c ? c.pageY : a.clientY, void(b.dragging = !0)) }, b.prototype.unfilterSlides = b.prototype.slickUnfilter = function() {
374        var a = this;
375        null !== a.$slidesCache && (a.unload(), a.$slideTrack.children(this.options.slide).detach(), a.$slidesCache.appendTo(a.$slideTrack), a.reinit())
376    }, b.prototype.unload = function() {
377        var b = this;
378        a(".slick-cloned", b.$slider).remove(), b.$dots && b.$dots.remove(), b.$prevArrow && b.htmlExpr.test(b.options.prevArrow) && b.$prevArrow.remove(), b.$nextArrow && b.htmlExpr.test(b.options.nextArrow) && b.$nextArrow.remove(), b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
379    }
379, b.prototype.unslick = function(a) {
380        var b = this;
381        b.$slider.trigger("unslick", [b, a]), b.destroy()
382    }, b.prototype.updateArrows = function() {
383        var b, a = this;
384        b = Math.floor(a.options.slidesToShow / 2), a.options.arrows === !0 && a.slideCount > a.options.slidesToShow && !a.options.infinite && (a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === a.currentSlide ? (a.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - a.options.slidesToShow && a.options.centerMode === !1 ? (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : a.currentSlide >= a.slideCount - 1 && a.options.centerMode === !0 && (a.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
385    }, b.prototype.updateDots = function() {
386        var a = this;
387        null !== a.$dots && (a.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true"), a.$dots.find("li").eq(Math.floor(a.currentSlide / a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false"))
388    }, b.prototype.visibility = function() {
389        var a = this;
390        a.options.autoplay && (document[a.hidden] ? a.interrupted = !0 : a.interrupted = !1)
391    }, a.fn.slick = function() {
392        var f, g, a = this,
393            c = arguments[0],
394            d = Array.prototype.slice.call(arguments, 1),
395            e = a.length;
396        for (f = 0; e > f; f++)
397            if ("object" == typeof c || "undefined" == typeof c ? a[f].slick = new b(a[f], c) : g = a[f].slick[c].apply(a[f].slick, d), "undefined" != typeof g) return g;
398        return a
399    }
400});
401
402
403// LIGHTBOX 
404/*
405Lightbox for Bootstrap 3 by @ashleydw
406https://github.com/ashleydw/lightbox
407
408License: https://github.com/ashleydw/lightbox/blob/master/LICENSE
409*/
410(function() {
411    "use strict";
412    var $, EkkoLightbox;
413
414    $ = jQuery;
415
416    EkkoLightbox = function(element, options) {
417        var content, footer, header,
418            _this = this;
419        this.options = $.extend({
420            title: null,
421            footer: null,
422            remote: null
423        }, $.fn.ekkoLightbox.defaults, options || {});
424        this.$element = $(element);
425        content = '';
426        this.modal_id = this.options.modal_id ? this.options.modal_id : 'ekkoLightbox-' + Math.floor((Math.random() * 1000) + 1);
427        header = '<div class="modal-header"' + (this.options.title || this.options.always_show_close ? '' : ' style="display:none"') + '><button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="ion-android-close"></span></button><h4 class="modal-title">' + (this.options.title || "&nbsp;") + '</h4></div>';
428        footer = '<div class="modal-footer"' + (this.options.footer ? '' : ' style="display:none"') + '>' + this.options.footer + '</div>';
429        $(document.body).append('<div id="' + this.modal_id + '" class="ekko-lightbox modal fade" tabindex="-1"><div class="modal-dialog"><div class="modal-content">' + header + '<div class="modal-body"><div class="ekko-lightbox-container"><div></div></div></div>' + footer + '</div></div></div>');
430        this.modal = $('#' + this.modal_id);
431        this.modal_dialog = this.modal.find('.modal-dialog').first();
432        this.modal_content = this.modal.find('.modal-content').first();
433        this.modal_body = this.modal.find('.modal-body').first();
434        this.lightbox_container = this.modal_body.find('.ekko-lightbox-container').first();
435        this.lightbox_body = this.lightbox_container.find('> div:first-child').first();
436        this.showLoading();
437        this.modal_arrows = null;
438        this.border = {
439            top: parseFloat(this.modal_dialog.css('border-top-width')) + parseFloat(this.modal_content.css('border-top-width')) + parseFloat(this.modal_body.css('border-top-width')),
440            right: parseFloat(this.modal_dialog.css('border-right-width')) + parseFloat(this.modal_content.css('border-right-width')) + parseFloat(this.modal_body.css('border-right-width')),
441            bottom: parseFloat(this.modal_dialog.css('border-bottom-width')) + parseFloat(this.modal_content.css('border-bottom-width')) + parseFloat(this.modal_body.css('border-bottom-width')),
442            left: parseFloat(this.modal_dialog.css('border-left-width')) + parseFloat(this.modal_content.css('border-left-width')) + parseFloat(this.modal_body.css('border-left-width'))
443        };
444        this.padding = {
445            top: parseFloat(this.modal_dialog.css('padding-top')) + parseFloat(this.modal_content.css('padding-top')) + parseFloat(this.modal_body.css('padding-top')),
446            right: parseFloat(this.modal_dialog.css('padding-right')) + parseFloat(this.modal_content.css('padding-right')) + parseFloat(this.modal_body.css('padding-right')),
447            bottom: parseFloat(this.modal_dialog.css('padding-bottom')) + parseFloat(this.modal_content.css('padding-bottom')) + parseFloat(this.modal_body.css('padding-bottom')),
448            left: parseFloat(this.modal_dialog.css('padding-left')) + parseFloat(this.modal_content.css('padding-left')) + parseFloat(this.modal_body.css('padding-left'))
449        };
450        this.modal.on('show.bs.modal', this.options.onShow.bind(this)).on('shown.bs.modal', function() {
451            _this.modal_shown();
452            return _this.options.onShown.call(_this);
453        }).on('hide.bs.modal', this.options.onHide.bind(this)).on('hidden.bs.modal', function() {
454            if (_this.gallery) {
455                $(document).off('keydown.ekkoLightbox');
456            }
457            _this.modal.remove();
458            return _this.options.onHidden.call(_this);
459        }).modal('show', options);
460        return this.modal;
461    };
462
463    EkkoLightbox.prototype = {
464        modal_shown: function() {
465            var video_id,
466                _this = this;
467            if (!this.options.remote) {
468                return this.error('No remote target given');
469            } else {
470                this.gallery = this.$element.data('gallery');
471                if (this.gallery) {
472                    if (this.options.gallery_parent_selector === 'document.body' || this.options.gallery_parent_selector === '') {
473                        this.gallery_items = $(document.body).find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]');
474                    } else {
475                        this.gallery_items = this.$element.parents(this.options.gallery_parent_selector).first().find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]');
476                    }
477                    this.gallery_index = this.gallery_items.index(this.$element);
478                    $(document).on('keydown.ekkoLightbox', this.navigate.bind(this));
479                    if (this.options.directional_arrows && this.gallery_items.length > 1) {
480                        this.lightbox_container.append('<div class="ekko-lightbox-nav-overlay"><a href="#" class="' + this.strip_stops(this.options.left_arrow_class) + '"></a><a href="#" class="' + this.strip_stops(this.options.right_arrow_class) + '"></a></div>');
481                        this.modal_arrows = this.lightbox_container.find('div.ekko-lightbox-nav-overlay').first();
482                        this.lightbox_container.find('a' + this.strip_spaces(this.options.left_arrow_class)).on('click', function(event) {
483                            event.preventDefault();
484                            return _this.navigate_left();
485                        });
486                        this.lightbox_container.find('a' + this.strip_spaces(this.options.right_arrow_class)).on('click', function(event) {
487                            event.preventDefault();
488                            return _this.navigate_right();
489                        });
490                    }
491                }
492                if (this.options.type) {
493                    if (this.options.type === 'image') {
494                        return this.preloadImage(this.options.remote, true);
495                    } else if (this.options.type === 'youtube' && (video_id = this.getYoutubeId(this.options.remote))) {
496                        return this.showYoutubeVideo(video_id);
497                    } else if (this.options.type === 'vimeo') {
498                        return this.showVimeoVideo(this.options.remote);
499                    } else if (this.options.type === 'instagram') {
500                        return this.showInstagramVideo(this.options.remote);
501                    } else if (this.options.type === 'url') {
502                        return this.loadRemoteContent(this.options.remote);
503                    } else if (this.options.type === 'video') {
504                        return this.showVideoIframe(this.options.remote);
505                    } else {
506                        return this.error("Could not detect remote target type. Force the type using data-type=\"image|youtube|vimeo|instagram|url|video\"");
507                    }
508                } else {
509                    return this.detectRemoteType(this.options.remote);
510                }
511            }
512        },
513        strip_stops: function(str) {
514            return str.replace(/\./g, '');
515        },
516        strip_spaces: function(str) {
517            return str.replace(/\s/g, '');
518        },
519        isImage: function(str) {
520            return str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
521        },
522        isSwf: function(str) {
523            return str.match(/\.(swf)((\?|#).*)?$/i);
524        },
525        getYoutubeId: function(str) {
526            var match;
527            match = str.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);
528            if (match && match[2].length === 11) {
529                return match[2];
530            } else {
531                return false;
532            }
533        },
534        getVimeoId: function(str) {
535            if (str.indexOf('vimeo') > 0) {
536                return str;
537            } else {
538                return false;
539            }
540        },
541        getInstagramId: function(str) {
542            if (str.indexOf('instagram') > 0) {
543                return str;
544            } else {
545                return false;
546            }
547        },
548        navigate: function(event) {
549            event = event || window.event;
550            if (event.keyCode === 39 || event.keyCode === 37) {
551                if (event.keyCode === 39) {
552                    return this.navigate_right();
553                } else if (event.keyCode === 37) {
554                    return this.navigate_left();
555                }
556            }
557        },
558        navigateTo: function(index) {
559            var next, src;
560            if (index < 0 || index > this.gallery_items.length - 1) {
561                return this;
562            }
563            this.showLoading();
564            this.gallery_index = index;
565            this.$element = $(this.gallery_items.get(this.gallery_index));
566            this.updateTitleAndFooter();
567            src = this.$element.attr('data-remote') || this.$element.attr('href');
568            this.detectRemoteType(src, this.$element.attr('data-type') || false);
569            if (this.gallery_index + 1 < this.gallery_items.length) {
570                next = $(this.gallery_items.get(this.gallery_index + 1), false);
571                src = next.attr('data-remote') || next.attr('href');
572                if (next.attr('data-type') === 'image' || this.isImage(src)) {
573                    return this.preloadImage(src, false);
574                }
575            }
576        },
577        navigate_left: function() {
578            if (this.gallery_items.length === 1) {
579                return;
580            }
581            if (this.gallery_index === 0) {
582                this.gallery_index = this.gallery_items.length - 1;
583            } else {
584                this.gallery_index--;
585            }
586            this.options.onNavigate.call(this, 'left', this.gallery_index);
587            return this.navigateTo(this.gallery_index);
588        },
589        navigate_right: function() {
590            if (this.gallery_items.length === 1) {
591                return;
592            }
593            if (this.gallery_index === this.gallery_items.length - 1) {
594                this.gallery_index = 0;
595            } else {
596                this.gallery_index++;
597            }
598            this.options.onNavigate.call(this, 'right', this.gallery_index);
599            return this.navigateTo(this.gallery_index);
600        },
601        detectRemoteType: function(src, type) {
602            var video_id;
603            type = type || false;
604            if (type === 'image' || this.isImage(src)) {
605                this.options.type = 'image';
606                return this.preloadImage(src, true);
607            } else if (type === 'youtube' || (video_id = this.getYoutubeId(src))) {
608                this.options.type = 'youtube';
609                return this.showYoutubeVideo(video_id);
610            } else if (type === 'vimeo' || (video_id = this.getVimeoId(src))) {
611                this.options.type = 'vimeo';
612                return this.showVimeoVideo(video_id);
613            } else if (type === 'instagram' || (video_id = this.getInstagramId(src))) {
614                this.options.type = 'instagram';
615                return this.showInstagramVideo(video_id);
616            } else if (type === 'video') {
617                this.options.type = 'video';
618                return this.showVideoIframe(video_id);
619            } else {
620                this.options.type = 'url';
621                return this.loadRemoteContent(src);
622            }
623        },
624        updateTitleAndFooter: function() {
625            var caption, footer, header, title;
626            header = this.modal_content.find('.modal-header');
627            footer = this.modal_content.find('.modal-footer');
628            title = this.$element.data('title') || "";
629            caption = this.$element.data('footer') || "";
630            if (title || this.options.always_show_close) {
631                header.css('display', '').find('.modal-title').html(title || "&nbsp;");
632            } else {
633                header.css('display', 'none');
634            }
635            if (caption) {
636                footer.css('display', '').html(caption);
637            } else {
638                footer.css('display', 'none');
639            }
640            return this;
641        },
642        showLoading: function() {
643            this.lightbox_body.html('<div class="modal-loading">' + this.options.loadingMessage + '</div>');
644            return this;
645        },
646        showYoutubeVideo: function(id) {
647            var height, width;
648            width = this.checkDimensions(this.$element.data('width') || 1140);
649            height = width / (560 / 315);
650            return this.showVideoIframe('//www.youtube.com/embed/' + id + '?badge=0&autoplay=1&html5=1', width, height);
651        },
652        showVimeoVideo: function(id) {
653            var height, width;
654            width = this.checkDimensions(this.$element.data('width') || 1140);
655            height = width / (500 / 281);
656            return this.showVideoIframe(id + '?autoplay=1', width, height);
657        },
658        showInstagramVideo: function(id) {
659            var height, width;
660            width = this.checkDimensions(this.$element.data('width') || 612);
661            this.resize(width);
662            height = width + 80;
663            this.lightbox_body.html('<iframe width="' + width + '" height="' + height + '" src="' + this.addTrailingSlash(id) + 'embed/" frameborder="0" allowfullscreen></iframe>');
664            this.options.onContentLoaded.call(this);
665            if (this.modal_arrows) {
666                return this.modal_arrows.css('display', 'none');
667            }
668        },
669        showVideoIframe: function(url, width, height) {
670            height = height || width;
671            this.resize(width);
672            this.lightbox_body.html('<div class="embed-responsive embed-responsive-16by9"><iframe width="' + width + '" height="' + height + '" src="' + url + '" frameborder="0" allowfullscreen class="embed-responsive-item"></iframe></div>');
673            this.options.onContentLoaded.call(this);
674            if (this.modal_arrows) {
675                this.modal_arrows.css('display', 'none');
676            }
677            return this;
678        },
679        loadRemoteContent: function(url) {
680            var disableExternalCheck, width,
681                _this = this;
682            width = this.$element.data('width') || 560;
683            this.resize(width);
684            disableExternalCheck = this.$element.data('disableExternalCheck') || false;
685            if (!disableExternalCheck && !this.isExternal(url)) {
686                this.lightbox_body.load(url, $.proxy(function() {
687                    return _this.$element.trigger('loaded.bs.modal');
688                }));
689            } else {
690                this.lightbox_body.html('<iframe width="' + width + '" height="' + width + '" src="' + url + '" frameborder="0" allowfullscreen></iframe>');
691                this.options.onContentLoaded.call(this);
692            }
693            if (this.modal_arrows) {
694                this.modal_arrows.css('display', 'none');
695            }
696            return this;
697        },
698        isExternal: function(url) {
699            var match;
700            match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);
701            if (typeof match[1] === "string" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) {
702                return true;
703            }
704            if (typeof match[2] === "string" && match[2].length > 0 && match[2].replace(new RegExp(":(" + {
705                    "http:": 80,
706                    "https:": 443
707                }[location.protocol] + ")?$"), "") !== location.host) {
708                return true;
709            }
710            return false;
711        },
712        error: function(message) {
713            this.lightbox_body.html(message);
714            return this;
715        },
716        preloadImage: function(src, onLoadShowImage) {
717            var img,
718                _this = this;
719            img = new Image();
720            if ((onLoadShowImage == null) || onLoadShowImage === true) {
721                img.onload = function() {
722                    var image;
723                    var maxh = $(window).height() * 0.8; //% of screen height
724                    image = $('<img />');
725                    image.attr('src', img.src);
726                    image.attr('style', "max-height: " + maxh + "px");
727                    image.addClass('img-responsive');
728                    _this.lightbox_body.html(image);
729                    if (_this.modal_arrows) {
730                        _this.modal_arrows.css('display', 'block');
731                    }
732                    _this.resize(Math.min(maxh / img.height, 1) * img.width);
733                    return _this.options.onContentLoaded.call(_this);
734                };
735                img.onerror = function() {
736                    return _this.error('Failed to load image: ' + src);
737                };
738            }
739            img.src = src;
740            return img;
741        },
742        resize: function(width) {
743            var width_total;
744            width_total = width + this.border.left + this.padding.left + this.padding.right + this.border.right;
745            this.modal_dialog.css('width', 'auto').css('max-width', width_total);
746            this.lightbox_container.find('a').css('line-height', function() {
747                return $(this).parent().height() + 'px';
748            });
749            return this;
750        },
751        checkDimensions: function(width) {
752            var body_width, width_total;
753            width_total = width + this.border.left + this.padding.left + this.padding.right + this.border.right;
754            body_width = document.body.clientWidth;
755            if (width_total > body_width) {
756                width = this.modal_body.width();
757            }
758            return width;
759        },
760        close: function() {
761            return this.modal.modal('hide');
762        },
763        addTrailingSlash: function(url) {
764            if (url.substr(-1) !== '/') {
765                url += '/';
766            }
767            return url;
768        }
769    };
770
771    $.fn.ekkoLightbox = function(options) {
772        return this.each(function() {
773            var $this;
774            $this = $(this);
775            options = $.extend({
776                remote: $this.attr('data-remote') || $this.attr('href'),
777                gallery_parent_selector: $this.attr('data-parent'),
778                type: $this.attr('data-type')
779            }, options, $this.data());
780            new EkkoLightbox(this, options);
781            return this;
782        });
783    };
784
785    $.fn.ekkoLightbox.defaults = {
786        gallery_parent_selector: 'document.body',
787        left_arrow_class: '.ion-chevron-left',
788        right_arrow_class: '.ion-chevron-right',
789        directional_arrows: true,
790        type: null,
791        always_show_close: true,
792        loadingMessage: 'Loading...',
793        onShow: function() {},
794        onShown: function() {},
795        onHide: function() {},
796        onHidden: function() {},
797        onNavigate: function() {},
798        onContentLoaded: function() {}
799
800    };
801
802}).call(this);
803
804
805/**
806 * jquery-match-height master by @liabru
807 * http://brm.io/jquery-match-height/
808 * License: MIT
809 */
810
811;
812(function(factory) { // eslint-disable-line no-extra-semi
813    'use strict';
814    if (typeof define === 'function' && define.amd) {
815        // AMD
816        define(['jquery'], factory);
817    } else if (typeof module !== 'undefined' && module.exports) {
818        // CommonJS
819        module.exports = factory(require('jquery'));
820    } else {
821        // Global
822        factory(jQuery);
823    }
824})(function($) {
825    /*
826     *  internal
827     */
828
829    var _previousResizeWidth = -1,
830        _updateTimeout = -1;
831
832    /*
833     *  _parse
834     *  value parse utility function
835     */
836
837    var _parse = function(value) {
838        // parse value and convert NaN to 0
839        return parseFloat(value) || 0;
840    };
841
842    /*
843     *  _rows
844     *  utility function returns array of jQuery selections representing each row
845     *  (as displayed after float wrapping applied by browser)
846     */
847
848    var _rows = function(elements) {
849        var tolerance = 1,
850            $elements = $(elements),
851            lastTop = null,
852            rows = [];
853
854        // group elements by their top position
855        $elements.each(function() {
856            var $that = $(this),
857                top = $that.offset().top - _parse($that.css('margin-top')),
858                lastRow = rows.length > 0 ? rows[rows.length - 1] : null;
859
860            if (lastRow === null) {
861                // first item on the row, so just push it
862                rows.push($that);
863            } else {
864                // if the row top is the same, add to the row group
865                if (Math.floor(Math.abs(lastTop - top)) <= tolerance) {
866                    rows[rows.length - 1] = lastRow.add($that);
867                } else {
868                    // otherwise start a new row group
869                    rows.push($that);
870                }
871            }
872
873            // keep track of the last row top
874            lastTop = top;
875        });
876
877        return rows;
878    };
879
880    /*
881     *  _parseOptions
882     *  handle plugin options
883     */
884
885    var _parseOptions = function(options) {
886        var opts = {
887            byRow: true,
888            property: 'height',
889            target: null,
890            remove: false
891        };
892
893        if (typeof options === 'object') {
894            return $.extend(opts, options);
895        }
896
897        if (typeof options === 'boolean') {
898            opts.byRow = options;
899        } else if (options === 'remove') {
900            opts.remove = true;
901        }
902
903        return opts;
904    };
905
906    /*
907     *  matchHeight
908     *  plugin definition
909     */
910
911    var matchHeight = $.fn.matchHeight = function(options) {
912        var opts = _parseOptions(options);
913
914        // handle remove
915        if (opts.remove) {
916            var that = this;
917
918            // remove fixed height from all selected elements
919            this.css(opts.property, '');
920
921            // remove selected elements from all groups
922            $.each(matchHeight._groups, function(key, group) {
923                group.elements = group.elements.not(that);
924            });
925
926            // TODO: cleanup empty groups
927
928            return this;
929        }
930
931        if (this.length <= 1 && !opts.target) {
932            return this;
933        }
934
935        // keep track of this group so we can re-apply later on load and resize events
936        matchHeight._groups.push({
937            elements: this,
938            options: opts
939        });
940
941        // match each element's height to the tallest element in the selection
942        matchHeight._apply(this, opts);
943
944        return this;
945    };
946
947    /*
948     *  plugin global options
949     */
950
951    matchHeight.version = 'master';
952    matchHeight._groups = [];
953    matchHeight._throttle = 80;
954    matchHeight._maintainScroll = false;
955    matchHeight._beforeUpdate = null;
956    matchHeight._afterUpdate = null;
957    matchHeight._rows = _rows;
958    matchHeight._parse = _parse;
959    matchHeight._parseOptions = _parseOptions;
960
961    /*
962     *  matchHeight._apply
963     *  apply matchHeight to given elements
964     */
965
966    matchHeight._apply = function(elements, options) {
967        var opts = _parseOptions(options),
968            $elements = $(elements),
969            rows = [$elements];
970
971        // take note of scroll position
972        var scrollTop = $(window).scrollTop(),
973            htmlHeight = $('html').outerHeight(true);
974
975        // get hidden parents
976        var $hiddenParents = $elements.parents().filter(':hidden');
977
978        // cache the original inline style
979        $hiddenParents.each(function() {
980            var $that = $(this);
981            $that.data('style-cache', $that.attr('style'));
982        });
983
984        // temporarily must force hidden parents visible
985        $hiddenParents.css('display', 'block');
986
987        // get rows if using byRow, otherwise assume one row
988        if (opts.byRow && !opts.target) {
989
990            // must first force an arbitrary equal height so floating elements break evenly
991            $elements.each(function() {
992                var $that = $(this),
993                    display = $that.css('display');
994
995                // temporarily force a usable display value
996                if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {
997                    display = 'block';
998                }
999
1000                // cache the original inline style
1001                $that.data('style-cache', $that.attr('style'));
1002
1003                $that.css({
1004                    'display': display,
1005                    'padding-top': '0',
1006                    'padding-bottom': '0',
1007                    'margin-top': '0',
1008                    'margin-bottom': '0',
1009                    'border-top-width': '0',
1010                    'border-bottom-width': '0',
1011                    'height': '100px',
1012                    'overflow': 'hidden'
1013                });
1014            });
1015
1016            // get the array of rows (based on element top position)
1017            rows = _rows($elements);
1018
1019            // revert original inline styles
1020            $elements.each(function() {
1021                var $that = $(this);
1022                $that.attr('style', $that.data('style-cache') || '');
1023            });
1024        }
1025
1026        $.each(rows, function(key, row) {
1027            var $row = $(row),
1028                targetHeight = 0;
1029
1030            if (!opts.target) {
1031                // skip apply to rows with only one item
1032                if (opts.byRow && $row.length <= 1) {
1033                    $row.css(opts.property, '');
1034                    return;
1035                }
1036
1037                // iterate the row and find the max height
1038                $row.each(function() {
1039                    var $that = $(this),
1040                        style = $that.attr('style'),
1041                        display = $that.css('display');
1042
1043                    // temporarily force a usable display value
1044                    if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {
1045                        display = 'block';
1046                    }
1047
1048                    // ensure we get the correct actual height (and not a previously set height value)
1049                    var css = { 'display': display };
1050                    css[opts.property] = '';
1051                    $that.css(css);
1052
1053                    // find the max height (including padding, but not margin)
1054                    if ($that.outerHeight(false) > targetHeight) {
1055                        targetHeight = $that.outerHeight(false);
1056                    }
1057
1058                    // revert styles
1059                    if (style) {
1060                        $that.attr('style', style);
1061                    } else {
1062                        $that.css('display', '');
1063                    }
1064                });
1065            } else {
1066                // if target set, use the height of the target element
1067                targetHeight = opts.target.outerHeight(false);
1068            }
1069
1070            // iterate the row and apply the height to all elements
1071            $row.each(function() {
1072                var $that = $(this),
1073                    verticalPadding = 0;
1074
1075                // don't apply to a target
1076                if (opts.target && $that.is(opts.target)) {
1077                    return;
1078                }
1079
1080                // handle padding and border correctly (required when not using border-box)
1081                if ($that.css('box-sizing') !== 'border-box') {
1082        
1082            verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));
1083                    verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));
1084                }
1085
1086                // set the height (accounting for padding and border)
1087                $that.css(opts.property, (targetHeight - verticalPadding) + 'px');
1088            });
1089        });
1090
1091        // revert hidden parents
1092        $hiddenParents.each(function() {
1093            var $that = $(this);
1094            $that.attr('style', $that.data('style-cache') || null);
1095        });
1096
1097        // restore scroll position if enabled
1098        if (matchHeight._maintainScroll) {
1099            $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));
1100        }
1101
1102        return this;
1103    };
1104
1105    /*
1106     *  matchHeight._applyDataApi
1107     *  applies matchHeight to all elements with a data-match-height attribute
1108     */
1109
1110    matchHeight._applyDataApi = function() {
1111        var groups = {};
1112
1113        // generate groups by their groupId set by elements using data-match-height
1114        $('[data-match-height], [data-mh]').each(function() {
1115            var $this = $(this),
1116                groupId = $this.attr('data-mh') || $this.attr('data-match-height');
1117
1118            if (groupId in groups) {
1119                groups[groupId] = groups[groupId].add($this);
1120            } else {
1121                groups[groupId] = $this;
1122            }
1123        });
1124
1125        // apply matchHeight to each group
1126        $.each(groups, function() {
1127            this.matchHeight(true);
1128        });
1129    };
1130
1131    /*
1132     *  matchHeight._update
1133     *  updates matchHeight on all current groups with their correct options
1134     */
1135
1136    var _update = function(event) {
1137        if (matchHeight._beforeUpdate) {
1138            matchHeight._beforeUpdate(event, matchHeight._groups);
1139        }
1140
1141        $.each(matchHeight._groups, function() {
1142            matchHeight._apply(this.elements, this.options);
1143        });
1144
1145        if (matchHeight._afterUpdate) {
1146            matchHeight._afterUpdate(event, matchHeight._groups);
1147        }
1148    };
1149
1150    matchHeight._update = function(throttle, event) {
1151        // prevent update if fired from a resize event
1152        // where the viewport width hasn't actually changed
1153        // fixes an event looping bug in IE8
1154        if (event && event.type === 'resize') {
1155            var windowWidth = $(window).width();
1156            if (windowWidth === _previousResizeWidth) {
1157                return;
1158            }
1159            _previousResizeWidth = windowWidth;
1160        }
1161
1162        // throttle updates
1163        if (!throttle) {
1164            _update(event);
1165        } else if (_updateTimeout === -1) {
1166            _updateTimeout = setTimeout(function() {
1167                _update(event);
1168                _updateTimeout = -1;
1169            }, matchHeight._throttle);
1170        }
1171    };
1172
1173    /*
1174     *  bind events
1175     */
1176
1177    // apply on DOM ready event
1178    $(matchHeight._applyDataApi);
1179
1180    // update heights on load and resize events
1181    $(window).bind('load', function(event) {
1182        matchHeight._update(false, event);
1183    });
1184
1185    // throttled update heights on resize events
1186    $(window).bind('resize orientationchange', function(event) {
1187        matchHeight._update(true, event);
1188    });
1189
1190});
1191
1192
1193// VIDEO FILL AREA
1194// http://jsfiddle.net/4dgaurav/bZrWk/2/
1195// http://stackoverflow.com/questions/23248441/resizing-video-element-to-parent-div
1196
1197var min_w = 300; // minimum video width allowed
1198var vid_w_orig; // original video dimensions
1199var vid_h_orig;
1200
1201jQuery(function() { // runs after DOM has loaded
1202
1203    vid_w_orig = parseInt(jQuery('video').attr('width'));
1204    vid_h_orig = parseInt(jQuery('video').attr('height'));
1205    $('#debug').append("<p>DOM loaded</p>");
1206
1207    jQuery(window).resize(function() { resizeToCover(); });
1208    jQuery(window).trigger('resize');
1209});
1210
1211function resizeToCover() {
1212
1213    // set the video viewport to the window size
1214    jQuery('.apc.banner .video .video-player').width(jQuery(window).width());
1215    jQuery('.apc.banner .video .video-player').height(jQuery(window).height());
1216
1217    // use largest scale factor of horizontal/vertical
1218    var scale_h = jQuery(window).width() / vid_w_orig;
1219    var scale_v = jQuery(window).height() / vid_h_orig;
1220    var scale = scale_h > scale_v ? scale_h : scale_v;
1221
1222    // don't allow scaled width < minimum video width
vendor: 10,864 bytes, lines 1223-1422
1223    if (scale * vid_w_orig < min_w) { scale = min_w / vid_w_orig; };
1224
1225    // now scale the video
1226    jQuery('video').width(scale * vid_w_orig);
1227    jQuery('video').height(scale * vid_h_orig);
1228    // and center it by scrolling the video viewport
1229    jQuery('.apc.banner .video .video-player').scrollLeft((jQuery('video').width() - jQuery(window).width()) / 2);
1230    jQuery('.apc.banner .video .video-player').scrollTop((jQuery('video').height() - jQuery(window).height()) / 2);
1231};
1232
1233
1234
1235// WAYPOINTS
1236// Generated by CoffeeScript 1.6.2
1237/*!
1238jQuery Waypoints - v2.0.5
1239Copyright (c) 2011-2014 Caleb Troughton
1240Licensed under the MIT license.
1241https://github.com/imakewebthings/jquery-waypoints/blob/master/licenses.txt
1242*/
1243(function() {
1244    var t = [].indexOf || function(t) { for (var e = 0, n = this.length; e < n; e++) { if (e in this && this[e] === t) return e } return -1 },
1245        e = [].slice;
1246    (function(t, e) { if (typeof define === "function" && define.amd) { return define("waypoints", ["jquery"], function(n) { return e(n, t) }) } else { return e(t.jQuery, t) } })(window, function(n, r) {
1247        var i, o, l, s, f, u, c, a, h, d, p, y, v, w, g, m;
1248        i = n(r);
1249        a = t.call(r, "ontouchstart") >= 0;
1250        s = { horizontal: {}, vertical: {} };
1251        f = 1;
1252        c = {};
1253        u = "waypoints-context-id";
1254        p = "resize.waypoints";
1255        y = "scroll.waypoints";
1256        v = 1;
1257        w = "waypoints-waypoint-ids";
1258        g = "waypoint";
1259        m = "waypoints";
1260        o = function() {
1261            function t(t) {
1262                var e = this;
1263                this.$element = t;
1264                this.element = t[0];
1265                this.didResize = false;
1266                this.didScroll = false;
1267                this.id = "context" + f++;
1268                this.oldScroll = { x: t.scrollLeft(), y: t.scrollTop() };
1269                this.waypoints = { horizontal: {}, vertical: {} };
1270                this.element[u] = this.id;
1271                c[this.id] = this;
1272                t.bind(y, function() {
1273                    var t;
1274                    if (!(e.didScroll || a)) {
1275                        e.didScroll = true;
1276                        t = function() { e.doScroll(); return e.didScroll = false };
1277                        return r.setTimeout(t, n[m].settings.scrollThrottle)
1278                    }
1279                });
1280                t.bind(p, function() {
1281                    var t;
1282                    if (!e.didResize) {
1283                        e.didResize = true;
1284                        t = function() { n[m]("refresh"); return e.didResize = false };
1285                        return r.setTimeout(t, n[m].settings.resizeThrottle)
1286                    }
1287                })
1288            }
1289            t.prototype.doScroll = function() {
1290                var t, e = this;
1291                t = { horizontal: { newScroll: this.$element.scrollLeft(), oldScroll: this.oldScroll.x, forward: "right", backward: "left" }, vertical: { newScroll: this.$element.scrollTop(), oldScroll: this.oldScroll.y, forward: "down", backward: "up" } };
1292                if (a && (!t.vertical.oldScroll || !t.vertical.newScroll)) { n[m]("refresh") }
1293                n.each(t, function(t, r) {
1294                    var i, o, l;
1295                    l = [];
1296                    o = r.newScroll > r.oldScroll;
1297                    i = o ? r.forward : r.backward;
1298                    n.each(e.waypoints[t], function(t, e) { var n, i; if (r.oldScroll < (n = e.offset) && n <= r.newScroll) { return l.push(e) } else if (r.newScroll < (i = e.offset) && i <= r.oldScroll) { return l.push(e) } });
1299                    l.sort(function(t, e) { return t.offset - e.offset });
1300                    if (!o) { l.reverse() }
1301                    return n.each(l, function(t, e) { if (e.options.continuous || t === l.length - 1) { return e.trigger([i]) } })
1302                });
1303                return this.oldScroll = { x: t.horizontal.newScroll, y: t.vertical.newScroll }
1304            };
1305            t.prototype.refresh = function() {
1306                var t, e, r, i = this;
1307                r = n.isWindow(this.element);
1308                e = this.$element.offset();
1309                this.doScroll();
1310                t = { horizontal: { contextOffset: r ? 0 : e.left, contextScroll: r ? 0 : this.oldScroll.x, contextDimension: this.$element.width(), oldScroll: this.oldScroll.x, forward: "right", backward: "left", offsetProp: "left" }, vertical: { contextOffset: r ? 0 : e.top, contextScroll: r ? 0 : this.oldScroll.y, contextDimension: r ? n[m]("viewportHeight") : this.$element.height(), oldScroll: this.oldScroll.y, forward: "down", backward: "up", offsetProp: "top" } };
1311                return n.each(t, function(t, e) {
1312                    return n.each(i.waypoints[t], function(t, r) {
1313                        var i, o, l, s, f;
1314                        i = r.options.offset;
1315                        l = r.offset;
1316                        o = n.isWindow(r.element) ? 0 : r.$element.offset()[e.offsetProp];
1317                        if (n.isFunction(i)) { i = i.apply(r.element) } else if (typeof i === "string") { i = parseFloat(i); if (r.options.offset.indexOf("%") > -1) { i = Math.ceil(e.contextDimension * i / 100) } }
1318                        r.offset = o - e.contextOffset + e.contextScroll - i;
1319                        if (r.options.onlyOnScroll && l != null || !r.enabled) { return }
1320                        if (l !== null && l < (s = e.oldScroll) && s <= r.offset) { return r.trigger([e.backward]) } else if (l !== null && l > (f = e.oldScroll) && f >= r.offset) { return r.trigger([e.forward]) } else if (l === null && e.oldScroll >= r.offset) { return r.trigger([e.forward]) }
1321                    })
1322                })
1323            };
1324            t.prototype.checkEmpty = function() { if (n.isEmptyObject(this.waypoints.horizontal) && n.isEmptyObject(this.waypoints.vertical)) { this.$element.unbind([p, y].join(" ")); return delete c[this.id] } };
1325            return t
1326        }();
1327        l = function() {
1328            function t(t, e, r) {
1329                var i, o;
1330                if (r.offset === "bottom-in-view") {
1331                    r.offset = function() {
1332                        var t;
1333                        t = n[m]("viewportHeight");
1334                        if (!n.isWindow(e.element)) { t = e.$element.height() }
1335                        return t - n(this).outerHeight()
1336                    }
1337                }
1338                this.$element = t;
1339                this.element = t[0];
1340                this.axis = r.horizontal ? "horizontal" : "vertical";
1341                this.callback = r.handler;
1342                this.context = e;
1343                this.enabled = r.enabled;
1344                this.id = "waypoints" + v++;
1345                this.offset = null;
1346                this.options = r;
1347                e.waypoints[this.axis][this.id] = this;
1348                s[this.axis][this.id] = this;
1349                i = (o = this.element[w]) != null ? o : [];
1350                i.push(this.id);
1351                this.element[w] = i
1352            }
1353            t.prototype.trigger = function(t) { if (!this.enabled) { return } if (this.callback != null) { this.callback.apply(this.element, t) } if (this.options.triggerOnce) { return this.destroy() } };
1354            t.prototype.disable = function() { return this.enabled = false };
1355            t.prototype.enable = function() { this.context.refresh(); return this.enabled = true };
1356            t.prototype.destroy = function() {
1357                delete s[this.axis][this.id];
1358                delete this.context.waypoints[this.axis][this.id];
1359                return this.context.checkEmpty()
1360            };
1361            t.getWaypointsByElement = function(t) {
1362                var e, r;
1363                r = t[w];
1364                if (!r) { return [] }
1365                e = n.extend({}, s.horizontal, s.vertical);
1366                return n.map(r, function(t) { return e[t] })
1367            };
1368            return t
1369        }();
1370        d = {
1371            init: function(t, e) {
1372                var r;
1373                e = n.extend({}, n.fn[g].defaults, e);
1374                if ((r = e.handler) == null) { e.handler = t }
1375                this.each(function() {
1376                    var t, r, i, s;
1377                    t = n(this);
1378                    i = (s = e.context) != null ? s : n.fn[g].defaults.context;
1379                    if (!n.isWindow(i)) { i = t.closest(i) }
1380                    i = n(i);
1381                    r = c[i[0][u]];
1382                    if (!r) { r = new o(i) }
1383                    return new l(t, r, e)
1384                });
1385                n[m]("refresh");
1386                return this
1387            },
1388            disable: function() { return d._invoke.call(this, "disable") },
1389            enable: function() { return d._invoke.call(this, "enable") },
1390            destroy: function() { return d._invoke.call(this, "destroy") },
1391            prev: function(t, e) { return d._traverse.call(this, t, e, function(t, e, n) { if (e > 0) { return t.push(n[e - 1]) } }) },
1392            next: function(t, e) { return d._traverse.call(this, t, e, function(t, e, n) { if (e < n.length - 1) { return t.push(n[e + 1]) } }) },
1393            _traverse: function(t, e, i) {
1394                var o, l;
1395                if (t == null) { t = "vertical" }
1396                if (e == null) { e = r }
1397                l = h.aggregate(e);
1398                o = [];
1399                this.each(function() {
1400                    var e;
1401                    e = n.inArray(this, l[t]);
1402                    return i(o, e, l[t])
1403                });
1404                return this.pushStack(o)
1405            },
1406            _invoke: function(t) {
1407                this.each(function() {
1408                    var e;
1409                    e = l.getWaypointsByElement(this);
1410                    return n.each(e, function(e, n) { n[t](); return true })
1411                });
1412                return this
1413            }
1414        };
1415        n.fn[g] = function() {
1416            var t, r;
1417            r = arguments[0], t = 2 <= arguments.length ? e.call(arguments, 1) : [];
1418            if (d[r]) { return d[r].apply(this, t) } else if (n.isFunction(r)) { return d.init.apply(this, arguments) } else if (n.isPlainObject(r)) { return d.init.apply(this, [null, r]) } else if (!r) { return n.error("jQuery Waypoints needs a callback function or handler option.") } else { return n.error("The " + r + " method does not exist in jQuery Waypoints.") }
1419        };
1420        n.fn[g].defaults = { context: r, continuous: true, enabled: true, horizontal: false, offset: 0, triggerOnce: false };
1421        h = {
1422            refresh: function() { return n.each(c, function(t, e) { return e.refresh() }) },
1423            viewportHeight: function() { var t; return (t = r.innerHeight) != null ? t : i.height() },
1424            aggregate: function(t) {
1425                var e, r, i;
1426                e = s;
1427                if (t) { e = (i = c[n(t)[0][u]]) != null ? i.waypoints : void 0 }
1428                if (!e) { return [] }
1429                r = { horizontal: [], vertical: [] };
1430                n.each(r, function(t, i) {
1431                    n.each(e[t], function(t, e) { return i.push(e) });
1432                    i.sort(function(t, e) { return t.offset - e.offset });
1433                    r[t] = n.map(i, function(t) { return t.element });
1434                    return r[t] = n.unique(r[t])
1435                });
1436                return r
1437            },
1438            above: function(t) { if (t == null) { t = r } return h._filter(t, "vertical", function(t, e) { return e.offset <= t.oldScroll.y }) },
1439            below: function(t) { if (t == null) { t = r } return h._filter(t, "vertical", function(t, e) { return e.offset > t.oldScroll.y }) },
1440            left: function(t) { if (t == null) { t = r } return h._filter(t, "horizontal", function(t, e) { return e.offset <= t.oldScroll.x }) },
1441            right: function(t) { if (t == null) { t = r } return h._filter(t, "horizontal", function(t, e) { return e.offset > t.oldScroll.x }) },
1442            enable: function() { return h._invoke("enable") },
1443            disable: function() { return h._invoke("disable") },
1444            destroy: function() { return h._invoke("destroy") },
1445            extendFn: function(t, e) { return d[t] = e },
1446            _invoke: function(t) {
1447                var e;
1448                e = n.extend({}, s.vertical, s.horizontal);
1449                return n.each(e, function(e, n) { n[t](); return true })
1450            },
1451            _filter: function(t, e, r) {
1452                var i, o;
1453                i = c[n(t)[0][u]];
1454                if (!i) { return [] }
1455                o = [];
1456                n.each(i.waypoints[e], function(t, e) { if (r(i, e)) { return o.push(e) } });
1457                o.sort(function(t, e) { return t.offset - e.offset });
1458                return n.map(o, function(t) { return t.element })
1459            }
1460        };
1461        n[m] = function() {
1462            var t, n;
1463            n = arguments[0], t = 2 <= arguments.length ? e.call(arguments, 1) : [];
1464            if (h[n]) { return h[n].apply(null, t) } else { return h.aggregate.call(null, n) }
1465        };
1466        n[m].settings = { resizeThrottle: 100, scrollThrottle: 30 };
1467        return i.on("load.waypoints", function() { return n[m]("refresh") })
1468    })
1469}).call(this);
1470
1471
1472// LAZY IMAGE
1473// https://github.com/aFarkas/lazysizes
1474/*! lazysizes - v4.0.0-rc2 */
1475! function(a, b) {
1476    var c = b(a, a.document);
1477    a.lazySizes = c, "object" == typeof module && module.exports && (module.exports = c)
1478}(window, function(a, b) {
1479    "use strict";
1480    if (b.getElementsByClassName) {
1481        var c, d, e = b.documentElement,
1482            f = a.Date,
1483            g = a.HTMLPictureElement,
1484            h = "addEventListener",
1485            i = "getAttribute",
1486            j = a[h],
1487            k = a.setTimeout,
1488            l = a.requestAnimationFrame || k,
1489            m = a.requestIdleCallback,
1490            n = /^picture$/i,
1491            o = ["load", "error", "lazyincluded", "_lazyloaded"],
1492            p = {},
1493            q = Array.prototype.forEach,
1494            r = function(a, b) { return p[b] || (p[b] = new RegExp("(\\s|^)" + b + "(\\s|$)")), p[b].test(a[i]("class") || "") && p[b] },
1495            s = function(a, b) { r(a, b) || a.setAttribute("class", (a[i]("class") || "").trim() + " " + b) },
1496            t = function(a, b) {
1497                var c;
1498                (c = r(a, b)) && a.setAttribute("class", (a[i]("class") || "").replace(c, " "))
1499            },
1500            u = function(a, b, c) {
1501                var d = c ? h : "removeEventListener";
1502                c && u(a, b), o.forEach(function(c) { a[d](c, b) })
1503            },
1504            v = function(a, d, e, f, g) { var h = b.createEvent("CustomEvent"); return e || (e = {}), e.instance = c, h.initCustomEvent(d, !f, !g, e), a.dispatchEvent(h), h },
1505            w = function(b, c) { var e;!g && (e = a.picturefill || d.pf) ? e({ reevaluate: !0, elements: [b] }) : c && c.src && (b.src = c.src) },
1506            x = function(a, b) { return (getComputedStyle(a, null) || {})[b] },
1507            y = function(a, b, c) { for (c = c || a.offsetWidth; c < d.minSize && b && !a._lazysizesWidth;) c = b.offsetWidth, b = b.parentNode; return c },
1508            z = function() {
1509                var a, c, d = [],
1510                    e = [],
1511                    f = d,
1512                    g = function() {
1513                        var b = f;
1514                        for (f = d.length ? e : d, a = !0, c = !1; b.length;) b.shift()();
1515                        a = !1
1516                    },
1517                    h = function(d, e) { a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g))) };
1518                return h._lsFlush = g, h
1519            }(),
1520            A = function(a, b) {
1521                return b ? function() { z(a) } : function() {
1522                    var b = this,
1523                        c = arguments;
1524                    z(function() { a.apply(b, c) })
1525                }
1526            },
1527            B = function(a) {
1528                var b, c = 0,
1529                    d = 125,
1530                    e = 666,
1531                    g = e,
1532                    h = function() { b = !1, c = f.now(), a() },
1533                    i = m ? function() { m(h, { timeout: g }), g !== e && (g = e) } : A(function() { k(h) }, !0);
1534                return function(a) {
1535                    var e;
1536                    (a = a === !0) && (g = 44), b || (b = !0, e = d - (f.now() - c), 0 > e && (e = 0), a || 9 > e && m ? i() : k(i, e))
1537                }
1538            },
1539            C = function(a) {
1540                var b, c, d = 99,
1541                    e = function() { b = null, a() },
1542                    g = function() {
1543                        var a = f.now() - c;
1544                        d > a ? k(g, d - a) : (m || e)(e)
1545                    };
1546                return function() { c = f.now(), b || (b = k(g, d)) }
1547            },
1548            D = function() {
1549                var g, l, m, o, p, y, D, F, G, H, I, J, K, L, M = /^img$/i,
1550                    N = /^iframe$/i,
1551                    O = "onscroll" in a && !/glebot/.test(navigator.userAgent),
1552                    P = 0,
1553                    Q = 0,
1554                    R = 0,
1555                    S = -1,
1556                    T = function(a) { R--, a && a.target && u(a.target, T), (!a || 0 > R || !a.target) && (R = 0) },
1557                    U = function(a, c) {
1558                        var d, f = a,
1559                            g = "hidden" == x(b.body, "visibility") || "hidden" != x(a, "visibility");
1560                        for (F -= c, I += c, G -= c, H += c; g && (f = f.offsetParent) && f != b.body && f != e;) g = (x(f, "opacity") || 1) > 0, g && "visible" != x(f, "overflow") && (d = f.getBoundingClientRect(), g = H >
1560 d.left && G < d.right && I > d.top - 1 && F < d.bottom + 1);
1561                        return g
1562                    },
1563                    V = function() {
1564                        var a, f, h, j, k, m, n, p, q, r = c.elements;
1565                        if ((o = d.loadMode) && 8 > R && (a = r.length)) {
1566                            f = 0, S++, null == K && ("expand" in d || (d.expand = e.clientHeight > 500 && e.clientWidth > 500 ? 500 : 370), J = d.expand, K = J * d.expFactor), K > Q && 1 > R && S > 2 && o > 2 && !b.hidden ? (Q = K, S = 0) : Q = o > 1 && S > 1 && 6 > R ? J : P;
1567                            for (; a > f; f++)
1568                                if (r[f] && !r[f]._lazyRace)
1569                                    if (O)
1570                                        if ((p = r[f][i]("data-expand")) && (m = 1 * p) || (m = Q), q !== m && (y = innerWidth + m * L, D = innerHeight + m, n = -1 * m, q = m), h = r[f].getBoundingClientRect(), (I = h.bottom) >= n && (F = h.top) <= D && (H = h.right) >= n * L && (G = h.left) <= y && (I || H || G || F) && (d.loadHidden || "hidden" != x(r[f], "visibility")) && (l && 3 > R && !p && (3 > o || 4 > S) || U(r[f], m))) { if (ba(r[f]), k = !0, R > 9) break } else !k && l && !j && 4 > R && 4 > S && o > 2 && (g[0] || d.preloadAfterLoad) && (g[0] || !p && (I || H || G || F || "auto" != r[f][i](d.sizesAttr))) && (j = g[0] || r[f]);
1571                            else ba(r[f]);
1572                            j && !k && ba(j)
1573                        }
1574                    },
1575                    W = B(V),
1576                    X = function(a) { s(a.target, d.loadedClass), t(a.target, d.loadingClass), u(a.target, Z), v(a.target, "lazyloaded") },
1577                    Y = A(X),
1578                    Z = function(a) { Y({ target: a.target }) },
1579                    $ = function(a, b) { try { a.contentWindow.location.replace(b) } catch (c) { a.src = b } },
1580                    _ = function(a) {
1581                        var b, c = a[i](d.srcsetAttr);
1582                        (b = d.customMedia[a[i]("data-media") || a[i]("media")]) && a.setAttribute("media", b), c && a.setAttribute("srcset", c)
1583                    },
1584                    aa = A(function(a, b, c, e, f) {
1585                        var g, h, j, l, o, p;
1586                        (o = v(a, "lazybeforeunveil", b)).defaultPrevented || (e && (c ? s(a, d.autosizesClass) : a.setAttribute("sizes", e)), h = a[i](d.srcsetAttr), g = a[i](d.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || "")), p = b.firesLoad || "src" in a && (h || g || l), o = { target: a }, p && (u(a, T, !0), clearTimeout(m), m = k(T, 2500), s(a, d.loadingClass), u(a, Z, !0)), l && q.call(j.getElementsByTagName("source"), _), h ? a.setAttribute("srcset", h) : g && !l && (N.test(a.nodeName) ? $(a, g) : a.src = g), f && (h || l) && w(a, { src: g })), a._lazyRace && delete a._lazyRace, t(a, d.lazyClass), z(function() {
1587                            (!p || a.complete && a.naturalWidth > 1) && (p ? T(o) : R--, X(o))
1588                        }, !0)
1589                    }),
1590                    ba = function(a) {
1591                        var b, c = M.test(a.nodeName),
1592                            e = c && (a[i](d.sizesAttr) || a[i]("sizes")),
1593                            f = "auto" == e;
1594                        (!f && l || !c || !a[i]("src") && !a.srcset || a.complete || r(a, d.errorClass)) && (b = v(a, "lazyunveilread").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, R++, aa(a, b, f, e, c))
1595                    },
1596                    ca = function() {
1597                        if (!l) {
1598                            if (f.now() - p < 999) return void k(ca, 999);
1599                            var a = C(function() { d.loadMode = 3, W() });
1600                            l = !0, d.loadMode = 3, W(), j("scroll", function() { 3 == d.loadMode && (d.loadMode = 2), a() }, !0)
1601                        }
1602                    };
1603                return { _: function() { p = f.now(), c.elements = b.getElementsByClassName(d.lazyClass), g = b.getElementsByClassName(d.lazyClass + " " + d.preloadClass), L = d.hFac, j("scroll", W, !0), j("resize", W, !0), a.MutationObserver ? new MutationObserver(W).observe(e, { childList: !0, subtree: !0, attributes: !0 }) : (e[h]("DOMNodeInserted", W, !0), e[h]("DOMAttrModified", W, !0), setInterval(W, 999)), j("hashchange", W, !0), ["focus", "mouseover", "click", "load", "transitionend", "animationend", "webkitAnimationEnd"].forEach(function(a) { b[h](a, W, !0) }), /d$|^c/.test(b.readyState) ? ca() : (j("load", ca), b[h]("DOMContentLoaded", W), k(ca, 2e4)), c.elements.length ? (V(), z._lsFlush()) : W() }, checkElems: W, unveil: ba }
1604            }(),
1605            E = function() {
1606                var a, c = A(function(a, b, c, d) {
1607                        var e, f, g;
1608                        if (a._lazysizesWidth = d, d += "px", a.setAttribute("sizes", d), n.test(b.nodeName || ""))
1609                            for (e = b.getElementsByTagName("source"), f = 0, g = e.length; g > f; f++) e[f].setAttribute("sizes", d);
1610                        c.detail.dataAttr || w(a, c.detail)
1611                    }),
1612                    e = function(a, b, d) {
1613                        var e, f = a.parentNode;
1614                        f && (d = y(a, f, d), e = v(a, "lazybeforesizes", { width: d, dataAttr: !!b }), e.defaultPrevented || (d = e.detail.width, d && d !== a._lazysizesWidth && c(a, f, e, d)))
1615                    },
1616                    f = function() {
1617                        var b, c = a.length;
1618                        if (c)
1619                            for (b = 0; c > b; b++) e(a[b])
1620                    },
1621                    g = C(f);
1622                return { _: function() { a = b.getElementsByClassName(
1622d.autosizesClass), j("resize", g) }, checkElems: g, updateElem: e }
1623            }(),
1624            F = function() { F.i || (F.i = !0, E._(), D._()) };
1625        return function() {
1626            var b, c = { lazyClass: "lazyload", loadedClass: "lazyloaded", loadingClass: "lazyloading", preloadClass: "lazypreload", errorClass: "lazyerror", autosizesClass: "lazyautosizes", srcAttr: "data-src", srcsetAttr: "data-srcset", sizesAttr: "data-sizes", minSize: 40, customMedia: {}, init: !0, expFactor: 1.5, hFac: .8, loadMode: 2, loadHidden: !0 };
1627            d = a.lazySizesConfig || a.lazysizesConfig || {};
1628            for (b in c) b in d || (d[b] = c[b]);
1629            a.lazySizesConfig = d, k(function() { d.init && F() })
1630        }(), c = { cfg: d, autoSizer: E, loader: D, init: F, uP: w, aC: s, rC: t, hC: r, fire: v, gW: y, rAF: z }
1631    }
1632});
1633
1634
1635// BACKGROUND IMAGE EXTENSION
1636// https://github.com/aFarkas/lazysizes/tree/gh-pages/plugins/unveilhooks
1637/*! lazysizes - v4.0.0-rc2 */
1638! function(a, b) {
1639    var c = function() { b(a.lazySizes), a.removeEventListener("lazyunveilread", c, !0) };
1640    b = b.bind(null, a, a.document), "object" == typeof module && module.exports ? b(require("lazysizes")) : a.lazySizes ? c() : a.addEventListener("lazyunveilread", c, !0)
1641}(window, function(a, b, c) {
1642    "use strict";
1643
1644    function d(a, c) {
1645        if (!g[a]) {
1646            var d = b.createElement(c ? "link" : "script"),
1647                e = b.getElementsByTagName("script")[0];
1648            c ? (d.rel = "stylesheet", d.href = a) : d.src = a, g[a] = !0, g[d.src || d.href] = !0, e.parentNode.insertBefore(d, e)
1649        }
1650    }
1651    var e, f, g = {};
1652    b.addEventListener && (f = /\(|\)|\s|'/, e = function(a, c) {
1653        var d = b.createElement("img");
1654        d.onload = function() { d.onload = null, d.onerror = null, d = null, c() }, d.onerror = d.onload, d.src = a, d && d.complete && d.onload && d.onload()
1655    }, addEventListener("lazybeforeunveil", function(a) {
1656        if (a.detail.instance == c) {
1657            var b, g, h, i;
1658            a.defaultPrevented || ("none" == a.target.preload && (a.target.preload = "auto"), b = a.target.getAttribute("data-link"), b && d(b, !0), b = a.target.getAttribute("data-script"), b && d(b), b = a.target.getAttribute("data-require"), b && (c.cfg.requireJs ? c.cfg.requireJs([b]) : d(b)), h = a.target.getAttribute("data-bg"), h && (a.detail.firesLoad = !0, g = function() { a.target.style.backgroundImage = "url(" + (f.test(h) ? JSON.stringify(h) : h) + ")", a.detail.firesLoad = !1, c.fire(a.target, "_lazyloaded", {}, !0, !0) }, e(h, g)), i = a.target.getAttribute("data-poster"), i && (a.detail.firesLoad = !0, g = function() { a.target.poster = i, a.detail.firesLoad = !1, c.fire(a.target, "_lazyloaded", {}, !0, !0) }, e(i, g)))
1659        }
1660    }, !1))
1661});

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.