PageSourceSearch

https://sprec.com/wp-content/themes/sandp/assets/js/app.min.js?ver=5.0.29

js sprec.com collected 2026-09-28 12:36:24 UTC 141,093 bytes, 3,528 lines download raw bytes

1(function(window, document, undefined) {
2    "use strict";
3    var docEl = document.documentElement;
4    var util = {
5        create: function(el) {
6            return document.createElement(el);
7        },
8        old: !!/(Android\s(1.|2.))|(Silk\/1.)/i.test(navigator.userAgent),
9        pfx: function() {
10            var style = document.createElement("dummy").style;
11            var prefixes = [ "Webkit", "Moz", "O", "ms" ];
12            var memory = {};
13            return function(prop) {
14                if (typeof memory[prop] === "undefined") {
15                    var ucProp = prop.charAt(0).toUpperCase() + prop.substr(1), props = (prop + " " + prefixes.join(ucProp + " ") + ucProp).split(" ");
16                    memory[prop] = null;
17                    for (var i in props) {
18                        if (style[props[i]] !== undefined) {
19                            memory[prop] = props[i];
20                            break;
21                        }
22                    }
23                }
24                return memory[prop];
25            };
26        }()
27    };
28    var Feature = {
29        css3Dtransform: function() {
30            var test = !util.old && util.pfx("perspective") !== null;
31            return !!test;
32        }(),
33        cssTransform: function() {
34            var test = !util.old && util.pfx("transformOrigin") !== null;
35            return !!test;
36        }(),
37        cssTransition: function() {
38            var test = util.pfx("transition") !== null;
39            return !!test;
40        }(),
41        cssFlexbox: function() {
42            var test = util.pfx("flexBasis") !== null;
43            return !!test;
44        }(),
45        addEventListener: !!window.addEventListener,
46        querySelectorAll: !!document.querySelectorAll,
47        matchMedia: !!window.matchMedia,
48        deviceMotion: "DeviceMotionEvent" in window,
49        deviceOrientation: "DeviceOrientationEvent" in window,
50        contextMenu: "contextMenu" in docEl && "HTMLMenuItemElement" in window,
51        classList: "classList" in docEl,
52        placeholder: "placeholder" in util.create("input"),
53        localStorage: function() {
54            var test = "x";
55            try {
56                localStorage.setItem(test, test);
57                localStorage.removeItem(test);
58                return true;
59            } catch (err) {
60                return false;
61            }
62        }(),
63        historyAPI: window.history && "pushState" in window.history,
64        serviceWorker: "serviceWorker" in navigator,
65        viewportUnit: function(el) {
66            try {
67                el.style.width = "1vw";
68                var test = el.style.width !== "";
69                return !!test;
70            } catch (err) {
71                return false;
72            }
73        }(util.create("dummy")),
74        remUnit: function(el) {
75            try {
76                el.style.width = "1rem";
77                var test = el.style.width !== "";
78                return !!test;
79            } catch (err) {
80                return false;
81            }
82        }(util.create("dummy")),
83        canvas: function(el) {
84            return !!(el.getContext && el.getContext("2d"));
85        }(util.create("canvas")),
86        svg: !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect,
87        webGL: function(el) {
88            try {
89                return !!(window.WebGLRenderingContext && (el.getContext("webgl") || el.getContext("experimental-webgl")));
90            } catch (err) {
91                return false;
92            }
93        }(util.create("canvas")),
94        cors: "XMLHttpRequest" in window && "withCredentials" in new XMLHttpRequest(),
95        touch: !!("ontouchstart" in window || window.navigator && window.navigator.msPointerEnabled && window.MSGesture || window.DocumentTouch && document instanceof DocumentTouch),
96        async: "async" in util.create("script"),
97        defer: "defer" in util.create("script"),
98        geolocation: "geolocation" in navigator,
99        srcset: "srcset" in util.create("img"),
100        sizes: "sizes" in util.create("img"),
101        pictureElement: "HTMLPictureElement" in window,
102        testAll: function() {
103            var classes = " js";
104            for (var test in this) {
105                if (test !== "testAll" && test !== "constructor" && this[test]) {
106                    classes += " " + test;
107                }
108            }
109            docEl.className += classes.toLowerCase();
110        }
111    };
112    window.feature = Feature;
113})(window, document);
114
115(function() {
116    var __indexOf = [].indexOf || function(item) {
117        for (var i = 0, l = this.length; i < l; i++) {
118            if (i in this && this[i] === item) return i;
119        }
120        return -1;
121    }, __slice = [].slice;
122    (function(root, factory) {
123        if (typeof define === "function" && define.amd) {
124            return define("waypoints", [ "jquery" ], function($) {
125                return factory($, root);
126            });
127        } else {
128            return factory(root.jQuery, root);
129        }
130    })(window, function($, window) {
131        var $w, Context, Waypoint, allWaypoints, contextCounter, contextKey, contexts, isTouch, jQMethods, methods, resizeEvent, scrollEvent, waypointCounter, waypointKey, wp, wps;
132        $w = $(window);
133        isTouch = __indexOf.call(window, "ontouchstart") >= 0;
134        allWaypoints = {
135            horizontal: {},
136            vertical: {}
137        };
138        contextCounter = 1;
139        contexts = {};
140        contextKey = "waypoints-context-id";
141        resizeEvent = "resize.waypoints";
142        scrollEvent = "scroll.waypoints";
143        waypointCounter = 1;
144        waypointKey = "waypoints-waypoint-ids";
145        wp = "waypoint";
146        wps = "waypoints";
147        Context = function() {
148            function Context($element) {
149                var _this = this;
150                this.$element = $element;
151                this.element = $element[0];
152                this.didResize = false;
vendor: 18,029 bytes, lines 153-557
153                this.didScroll = false;
154                this.id = "context" + contextCounter++;
155                this.oldScroll = {
156                    x: $element.scrollLeft(),
157                    y: $element.scrollTop()
158                };
159                this.waypoints = {
160                    horizontal: {},
161                    vertical: {}
162                };
163                this.element[contextKey] = this.id;
164                contexts[this.id] = this;
165                $element.bind(scrollEvent, function() {
166                    var scrollHandler;
167                    if (!(_this.didScroll || isTouch)) {
168                        _this.didScroll = true;
169                        scrollHandler = function() {
170                            _this.doScroll();
171                            return _this.didScroll = false;
172                        };
173                        return window.setTimeout(scrollHandler, $[wps].settings.scrollThrottle);
174                    }
175                });
176                $element.bind(resizeEvent, function() {
177                    var resizeHandler;
178                    if (!_this.didResize) {
179                        _this.didResize = true;
180                        resizeHandler = function() {
181                            $[wps]("refresh");
182                            return _this.didResize = false;
183                        };
184                        return window.setTimeout(resizeHandler, $[wps].settings.resizeThrottle);
185                    }
186                });
187            }
188            Context.prototype.doScroll = function() {
189                var axes, _this = this;
190                axes = {
191                    horizontal: {
192                        newScroll: this.$element.scrollLeft(),
193                        oldScroll: this.oldScroll.x,
194                        forward: "right",
195                        backward: "left"
196                    },
197                    vertical: {
198                        newScroll: this.$element.scrollTop(),
199                        oldScroll: this.oldScroll.y,
200                        forward: "down",
201                        backward: "up"
202                    }
203                };
204                if (isTouch && (!axes.vertical.oldScroll || !axes.vertical.newScroll)) {
205                    $[wps]("refresh");
206                }
207                $.each(axes, function(aKey, axis) {
208                    var direction, isForward, triggered;
209                    triggered = [];
210                    isForward = axis.newScroll > axis.oldScroll;
211                    direction = isForward ? axis.forward : axis.backward;
212                    $.each(_this.waypoints[aKey], function(wKey, waypoint) {
213                        var _ref, _ref1;
214                        if (axis.oldScroll < (_ref = waypoint.offset) && _ref <= axis.newScroll) {
215                            return triggered.push(waypoint);
216                        } else if (axis.newScroll < (_ref1 = waypoint.offset) && _ref1 <= axis.oldScroll) {
217                            return triggered.push(waypoint);
218                        }
219                    });
220                    triggered.sort(function(a, b) {
221                        return a.offset - b.offset;
222                    });
223                    if (!isForward) {
224                        triggered.reverse();
225                    }
226                    return $.each(triggered, function(i, waypoint) {
227                        if (waypoint.options.continuous || i === triggered.length - 1) {
228                            return waypoint.trigger([ direction ]);
229                        }
230                    });
231                });
232                return this.oldScroll = {
233                    x: axes.horizontal.newScroll,
234                    y: axes.vertical.newScroll
235                };
236            };
237            Context.prototype.refresh = function() {
238                var axes, cOffset, isWin, _this = this;
239                isWin = $.isWindow(this.element);
240                cOffset = this.$element.offset();
241                this.doScroll();
242                axes = {
243                    horizontal: {
244                        contextOffset: isWin ? 0 : cOffset.left,
245                        contextScroll: isWin ? 0 : this.oldScroll.x,
246                        contextDimension: this.$element.width(),
247                        oldScroll: this.oldScroll.x,
248                        forward: "right",
249                        backward: "left",
250                        offsetProp: "left"
251                    },
252                    vertical: {
253                        contextOffset: isWin ? 0 : cOffset.top,
254                        contextScroll: isWin ? 0 : this.oldScroll.y,
255                        contextDimension: isWin ? $[wps]("viewportHeight") : this.$element.height(),
256                        oldScroll: this.oldScroll.y,
257                        forward: "down",
258                        backward: "up",
259                        offsetProp: "top"
260                    }
261                };
262                return $.each(axes, function(aKey, axis) {
263                    return $.each(_this.waypoints[aKey], function(i, waypoint) {
264                        var adjustment, elementOffset, oldOffset, _ref, _ref1;
265                        adjustment = waypoint.options.offset;
266                        oldOffset = waypoint.offset;
267                        elementOffset = $.isWindow(waypoint.element) ? 0 : waypoint.$element.offset()[axis.offsetProp];
268                        if ($.isFunction(adjustment)) {
269                            adjustment = adjustment.apply(waypoint.element);
270                        } else if (typeof adjustment === "string") {
271                            adjustment = parseFloat(adjustment);
272                            if (waypoint.options.offset.indexOf("%") > -1) {
273                                adjustment = Math.ceil(axis.contextDimension * adjustment / 100);
274                            }
275                        }
276                        waypoint.offset = elementOffset - axis.contextOffset + axis.contextScroll - adjustment;
277                        if (waypoint.options.onlyOnScroll && oldOffset != null || !waypoint.enabled) {
278                            return;
279                        }
280                        if (oldOffset !== null && (oldOffset < (_ref = axis.oldScroll) && _ref <= waypoint.offset)) {
281                            return waypoint.trigger([ axis.backward ]);
282                        } else if (oldOffset !== null && (oldOffset > (_ref1 = axis.oldScroll) && _ref1 >= waypoint.offset)) {
283                            return waypoint.trigger([ axis.forward ]);
284                        } else if (oldOffset === null && axis.oldScroll >= waypoint.offset) {
285                            return waypoint.trigger([ axis.forward ]);
286                        }
287                    });
288                });
289            };
290            Context.prototype.checkEmpty = function() {
291                if ($.isEmptyObject(this.waypoints.horizontal) && $.isEmptyObject(this.waypoints.vertical)) {
292                    this.$element.unbind([ resizeEvent, scrollEvent ].join(" "));
293                    return delete contexts[this.id];
294                }
295            };
296            return Context;
297        }();
298        Waypoint = function() {
299            function Waypoint($element, context, options) {
300                var idList, _ref;
301                if (options.offset === "bottom-in-view") {
302                    options.offset = function() {
303                        var contextHeight;
304                        contextHeight = $[wps]("viewportHeight");
305                        if (!$.isWindow(context.element)) {
306                            contextHeight = context.$element.height();
307                        }
308                        return contextHeight - $(this).outerHeight();
309                    };
310                }
311                this.$element = $element;
312                this.element = $element[0];
313                this.axis = options.horizontal ? "horizontal" : "vertical";
314                this.callback = options.handler;
315                this.context = context;
316                this.enabled = options.enabled;
317                this.id = "waypoints" + waypointCounter++;
318                this.offset = null;
319                this.options = options;
320                context.waypoints[this.axis][this.id] = this;
321                allWaypoints[this.axis][this.id] = this;
322                idList = (_ref = this.element[waypointKey]) != null ? _ref : [];
323                idList.push(this.id);
324                this.element[waypointKey] = idList;
325            }
326            Waypoint.prototype.trigger = function(args) {
327                if (!this.enabled) {
328                    return;
329                }
330                if (this.callback != null) {
331                    this.callback.apply(this.element, args);
332                }
333                if (this.options.triggerOnce) {
334                    return this.destroy();
335                }
336            };
337            Waypoint.prototype.disable = function() {
338                return this.enabled = false;
339            };
340            Waypoint.prototype.enable = function() {
341                this.context.refresh();
342                return this.enabled = true;
343            };
344            Waypoint.prototype.destroy = function() {
345                delete allWaypoints[this.axis][this.id];
346                delete this.context.waypoints[this.axis][this.id];
347                return this.context.checkEmpty();
348            };
349            Waypoint.getWaypointsByElement = function(element) {
350                var all, ids;
351                ids = element[waypointKey];
352                if (!ids) {
353                    return [];
354                }
355                all = $.extend({}, allWaypoints.horizontal, allWaypoints.vertical);
356                return $.map(ids, function(id) {
357                    return all[id];
358                });
359            };
360            return Waypoint;
361        }();
362        methods = {
363            init: function(f, options) {
364                var _ref;
365                options = $.extend({}, $.fn[wp].defaults, options);
366                if ((_ref = options.handler) == null) {
367                    options.handler = f;
368                }
369                this.each(function() {
370                    var $this, context, contextElement, _ref1;
371                    $this = $(this);
372                    contextElement = (_ref1 = options.context) != null ? _ref1 : $.fn[wp].defaults.context;
373                    if (!$.isWindow(contextElement)) {
374                        contextElement = $this.closest(contextElement);
375                    }
376                    contextElement = $(contextElement);
377                    context = contexts[contextElement[0][contextKey]];
378                    if (!context) {
379                        context = new Context(contextElement);
380                    }
381                    return new Waypoint($this, context, options);
382                });
383                $[wps]("refresh");
384                return this;
385            },
386            disable: function() {
387                return methods._invoke.call(this, "disable");
388            },
389            enable: function() {
390                return methods._invoke.call(this, "enable");
391            },
392            destroy: function() {
393                return methods._invoke.call(this, "destroy");
394            },
395            prev: function(axis, selector) {
396                return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
397                    if (index > 0) {
398                        return stack.push(waypoints[index - 1]);
399                    }
400                });
401            },
402            next: function(axis, selector) {
403                return methods._traverse.call(this, axis, selector, function(stack, index, waypoints) {
404                    if (index < waypoints.length - 1) {
405                        return stack.push(waypoints[index + 1]);
406                    }
407                });
408            },
409            _traverse: function(axis, selector, push) {
410                var stack, waypoints;
411                if (axis == null) {
412                    axis = "vertical";
413                }
414                if (selector == null) {
415                    selector = window;
416                }
417                waypoints = jQMethods.aggregate(selector);
418                stack = [];
419                this.each(function() {
420                    var index;
421                    index = $.inArray(this, waypoints[axis]);
422                    return push(stack, index, waypoints[axis]);
423                });
424                return this.pushStack(stack);
425            },
426            _invoke: function(method) {
427                this.each(function() {
428                    var waypoints;
429                    waypoints = Waypoint.getWaypointsByElement(this);
430                    return $.each(waypoints, function(i, waypoint) {
431                        waypoint[method]();
432                        return true;
433                    });
434                });
435                return this;
436            }
437        };
438        $.fn[wp] = function() {
439            var args, method;
440            method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
441            if (methods[method]) {
442                return methods[method].apply(this, args);
443            } else if ($.isFunction(method)) {
444                return methods.init.apply(this, arguments);
445            } else if ($.isPlainObject(method)) {
446                return methods.init.apply(this, [ null, method ]);
447            } else if (!method) {
448                return $.error("jQuery Waypoints needs a callback function or handler option.");
449            } else {
450                return $.error("The " + method + " method does not exist in jQuery Waypoints.");
451            }
452        };
453        $.fn[wp].defaults = {
454            context: window,
455            continuous: true,
456            enabled: true,
457            horizontal: false,
458            offset: 0,
459            triggerOnce: false
460        };
461        jQMethods = {
462            refresh: function() {
463                return $.each(contexts, function(i, context) {
464                    return context.refresh();
465                });
466            },
467            viewportHeight: function() {
468                var _ref;
469                return (_ref = window.innerHeight) != null ? _ref : $w.height();
470            },
471            aggregate: function(contextSelector) {
472                var collection, waypoints, _ref;
473                collection = allWaypoints;
474                if (contextSelector) {
475                    collection = (_ref = contexts[$(contextSelector)[0][contextKey]]) != null ? _ref.waypoints : void 0;
476                }
477                if (!collection) {
478                    return [];
479                }
480                waypoints = {
481                    horizontal: [],
482                    vertical: []
483                };
484                $.each(waypoints, function(axis, arr) {
485                    $.each(collection[axis], function(key, waypoint) {
486                        return arr.push(waypoint);
487                    });
488                    arr.sort(function(a, b) {
489                        return a.offset - b.offset;
490                    });
491                    waypoints[axis] = $.map(arr, function(waypoint) {
492                        return waypoint.element;
493                    });
494                    return waypoints[axis] = $.unique(waypoints[axis]);
495                });
496                return waypoints;
497            },
498            above: function(contextSelector) {
499                if (contextSelector == null) {
500                    contextSelector = window;
501                }
502                return jQMethods._filter(contextSelector, "vertical", function(context, waypoint) {
503                    return waypoint.offset <= context.oldScroll.y;
504                });
505            },
506            below: function(contextSelector) {
507                if (contextSelector == null) {
508                    contextSelector = window;
509                }
510                return jQMethods._filter(contextSelector, "vertical", function(context, waypoint) {
511                    return waypoint.offset > context.oldScroll.y;
512                });
513            },
514            left: function(contextSelector) {
515                if (contextSelector == null) {
516                    contextSelector = window;
517                }
518                return jQMethods._filter(contextSelector, "horizontal", function(context, waypoint) {
519                    return waypoint.offset <= context.oldScroll.x;
520                });
521            },
522            right: function(contextSelector) {
523                if (contextSelector == null) {
524                    contextSelector = window;
525                }
526                return jQMethods._filter(contextSelector, "horizontal", function(context, waypoint) {
527                    return waypoint.offset > context.oldScroll.x;
528                });
529            },
530            enable: function() {
531                return jQMethods._invoke("enable");
532            },
533            disable: function() {
534                return jQMethods._invoke("disable");
535            },
536            destroy: function() {
537                return jQMethods._invoke("destroy");
538            },
539            extendFn: function(methodName, f) {
540                return methods[methodName] = f;
541            },
542            _invoke: function(method) {
543                var waypoints;
544                waypoints = $.extend({}, allWaypoints.vertical, allWaypoints.horizontal);
545                return $.each(waypoints, function(key, waypoint) {
546                    waypoint[method]();
547                    return true;
548                });
549            },
550            _filter: function(selector, axis, test) {
551                var context, waypoints;
552                context = contexts[$(selector)[0][contextKey]];
553                if (!context) {
554                    return [];
555                }
556                waypoints = [];
557                $.each(context.waypoints[axis], function(i, wayp
557oint) {
558                    if (test(context, waypoint)) {
559                        return waypoints.push(waypoint);
560                    }
561                });
562                waypoints.sort(function(a, b) {
563                    return a.offset - b.offset;
564                });
565                return $.map(waypoints, function(waypoint) {
566                    return waypoint.element;
567                });
568            }
569        };
570        $[wps] = function() {
571            var args, method;
572            method = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
573            if (jQMethods[method]) {
574                return jQMethods[method].apply(null, args);
575            } else {
576                return jQMethods.aggregate.call(null, method);
577            }
578        };
579        $[wps].settings = {
580            resizeThrottle: 100,
581            scrollThrottle: 30
582        };
583        return $w.on("load.waypoints", function() {
584            return $[wps]("refresh");
585        });
586    });
587}).call(this);
588
589(function(factory) {
590    "use strict";
591    if (typeof define === "function" && define.amd) {
592        define([ "jquery" ], factory);
593    } else if (typeof exports !== "undefined") {
594        module.exports = factory(require("jquery"));
595    } else {
596        factory(jQuery);
597    }
598})(function($) {
599    "use strict";
600    var Slick = window.Slick || {};
601    Slick = function() {
602        var instanceUid = 0;
603        function Slick(element, settings) {
604            var _ = this, dataSettings;
605            _.defaults = {
606                accessibility: true,
607                adaptiveHeight: false,
608                appendArrows: $(element),
609                appendDots: $(element),
610                arrows: true,
611                asNavFor: null,
612                prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
613                nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
614                autoplay: false,
615                autoplaySpeed: 3e3,
616                centerMode: false,
617                centerPadding: "50px",
618                cssEase: "ease",
619                customPaging: function(slider, i) {
620                    return '<button type="button" data-role="none" role="button" aria-required="false" tabindex="0">' + (i + 1) + "</button>";
621                },
622                dots: false,
623                dotsClass: "slick-dots",
624                draggable: true,
625                easing: "linear",
626                edgeFriction: .35,
627                fade: false,
628                focusOnSelect: false,
629                infinite: true,
630                initialSlide: 0,
631                lazyLoad: "ondemand",
632                mobileFirst: false,
633                pauseOnHover: true,
634                pauseOnDotsHover: false,
635                respondTo: "window",
636                responsive: null,
637                rows: 1,
638                rtl: false,
639                slide: "",
640                slidesPerRow: 1,
641                slidesToShow: 1,
642                slidesToScroll: 1,
643                speed: 500,
644                swipe: true,
645                swipeToSlide: false,
646                touchMove: true,
647                touchThreshold: 5,
648                useCSS: true,
649                variableWidth: false,
650                vertical: false,
651                verticalSwiping: false,
652                waitForAnimate: true,
653                zIndex: 1e3
654            };
655            _.initials = {
656                animating: false,
657                dragging: false,
658                autoPlayTimer: null,
659                currentDirection: 0,
660                currentLeft: null,
661                currentSlide: 0,
662                direction: 1,
663                $dots: null,
664                listWidth: null,
665                listHeight: null,
666                loadIndex: 0,
667                $nextArrow: null,
668                $prevArrow: null,
669                slideCount: null,
670                slideWidth: null,
671                $slideTrack: null,
672                $slides: null,
673                sliding: false,
674                slideOffset: 0,
675                swipeLeft: null,
676                $list: null,
677                touchObject: {},
678                transformsEnabled: false,
vendor: 5,593 bytes, lines 679-817
679                unslicked: false
680            };
681            $.extend(_, _.initials);
682            _.activeBreakpoint = null;
683            _.animType = null;
684            _.animProp = null;
685            _.breakpoints = [];
686            _.breakpointSettings = [];
687            _.cssTransitions = false;
688            _.hidden = "hidden";
689            _.paused = false;
690            _.positionProp = null;
691            _.respondTo = null;
692            _.rowCount = 1;
693            _.shouldClick = true;
694            _.$slider = $(element);
695            _.$slidesCache = null;
696            _.transformType = null;
697            _.transitionType = null;
698            _.visibilityChange = "visibilitychange";
699            _.windowWidth = 0;
700            _.windowTimer = null;
701            dataSettings = $(element).data("slick") || {};
702            _.options = $.extend({}, _.defaults, dataSettings, settings);
703            _.currentSlide = _.options.initialSlide;
704            _.originalSettings = _.options;
705            if (typeof document.mozHidden !== "undefined") {
706                _.hidden = "mozHidden";
707                _.visibilityChange = "mozvisibilitychange";
708            } else if (typeof document.webkitHidden !== "undefined") {
709                _.hidden = "webkitHidden";
710                _.visibilityChange = "webkitvisibilitychange";
711            }
712            _.autoPlay = $.proxy(_.autoPlay, _);
713            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
714            _.changeSlide = $.proxy(_.changeSlide, _);
715            _.clickHandler = $.proxy(_.clickHandler, _);
716            _.selectHandler = $.proxy(_.selectHandler, _);
717            _.setPosition = $.proxy(_.setPosition, _);
718            _.swipeHandler = $.proxy(_.swipeHandler, _);
719            _.dragHandler = $.proxy(_.dragHandler, _);
720            _.keyHandler = $.proxy(_.keyHandler, _);
721            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
722            _.instanceUid = instanceUid++;
723            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
724            _.registerBreakpoints();
725            _.init(true);
726            _.checkResponsive(true);
727        }
728        return Slick;
729    }();
730    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
731        var _ = this;
732        if (typeof index === "boolean") {
733            addBefore = index;
734            index = null;
735        } else if (index < 0 || index >= _.slideCount) {
736            return false;
737        }
738        _.unload();
739        if (typeof index === "number") {
740            if (index === 0 && _.$slides.length === 0) {
741                $(markup).appendTo(_.$slideTrack);
742            } else if (addBefore) {
743                $(markup).insertBefore(_.$slides.eq(index));
744            } else {
745                $(markup).insertAfter(_.$slides.eq(index));
746            }
747        } else {
748            if (addBefore === true) {
749                $(markup).prependTo(_.$slideTrack);
750            } else {
751                $(markup).appendTo(_.$slideTrack);
752            }
753        }
754        _.$slides = _.$slideTrack.children(this.options.slide);
755        _.$slideTrack.children(this.options.slide).detach();
756        _.$slideTrack.append(_.$slides);
757        _.$slides.each(function(index, element) {
758            $(element).attr("data-slick-index", index);
759        });
760        _.$slidesCache = _.$slides;
761        _.reinit();
762    };
763    Slick.prototype.animateHeight = function() {
764        var _ = this;
765        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
766            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
767            _.$list.animate({
768                height: targetHeight
769            }, _.options.speed);
770        }
771    };
772    Slick.prototype.animateSlide = function(targetLeft, callback) {
773        var animProps = {}, _ = this;
774        _.animateHeight();
775        if (_.options.rtl === true && _.options.vertical === false) {
776            targetLeft = -targetLeft;
777        }
778        if (_.transformsEnabled === false) {
779            if (_.options.vertical === false) {
780                _.$slideTrack.animate({
781                    left: targetLeft
782                }, _.options.speed, _.options.easing, callback);
783            } else {
784                _.$slideTrack.animate({
785                    top: targetLeft
786                }, _.options.speed, _.options.easing, callback);
787            }
788        } else {
789            if (_.cssTransitions === false) {
790                if (_.options.rtl === true) {
791                    _.currentLeft = -_.currentLeft;
792                }
793                $({
794                    animStart: _.currentLeft
795                }).animate({
796                    animStart: targetLeft
797                }, {
798                    duration: _.options.speed,
799                    easing: _.options.easing,
800                    step: function(now) {
801                        now = Math.ceil(now);
802                        if (_.options.vertical === false) {
803                            animProps[_.animType] = "translate(" + now + "px, 0px)";
804                            _.$slideTrack.css(animProps);
805                        } else {
806                            animProps[_.animType] = "translate(0px," + now + "px)";
807                            _.$slideTrack.css(animProps);
808                        }
809                    },
810                    complete: function() {
811                        if (callback) {
812                            callback.call();
813                        }
814                    }
815                });
816            } else {
817                _.applyTransition();
818                targetLeft = Math.ceil(targetLeft);
819                if (_.options.vertical === false) {
820                    animProps[_.animType] = "translate3d(" + targetLeft + "px, 0px, 0px)";
821                } else {
822                    animProps[_.animType] = "translate3d(0px," + targetLeft + "px, 0px)";
823                }
824                _.$slideTrack.css(animProps);
825                if (callback) {
826                    setTimeout(function() {
827                        _.disableTransition();
828                        callback.call();
829                    }, _.options.speed);
830                }
831            }
832        }
833    };
834    Slick.prototype.asNavFor = function(index) {
835        var _ = this, asNavFor = _.options.asNavFor;
836        if (asNavFor && asNavFor !== null) {
837            asNavFor = $(asNavFor).not(_.$slider);
838        }
839        if (asNavFor !== null && typeof asNavFor === "object") {
840            asNavFor.each(function() {
841                var target = $(this).slick("getSlick");
842                if (!target.unslicked) {
843                    target.slideHandler(index, true);
844                }
845            });
846        }
847    };
848    Slick.prototype.applyTransition = function(slide) {
849        var _ = this, transition = {};
850        if (_.options.fade === false) {
851            transition[_.transitionType] = _.transformType + " " + _.options.speed + "ms " + _.options.cssEase;
852        } else {
853            transition[_.transitionType] = "opacity " + _.options.speed + "ms " + _.options.cssEase;
854        }
855        if (_.options.fade === false) {
856            _.$slideTrack.css(transition);
857        } else {
858            _.$slides.eq(slide).css(transition);
859        }
860    };
861    Slick.prototype.autoPlay = function() {
862        var _ = this;
863        if (_.autoPlayTimer) {
864            clearInterval(_.autoPlayTimer);
865        }
866        if (_.slideCount > _.options.slidesToShow && _.paused !== true) {
867            _.autoPlayTimer = setInterval(_.autoPlayIterator, _.options.autoplaySpeed);
868        }
869    };
870    Slick.prototype.autoPlayClear = function() {
871        var _ = this;
872        if (_.autoPlayTimer) {
873            clearInterval(_.autoPlayTimer);
874        }
875    };
876    Slick.prototype.autoPlayIterator = function() {
877        var _ = this;
878        if (_.options.infinite === false) {
879            if (_.direction === 1) {
880                if (_.currentSlide + 1 === _.slideCount - 1) {
881                    _.direction = 0;
882                }
883                _.slideHandler(_.currentSlide + _.options.slidesToScroll);
884            } else {
885                if (_.currentSlide - 1 === 0) {
886                    _.direction = 1;
887                }
888                _.slideHandler(_.currentSlide - _.options.slidesToScroll);
889            }
890        } else {
891            _.slideHandler(_.currentSlide + _.options.slidesToScroll);
892        }
893    };
894    Slick.prototype.buildArrows = function() {
895        var _ = this;
896        if (_.options.arrows === true) {
897            _.$prevArrow = $(_.options.prevArrow).addClass("slick-arrow");
898            _.$nextArrow = $(_.options.nextArrow).addClass("slick-arrow");
899            if (_.slideCount > _.options.slidesToShow) {
900                _.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex");
901                _.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex");
902                if (_.htmlExpr.test(_.options.prevArrow)) {
903                    _.$prevArrow.prependTo(_.options.appendArrows);
904                }
905                if (_.htmlExpr.test(_.options.nextArrow)) {
906                    _.$nextArrow.appendTo(_.options.appendArrows);
907                }
908                if (_.options.infinite !== true) {
909                    _.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true");
910                }
911            } else {
912                _.$prevArrow.add(_.$nextArrow).addClass("slick-hidden").attr({
913                    "aria-disabled": "true",
914                    tabindex: "-1"
915                });
916            }
917        }
918    };
919    Slick.prototype.buildDots = function() {
920        var _ = this, i, dotString;
921        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
922            dotString = '<ul class="' + _.options.dotsClass + '">';
923            for (i = 0; i <= _.getDotCount(); i += 1) {
924                dotString += "<li>" + _.options.customPaging.call(this, _, i) + "</li>";
925            }
926            dotString += "</ul>";
927            _.$dots = $(dotString).appendTo(_.options.appendDots);
928            _.$dots.find("li").first().addClass("slick-active").attr("aria-hidden", "false");
929        }
930    };
931    Slick.prototype.buildOut = function() {
932        var _ = this;
933        _.$slides = _.$slider.children(_.options.slide + ":not(.slick-cloned)").addClass("slick-slide");
934        _.slideCount = _.$slides.length;
935        _.$slides.each(function(index, element) {
936            $(element).attr("data-slick-index", index).data("originalStyling", $(element).attr("style") || "");
937        });
938        _.$slidesCache = _.$slides;
939        _.$slider.addClass("slick-slider");
940        _.$slideTrack = _.slideCount === 0 ? $('<div class="slick-track"/>').appendTo(_.$slider) : _.$slides.wrapAll('<div class="slick-track"/>').parent();
941        _.$list = _.$slideTrack.wrap('<div aria-live="polite" class="slick-list"/>').parent();
942        _.$slideTrack.css("opacity", 0);
943        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
vendor: 12,919 bytes, lines 944-1240
944            _.options.slidesToScroll = 1;
945        }
946        $("img[data-lazy]", _.$slider).not("[src]").addClass("slick-loading");
947        _.setupInfinite();
948        _.buildArrows();
949        _.buildDots();
950        _.updateDots();
951        _.setSlideClasses(typeof _.currentSlide === "number" ? _.currentSlide : 0);
952        if (_.options.draggable === true) {
953            _.$list.addClass("draggable");
954        }
955    };
956    Slick.prototype.buildRows = function() {
957        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides, slidesPerSection;
958        newSlides = document.createDocumentFragment();
959        originalSlides = _.$slider.children();
960        if (_.options.rows > 1) {
961            slidesPerSection = _.options.slidesPerRow * _.options.rows;
962            numOfSlides = Math.ceil(originalSlides.length / slidesPerSection);
963            for (a = 0; a < numOfSlides; a++) {
964                var slide = document.createElement("div");
965                for (b = 0; b < _.options.rows; b++) {
966                    var row = document.createElement("div");
967                    for (c = 0; c < _.options.slidesPerRow; c++) {
968                        var target = a * slidesPerSection + (b * _.options.slidesPerRow + c);
969                        if (originalSlides.get(target)) {
970                            row.appendChild(originalSlides.get(target));
971                        }
972                    }
973                    slide.appendChild(row);
974                }
975                newSlides.appendChild(slide);
976            }
977            _.$slider.html(newSlides);
978            _.$slider.children().children().children().css({
979                width: 100 / _.options.slidesPerRow + "%",
980                display: "inline-block"
981            });
982        }
983    };
984    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
985        var _ = this, breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
986        var sliderWidth = _.$slider.width();
987        var windowWidth = window.innerWidth || $(window).width();
988        if (_.respondTo === "window") {
989            respondToWidth = windowWidth;
990        } else if (_.respondTo === "slider") {
991            respondToWidth = sliderWidth;
992        } else if (_.respondTo === "min") {
993            respondToWidth = Math.min(windowWidth, sliderWidth);
994        }
995        if (_.options.responsive && _.options.responsive.length && _.options.responsive !== null) {
996            targetBreakpoint = null;
997            for (breakpoint in _.breakpoints) {
998                if (_.breakpoints.hasOwnProperty(breakpoint)) {
999                    if (_.originalSettings.mobileFirst === false) {
1000                        if (respondToWidth < _.breakpoints[breakpoint]) {
1001                            targetBreakpoint = _.breakpoints[breakpoint];
1002                        }
1003                    } else {
1004                        if (respondToWidth > _.breakpoints[breakpoint]) {
1005                            targetBreakpoint = _.breakpoints[breakpoint];
1006                        }
1007                    }
1008                }
1009            }
1010            if (targetBreakpoint !== null) {
1011                if (_.activeBreakpoint !== null) {
1012                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
1013                        _.activeBreakpoint = targetBreakpoint;
1014                        if (_.breakpointSettings[targetBreakpoint] === "unslick") {
1015                            _.unslick(targetBreakpoint);
1016                        } else {
1017                            _.options = $.extend({}, _.originalSettings, _.breakpointSettings[targetBreakpoint]);
1018                            if (initial === true) {
1019                                _.currentSlide = _.options.initialSlide;
1020                            }
1021                            _.refresh(initial);
1022                        }
1023                        triggerBreakpoint = targetBreakpoint;
1024                    }
1025                } else {
1026                    _.activeBreakpoint = targetBreakpoint;
1027                    if (_.breakpointSettings[targetBreakpoint] === "unslick") {
1028                        _.unslick(targetBreakpoint);
1029                    } else {
1030                        _.options = $.extend({}, _.originalSettings, _.breakpointSettings[targetBreakpoint]);
1031                        if (initial === true) {
1032                            _.currentSlide = _.options.initialSlide;
1033                        }
1034                        _.refresh(initial);
1035                    }
1036                    triggerBreakpoint = targetBreakpoint;
1037                }
1038            } else {
1039                if (_.activeBreakpoint !== null) {
1040                    _.activeBreakpoint = null;
1041                    _.options = _.originalSettings;
1042                    if (initial === true) {
1043                        _.currentSlide = _.options.initialSlide;
1044                    }
1045                    _.refresh(initial);
1046                    triggerBreakpoint = targetBreakpoint;
1047                }
1048            }
1049            if (!initial && triggerBreakpoint !== false) {
1050                _.$slider.trigger("breakpoint", [ _, triggerBreakpoint ]);
1051            }
1052        }
1053    };
1054    Slick.prototype.changeSlide = function(event, dontAnimate) {
1055        var _ = this, $target = $(event.target), indexOffset, slideOffset, unevenOffset;
1056        if ($target.is("a")) {
1057            event.preventDefault();
1058        }
1059        if (!$target.is("li")) {
1060            $target = $target.closest("li");
1061        }
1062        unevenOffset = _.slideCount % _.options.slidesToScroll !== 0;
1063        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
1064        switch (event.data.message) {
1065          case "previous":
1066            slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
1067            if (_.slideCount > _.options.slidesToShow) {
1068                _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
1069            }
1070            break;
1071
1072          case "next":
1073            slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
1074            if (_.slideCount > _.options.slidesToShow) {
1075                _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
1076            }
1077            break;
1078
1079          case "index":
1080            var index = event.data.index === 0 ? 0 : event.data.index || $target.index() * _.options.slidesToScroll;
1081            _.slideHandler(_.checkNavigable(index), false, dontAnimate);
1082            $target.children().trigger("focus");
1083            break;
1084
1085          default:
1086            return;
1087        }
1088    };
1089    Slick.prototype.checkNavigable = function(index) {
1090        var _ = this, navigables, prevNavigable;
1091        navigables = _.getNavigableIndexes();
1092        prevNavigable = 0;
1093        if (index > navigables[navigables.length - 1]) {
1094            index = navigables[navigables.length - 1];
1095        } else {
1096            for (var n in navigables) {
1097                if (index < navigables[n]) {
1098                    index = prevNavigable;
1099                    break;
1100                }
1101                prevNavigable = navigables[n];
1102            }
1103        }
1104        return index;
1105    };
1106    Slick.prototype.cleanUpEvents = function() {
1107        var _ = this;
1108        if (_.options.dots && _.$dots !== null) {
1109            $("li", _.$dots).off("click.slick", _.changeSlide);
1110            if (_.options.pauseOnDotsHover === true && _.options.autoplay === true) {
1111                $("li", _.$dots).off("mouseenter.slick", $.proxy(_.setPaused, _, true)).off("mouseleave.slick", $.proxy(_.setPaused, _, false));
1112            }
1113        }
1114        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1115            _.$prevArrow && _.$prevArrow.off("click.slick", _.changeSlide);
1116            _.$nextArrow && _.$nextArrow.off("click.slick", _.changeSlide);
1117        }
1118        _.$list.off("touchstart.slick mousedown.slick", _.swipeHandler);
1119        _.$list.off("touchmove.slick mousemove.slick", _.swipeHandler);
1120        _.$list.off("touchend.slick mouseup.slick", _.swipeHandler);
1121        _.$list.off("touchcancel.slick mouseleave.slick", _.swipeHandler);
1122        _.$list.off("click.slick", _.clickHandler);
1123        $(document).off(_.visibilityChange, _.visibility);
1124        _.$list.off("mouseenter.slick", $.proxy(_.setPaused, _, true));
1125        _.$list.off("mouseleave.slick", $.proxy(_.setPaused, _, false));
1126        if (_.options.accessibility === true) {
1127            _.$list.off("keydown.slick", _.keyHandler);
1128        }
1129        if (_.options.focusOnSelect === true) {
1130            $(_.$slideTrack).children().off("click.slick", _.selectHandler);
1131        }
1132        $(window).off("orientationchange.slick.slick-" + _.instanceUid, _.orientationChange);
1133        $(window).off("resize.slick.slick-" + _.instanceUid, _.resize);
1134        $("[draggable!=true]", _.$slideTrack).off("dragstart", _.preventDefault);
1135        $(window).off("load.slick.slick-" + _.instanceUid, _.setPosition);
1136        $(document).off("ready.slick.slick-" + _.instanceUid, _.setPosition);
1137    };
1138    Slick.prototype.cleanUpRows = function() {
1139        var _ = this, originalSlides;
1140        if (_.options.rows > 1) {
1141            originalSlides = _.$slides.children().children();
1142            originalSlides.removeAttr("style");
1143            _.$slider.html(originalSlides);
1144        }
1145    };
1146    Slick.prototype.clickHandler = function(event) {
1147        var _ = this;
1148        if (_.shouldClick === false) {
1149            event.stopImmediatePropagation();
1150            event.stopPropagation();
1151            event.preventDefault();
1152        }
1153    };
1154    Slick.prototype.destroy = function(refresh) {
1155        var _ = this;
1156        _.autoPlayClear();
1157        _.touchObject = {};
1158        _.cleanUpEvents();
1159        $(".slick-cloned", _.$slider).detach();
1160        if (_.$dots) {
1161            _.$dots.remove();
1162        }
1163        if (_.options.arrows === true) {
1164            if (_.$prevArrow && _.$prevArrow.length) {
1165                _.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", "");
1166                if (_.htmlExpr.test(_.options.prevArrow)) {
1167                    _.$prevArrow.remove();
1168                }
1169            }
1170            if (_.$nextArrow && _.$nextArrow.length) {
1171                _.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", "");
1172                if (_.htmlExpr.test(_.options.nextArrow)) {
1173                    _.$nextArrow.remove();
1174                }
1175            }
1176        }
1177        if (_.$slides) {
1178            _.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() {
1179                $(this).attr("style", $(this).data("originalStyling"));
1180            });
1181            _.$slideTrack.children(this.options.slide).detach();
1182            _.$slideTrack.detach();
1183            _.$list.detach();
1184            _.$slider.append(_.$slides);
1185        }
1186        _.cleanUpRows();
1187        _.$slider.removeClass("slick-slider");
1188        _.$slider.removeClass("slick-initialized");
1189        _.unslicked = true;
1190        if (!refresh) {
1191            _.$slider.trigger("destroy", [ _ ]);
1192        }
1193    };
1194    Slick.prototype.disableTransition = function(slide) {
1195        var _ = this, transition = {};
1196        transition[_.transitionType] = "";
1197        if (_.options.fade === false) {
1198            _.$slideTrack.css(transition);
1199        } else {
1200            _.$slides.eq(slide).css(transition);
1201        }
1202    };
1203    Slick.prototype.fadeSlide = function(slideIndex, callback) {
1204        var _ = this;
1205        if (_.cssTransitions === false) {
1206            _.$slides.eq(slideIndex).css({
1207                zIndex: _.options.zIndex
1208            });
1209            _.$slides.eq(slideIndex).animate({
1210                opacity: 1
1211            }, _.options.speed, _.options.easing, callback);
1212        } else {
1213            _.applyTransition(slideIndex);
1214            _.$slides.eq(slideIndex).css({
1215                opacity: 1,
1216                zIndex: _.options.zIndex
1217            });
1218            if (callback) {
1219                setTimeout(function() {
1220                    _.disableTransition(slideIndex);
1221                    callback.call();
1222                }, _.options.speed);
1223            }
1224        }
1225    };
1226    Slick.prototype.fadeSlideOut = function(slideIndex) {
1227        var _ = this;
1228        if (_.cssTransitions === false) {
1229            _.$slides.eq(slideIndex).animate({
1230                opacity: 0,
1231                zIndex: _.options.zIndex - 2
1232            }, _.options.speed, _.options.easing);
1233        } else {
1234            _.applyTransition(slideIndex);
1235            _.$slides.eq(slideIndex).css({
1236                opacity: 0,
1237                zIndex: _.options.zIndex - 2
1238            });
1239        }
1240    };
1241    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
1242        var _ = this;
1243        if (filter !== null) {
1244            _.unload();
1245            _.$slideTrack.children(this.options.slide).detach();
1246            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
1247            _.reinit();
1248        }
1249    };
1250    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
1251        var _ = this;
1252        return _.currentSlide;
1253    };
1254    Slick.prototype.getDotCount = function() {
1255        var _ = this;
1256        var breakPoint = 0;
1257        var counter = 0;
1258        var pagerQty = 0;
1259        if (_.options.infinite === true) {
1260            while (breakPoint < _.slideCount) {
1261                ++pagerQty;
1262                breakPoint = counter + _.options.slidesToShow;
1263                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1264            }
1265        } else if (_.options.centerMode === true) {
1266            pagerQty = _.slideCount;
1267        } else {
1268            while (breakPoint < _.slideCount) {
1269                ++pagerQty;
1270                breakPoint = counter + _.options.slidesToShow;
1271                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1272            }
1273        }
1274        return pagerQty - 1;
1275    };
1276    Slick.prototype.getLeft = function(slideIndex) {
1277        var _ = this, targetLeft, verticalHeight, verticalOffset = 0, targetSlide;
1278        _.slideOffset = 0;
1279        verticalHeight = _.$slides.first().outerHeight(true);
1280        if (_.options.infinite === true) {
1281            if (_.slideCount > _.options.slidesToShow) {
1282                _.slideOffset = _.slideWidth * _.options.slidesToShow * -1;
1283                verticalOffset = verticalHeight * _.options.slidesToShow * -1;
1284            }
1285            if (_.slideCount % _.options.slidesToScroll !== 0) {
1286                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
1287                    if (slideIndex > _.slideCount) {
1288                        _.slideOffset = (_.options.slidesToShow - (sl
1288ideIndex - _.slideCount)) * _.slideWidth * -1;
1289                        verticalOffset = (_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight * -1;
1290                    } else {
1291                        _.slideOffset = _.slideCount % _.options.slidesToScroll * _.slideWidth * -1;
1292                        verticalOffset = _.slideCount % _.options.slidesToScroll * verticalHeight * -1;
1293                    }
1294                }
1295            }
1296        } else {
1297            if (slideIndex + _.options.slidesToShow > _.slideCount) {
1298                _.slideOffset = (slideIndex + _.options.slidesToShow - _.slideCount) * _.slideWidth;
1299                verticalOffset = (slideIndex + _.options.slidesToShow - _.slideCount) * verticalHeight;
1300            }
1301        }
1302        if (_.slideCount <= _.options.slidesToShow) {
1303            _.slideOffset = 0;
1304            verticalOffset = 0;
1305        }
1306        if (_.options.centerMode === true && _.options.infinite === true) {
1307            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
1308        } else if (_.options.centerMode === true) {
1309            _.slideOffset = 0;
1310            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
1311        }
1312        if (_.options.vertical === false) {
1313            targetLeft = slideIndex * _.slideWidth * -1 + _.slideOffset;
1314        } else {
1315            targetLeft = slideIndex * verticalHeight * -1 + verticalOffset;
1316        }
1317        if (_.options.variableWidth === true) {
1318            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
1319                targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex);
1320            } else {
1321                targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex + _.options.slidesToShow);
1322            }
1323            targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
1324            if (_.options.centerMode === true) {
1325                if (_.options.infinite === false) {
1326                    targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex);
1327                } else {
1328                    targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex + _.options.slidesToShow + 1);
1329                }
1330                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
1331                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
1332            }
1333        }
1334        return targetLeft;
1335    };
1336    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
1337        var _ = this;
1338        return _.options[option];
1339    };
1340    Slick.prototype.getNavigableIndexes = function() {
1341        var _ = this, breakPoint = 0, counter = 0, indexes = [], max;
1342        if (_.options.infinite === false) {
1343            max = _.slideCount;
1344        } else {
1345            breakPoint = _.options.slidesToScroll * -1;
1346            counter = _.options.slidesToScroll * -1;
1347            max = _.slideCount * 2;
1348        }
1349        while (breakPoint < max) {
1350            indexes.push(breakPoint);
1351            breakPoint = counter + _.options.slidesToScroll;
1352            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1353        }
1354        return indexes;
1355    };
1356    Slick.prototype.getSlick = function() {
1357        return this;
1358    };
1359    Slick.prototype.getSlideCount = function() {
1360        var _ = this, slidesTraversed, swipedSlide, centerOffset;
1361        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;
1362        if (_.options.swipeToSlide === true) {
1363            _.$slideTrack.find(".slick-slide").each(function(index, slide) {
1364                if (slide.offsetLeft - centerOffset + $(slide).outerWidth() / 2 > _.swipeLeft * -1) {
1365                    swipedSlide = slide;
1366                    return false;
1367                }
1368            });
1369            slidesTraversed = Math.abs($(swipedSlide).attr("data-slick-index") - _.currentSlide) || 1;
1370            return slidesTraversed;
1371        } else {
1372            return _.options.slidesToScroll;
1373        }
1374    };
1375    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
1376        var _ = this;
1377        _.changeSlide({
1378            data: {
1379                message: "index",
1380                index: parseInt(slide)
1381            }
1382        }, dontAnimate);
1383    };
1384    Slick.prototype.init = function(creation) {
1385        var _ = this;
1386        if (!$(_.$slider).hasClass("slick-initialized")) {
1387            $(_.$slider).addClass("slick-initialized");
1388            _.buildRows();
1389            _.buildOut();
1390            _.setProps();
1391            _.startLoad();
1392            _.loadSlider();
1393            _.initializeEvents();
1394            _.updateArrows();
1395            _.updateDots();
1396        }
1397        if (creation) {
1398            _.$slider.trigger("init", [ _ ]);
1399        }
1400        if (_.options.accessibility === true) {
1401            _.initADA();
1402        }
1403    };
1404    Slick.prototype.initArrowEvents = function() {
1405        var _ = this;
1406        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1407            _.$prevArrow.on("click.slick", {
1408                message: "previous"
1409            }, _.changeSlide);
1410            _.$nextArrow.on("click.slick", {
1411                message: "next"
1412            }, _.changeSlide);
1413        }
1414    };
1415    Slick.prototype.initDotEvents = function() {
1416        var _ = this;
1417        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1418            $("li", _.$dots).on("click.slick", {
1419                message: "index"
1420            }, _.changeSlide);
1421        }
1422        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.options.autoplay === true) {
1423            $("li", _.$dots).on("mouseenter.slick", $.proxy(_.setPaused, _, true)).on("mouseleave.
vendor: 5,888 bytes, lines 1423-1569
1423slick", $.proxy(_.setPaused, _, false));
1424        }
1425    };
1426    Slick.prototype.initializeEvents = function() {
1427        var _ = this;
1428        _.initArrowEvents();
1429        _.initDotEvents();
1430        _.$list.on("touchstart.slick mousedown.slick", {
1431            action: "start"
1432        }, _.swipeHandler);
1433        _.$list.on("touchmove.slick mousemove.slick", {
1434            action: "move"
1435        }, _.swipeHandler);
1436        _.$list.on("touchend.slick mouseup.slick", {
1437            action: "end"
1438        }, _.swipeHandler);
1439        _.$list.on("touchcancel.slick mouseleave.slick", {
1440            action: "end"
1441        }, _.swipeHandler);
1442        _.$list.on("click.slick", _.clickHandler);
1443        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
1444        _.$list.on("mouseenter.slick", $.proxy(_.setPaused, _, true));
1445        _.$list.on("mouseleave.slick", $.proxy(_.setPaused, _, false));
1446        if (_.options.accessibility === true) {
1447            _.$list.on("keydown.slick", _.keyHandler);
1448        }
1449        if (_.options.focusOnSelect === true) {
1450            $(_.$slideTrack).children().on("click.slick", _.selectHandler);
1451        }
1452        $(window).on("orientationchange.slick.slick-" + _.instanceUid, $.proxy(_.orientationChange, _));
1453        $(window).on("resize.slick.slick-" + _.instanceUid, $.proxy(_.resize, _));
1454        $("[draggable!=true]", _.$slideTrack).on("dragstart", _.preventDefault);
1455        $(window).on("load.slick.slick-" + _.instanceUid, _.setPosition);
1456        $(document).on("ready.slick.slick-" + _.instanceUid, _.setPosition);
1457    };
1458    Slick.prototype.initUI = function() {
1459        var _ = this;
1460        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1461            _.$prevArrow.show();
1462            _.$nextArrow.show();
1463        }
1464        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1465            _.$dots.show();
1466        }
1467        if (_.options.autoplay === true) {
1468            _.autoPlay();
1469        }
1470    };
1471    Slick.prototype.keyHandler = function(event) {
1472        var _ = this;
1473        if (!event.target.tagName.match("TEXTAREA|INPUT|SELECT")) {
1474            if (event.keyCode === 37 && _.options.accessibility === true) {
1475                _.changeSlide({
1476                    data: {
1477                        message: "previous"
1478                    }
1479                });
1480            } else if (event.keyCode === 39 && _.options.accessibility === true) {
1481                _.changeSlide({
1482                    data: {
1483                        message: "next"
1484                    }
1485                });
1486            }
1487        }
1488    };
1489    Slick.prototype.lazyLoad = function() {
1490        var _ = this, loadRange, cloneRange, rangeStart, rangeEnd;
1491        function loadImages(imagesScope) {
1492            $("img[data-lazy]", imagesScope).each(function() {
1493                var image = $(this), imageSource = $(this).attr("data-lazy"), imageToLoad = document.createElement("img");
1494                imageToLoad.onload = function() {
1495                    image.animate({
1496                        opacity: 0
1497                    }, 100, function() {
1498                        image.attr("src", imageSource).animate({
1499                            opacity: 1
1500                        }, 200, function() {
1501                            image.removeAttr("data-lazy").removeClass("slick-loading");
1502                        });
1503                    });
1504                };
1505                imageToLoad.src = imageSource;
1506            });
1507        }
1508        if (_.options.centerMode === true) {
1509            if (_.options.infinite === true) {
1510                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
1511                rangeEnd = rangeStart + _.options.slidesToShow + 2;
1512            } else {
1513                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
1514                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
1515            }
1516        } else {
1517            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
1518            rangeEnd = rangeStart + _.options.slidesToShow;
1519            if (_.options.fade === true) {
1520                if (rangeStart > 0) rangeStart--;
1521                if (rangeEnd <= _.slideCount) rangeEnd++;
1522            }
1523        }
1524        loadRange = _.$slider.find(".slick-slide").slice(rangeStart, rangeEnd);
1525        loadImages(loadRange);
1526        if (_.slideCount <= _.options.slidesToShow) {
1527            cloneRange = _.$slider.find(".slick-slide");
1528            loadImages(cloneRange);
1529        } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
1530            cloneRange = _.$slider.find(".slick-cloned").slice(0, _.options.slidesToShow);
1531            loadImages(cloneRange);
1532        } else if (_.currentSlide === 0) {
1533            cloneRange = _.$slider.find(".slick-cloned").slice(_.options.slidesToShow * -1);
1534            loadImages(cloneRange);
1535        }
1536    };
1537    Slick.prototype.loadSlider = function() {
1538        var _ = this;
1539        _.setPosition();
1540        _.$slideTrack.css({
1541            opacity: 1
1542        });
1543        _.$slider.removeClass("slick-loading");
1544        _.initUI();
1545        if (_.options.lazyLoad === "progressive") {
1546            _.progressiveLazyLoad();
1547        }
1548    };
1549    Slick.prototype.next = Slick.prototype.slickNext = function() {
1550        var _ = this;
1551        _.changeSlide({
1552            data: {
1553                message: "next"
1554            }
1555        });
1556    };
1557    Slick.prototype.orientationChange = function() {
1558        var _ = this;
1559        _.checkResponsive();
1560        _.setPosition();
1561    };
1562    Slick.prototype.pause = Slick.prototype.slickPause = function() {
1563        var _ = this;
1564        _.autoPlayClear();
1565        _.paused = true;
1566    };
1567    Slick.prototype.play = Slick.prototype.slickPlay = function() {
1568        var _ = this;
1569        _.paused = false;
1570        _.autoPlay();
1571    };
1572    Slick.prototype.postSlide = function(index) {
1573        var _ = this;
1574        _.$slider.trigger("afterChange", [ _, index ]);
1575        _.animating = false;
1576        _.setPosition();
1577        _.swipeLeft = null;
1578        if (_.options.autoplay === true && _.paused === false) {
1579            _.autoPlay();
1580        }
1581        if (_.options.accessibility === true) {
1582            _.initADA();
1583        }
1584    };
1585    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
1586        var _ = this;
1587        _.changeSlide({
1588            data: {
1589                message: "previous"
1590            }
1591        });
1592    };
1593    Slick.prototype.preventDefault = function(e) {
1594        e.preventDefault();
1595    };
1596    Slick.prototype.progressiveLazyLoad = function() {
1597        var _ = this, imgCount, targetImage;
1598        imgCount = $("img[data-lazy]", _.$slider).length;
1599        if (imgCount > 0) {
1600            targetImage = $("img[data-lazy]", _.$slider).first();
1601            targetImage.attr("src", targetImage.attr("data-lazy")).removeClass("slick-loading").load(function() {
1602                targetImage.removeAttr("data-lazy");
1603                _.progressiveLazyLoad();
1604                if (_.options.adaptiveHeight === true) {
1605                    _.setPosition();
1606                }
1607            }).error(function() {
1608                targetImage.removeAttr("data-lazy");
1609                _.progressiveLazyLoad();
1610            });
1611        }
1612    };
1613    Slick.prototype.refresh = function(initializing) {
1614        var _ = this, currentSlide = _.currentSlide;
1615        _.destroy(true);
1616        $.extend(_, _.initials, {
1617            currentSlide: currentSlide
1618        });
1619        _.init();
1620        if (!initializing) {
1621            _.changeSlide({
1622                data: {
1623                    message: "index",
1624                    index: currentSlide
1625                }
1626            }, false);
1627        }
1628    };
1629    Slick.prototype.registerBreakpoints = function() {
1630        var _ = this, breakpoint, currentBreakpoint, l, responsiveSettings = _.options.responsive || null;
1631        if ($.type(responsiveSettings) === "array" && responsiveSettings.length) {
1632            _.respondTo = _.options.respondTo || "window";
1633            for (breakpoint in responsiveSettings) {
1634                l = _.breakpoints.length - 1;
1635                currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
1636                if (responsiveSettings.hasOwnProperty(breakpoint)) {
1637                    while (l >= 0) {
1638                        if (_.breakpoints[l] && _.breakpoints[l] === currentBreakpoint) {
1639                            _.breakpoints.splice(l, 1);
1640                        }
1641                        l--;
1642                    }
1643                    _.breakpoints.push(currentBreakpoint);
1644                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
1645                }
1646            }
1647            _.breakpoints.sort(function(a, b) {
1648                return _.options.mobileFirst ? a - b : b - a;
1649            });
1650        }
1651    };
1652    Slick.prototype.reinit = function() {
1653        var _ = this;
1654        _.$slides = _.$slideTrack.children(_.options.slide).addClass("slick-slide");
1655        _.slideCount = _.$slides.length;
1656        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
1657            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
1658        }
1659        if (_.slideCount <= _.options.slidesToShow) {
1660            _.currentSlide = 0;
1661        }
1662        _.registerBreakpoints();
1663        _.setProps();
1664        _.setupInfinite();
1665        _.buildArrows();
1666        _.updateArrows();
1667        _.initArrowEvents();
1668        _.buildDots();
1669        _.updateDots();
1670        _.initDotEvents();
1671        _.checkResponsive(false, true);
1672        if (_.options.focusOnSelect === true) {
1673            $(_.$slideTrack).children().on("click.slick", _.selectHandler);
1674        }
1675        _.setSlideClasses(0);
1676        _.setPosition();
1677        _.$slider.trigger("reInit", [ _ ]);
1678        if (_.options.autoplay === true) {
1679            _.focusHandler();
1680        }
1681    };
1682    Slick.prototype.resize = function() {
1683        var _ = this;
1684        if ($(window).width() !== _.windowWidth) {
1685            clearTimeout(_.windowDelay);
1686            _.windowDelay = window.setTimeout(function() {
1687                _.windowWidth = $(window).width();
1688                _.checkResponsive();
1689                if (!_.unslicked) {
1690                    _.setPosition();
1691                }
1692            }, 50);
1693        }
1694    };
1695    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
1696        var _ = this;
1697        if (typeof index === "boolean") {
1698            removeBefore = index;
1699            index = removeBefore === true ? 0 : _.slideCount - 1;
1700        } else {
1701            index = removeBefore === true ? --index : index;
1702        }
1703        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
1704            return false;
1705        }
1706        _.unload();
1707        if (removeAll === true) {
1708            _.$slideTrack.children().remove();
1709        } else {
1710            _.$slideTrack.children(this.options.slide).eq(index).remove();
1711        }
1712        _.$slides = _.$slideTrack.children(this.options.slide);
1713        _.$slideTrack.children(this.options.slide).detach();
1714        _.$slideTrack.append(_.$slides);
1715        _.$slidesCache = _.$slides;
1716        _.reinit();
1717    };
1718    Slick.prototype.setCSS = function(position) {
1719        var _ = this, positionProps = {}, x, y;
1720        if (_.options.rtl === true) {
1721            position = -position;
1722        }
1723        x = _.positionProp == "left" ? Math.ceil(position) + "px" : "0px";
1724        y = _.positionProp == "top" ? Math.ceil(position) + "px" : "0px";
1725        positionProps[_.positionProp] = position;
1726        if (_.transformsEnabled === false) {
1727            _.$slideTrack.css(positionProps);
1728        } else {
1729            positionProps = {};
1730            if (_.cssTransitions === false) {
1731                positionProps[_.animType] = "translate(" + x + ", " + y + ")";
1732                _.$slideTrack.css(positionProps);
1733            } else {
1734                positionProps[_.animType] = "translate3d(" + x + ", " + y + ", 0px)";
1735                _.$slideTrack.css(positionProps);
1736            }
1737        }
1738    };
1739    Slick.prototype.setDimensions = function() {
1740        var _ = this;
1741        if (_.options.vertical === false) {
1742            if (_.options.centerMode === true) {
1743                _.$list.css({
1744                    padding: "0px " + _.options.centerPadding
1745                });
1746            }
1747        } else {
1748            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
1749            if (_.options.centerMode === true) {
1750                _.$list.css({
1751                    padding: _.options.centerPadding + " 0px"
1752                });
1753            }
1754        }
1755        _.listWidth = _.$list.width();
1756        _.listHeight = _.$list.height();
1757        if (_.options.vertical === false && _.options.variableWidth === false) {
1758            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
1759            _.$slideTrack.width(Math.ceil(_.slideWidth * _.$slideTrack.children(".slick-slide").length));
1760        } else if (_.options.variableWidth === true) {
1761            _.$slideTrack.width(5e3 * _.slideCount);
1762        } else {
1763            _.slideWidth = Math.ceil(_.listWidth);
1764            _.$slideTrack.height(Math.ceil(_.$slides.first().outerHeight(true) * _.$slideTrack.children(".slick-slide").length));
1765        }
1766        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
1767        if (_.options.variableWidth === false) _.$slideTrack.children(".slick-slide").width(_.slideWidth - offset);
1768    };
1769    Slick.prototype.setFade = function() {
1770        var _ = this, targetLeft;
1771        _.$slides.each(function(index, element) {
1772            targetLeft = _.slideWidth * index * -1;
1773            if (_.options.rtl === true) {
1774                $(element).css({
1775                    position: "relative",
1776                    right: targetLeft,
1777                    top: 0,
1778                    zIndex: _.options.zIndex - 2,
1779                    opacity: 0
1780                });
1781            } else {
1782                $(element).css({
1783                    position: "relative",
1784                    left: targetLeft,
1785                    top: 0,
1786                    zIndex: _.options.zIndex - 2,
1787                    opacity: 0
1788                });
1789            }
1790        });
1791        _.$slides.eq(_.currentSlide).css({
1792            zIndex: _.options.zIndex - 1,
1793            opacity: 1
1794        });
1795    };
1796    Slick.prototype.setHeight = function() {
1797        var _ = this;
1798        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
1799            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
1800            _.$list.css("height", targetHeight);
1801        }
1802    };
1803    Slick.prototype.setOption = Slick.prototype.slickSetOption = function(option, value, refresh) {
1804        var _ = this, l, item;
1805        if (option === "responsive" && $.type(value) === "array") {
1806            for (item in value) {
1807                if ($.type(_.options.responsive) !== "array") {
1808                    _.options.responsive = [ value[item] ];
1809                } else {
1810                    l = _.options.responsive.length - 1;
1811                    while (l >= 0) {
1812                        if (_.options.responsive[l].breakpoint === value[item].breakpoint) {
1813                            _.options.responsive.splice(l, 1);
1814                        }
1815                        l--;
1816                    }
1817                    _.options.responsive.push(value[item]);
1818                }
1819            }
1820        } else {
1821            _.options[option] = value;
1822        }
1823        if (refresh === true) {
1824            _.unload();
1825            _.reinit();
1826        }
1827    };
1828    Slick.prototype.setPosition = function() {
1829        var _ = this;
1830        _.setDimensions();
1831        _.setHeight();
1832        if (_.options.fade === false) {
1833            _.setCSS(_.getLeft(_.currentSlide));
1834        } else {
1835            _.setFade();
1836        }
1837        _.$slider.trigger("setPosition", [ _ ]);
1838    };
1839    Slick.prototype.setProps = function() {
1840        var _ = this, bodyStyle = document.body.style;
1841        _.positionProp = _.options.vertical === true ? "top" : "left";
1842        if (_.positionProp === "top") {
1843            _.$slider.addClass("slick-vertical");
1844        } else {
1845            _.$slider.removeClass("slick-vertical");
1846        }
1847        if (bodyStyle.WebkitTransition !== undefined || bodyStyle.MozTransition !== undefined || bodyStyle.msTransition !== undefined) {
1848            if (_.options.useCSS === true) {
1849                _.cssTransitions = true;
1850            }
1851        }
1852        if (_.options.fade) {
1853            if (typeof _.options.zIndex === "number") {
1854                if (_.options.zIndex < 3) {
1855                    _.options.zIndex = 3;
1856                }
1857            } else {
1858                _.options.zIndex = _.defaults.zIndex;
1859            }
1860        }
1861        if (bodyStyle.OTransform !== undefined) {
1862            _.animType = "OTransform";
1863            _.transformType = "-o-transform";
1864            _.transitionType = "OTransition";
1865            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
1866        }
1867        if (bodyStyle.MozTransform !== undefined) {
1868            _.animType = "MozTransform";
1869            _.transformType = "-moz-transform";
1870            _.transitionType = "MozTransition";
1871            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
1872        }
1873        if (bodyStyle.webkitTransform !== undefined) {
1874            _.animType = "webkitTransform";
1875            _.transformType = "-webkit-transform";
1876            _.transitionType = "webkitTransition";
1877            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
1878        }
1879        if (bodyStyle.msTransform !== undefined) {
1880            _.animType = "msTransform";
1881            _.transformType = "-ms-transform";
1882            _.transitionType = "msTransition";
1883            if (bodyStyle.msTransform === undefined) _.animType = false;
1884        }
1885        if (bodyStyle.transform !== undefined && _.animType !== false) {
1886            _.animType = "transform";
1887            _.transformType = "transform";
1888            _.transitionType = "transition";
1889        }
1890        _.transformsEnabled = _.animType !== null && _.animType !== false;
1891    };
1892    Slick.prototype.setSlideClasses = function(index) {
1893        var _ = this, centerOffset, allSlides, indexOffset, remainder;
1894        allSlides = _.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true");
1895        _.$slides.eq(index).addClass("slick-current");
1896        if (_.options.centerMode === true) {
1897            centerOffset = Math.floor(_.options.slidesToShow / 2);
1898            if (_.options.infinite === true) {
1899                if (index >= centerOffset && index <= _.slideCount - 1 - centerOffset) {
1900                    _.$slides.slice(index - centerOffset, index + centerOffset + 1).addClass("slick-active").attr("aria-hidden", "false");
1901                } else {
1902                    indexOffset = _.options.slidesToShow + index;
1903                    allSlides.slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2).addClass("slick-active").attr("aria-hidden", "false");
1904                }
1905                if (index === 0) {
1906                    allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass("slick-center");
1907                } else if (index === _.slideCount - 1) {
1908                    allSlides.eq(_.options.slidesToShow).addClass("slick-center");
1909                }
1910            }
1911            _.$slides.eq(index).addClass("slick-center");
1912        } else {
1913            if (index >= 0 && index <= _.slideCount - _.options.slidesToShow) {
1914                _.$slides.slice(index, index + _.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false");
1915            } else if (allSlides.length <= _.options.slidesToShow) {
1916                allSlides.addClass("slick-active").attr("aria-hidden", "false");
1917            } else {
1918                remainder = _.slideCount % _.options.slidesToShow;
1919                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
1920                if (_.options.slidesToShow == _.options.slidesToScroll && _.slideCount - index < _.options.slidesToShow) {
1921                    allSlides.slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder).addClass("slick-active").attr("aria-hidden", "false");
1922                } else {
1923                    allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false");
1924                }
1925            }
1926        }
1927        if (_.options.lazyLoad === "ondemand") {
1928            _.lazyLoad();
1929        }
1930    };
1931    Slick.prototype.setupInfinite = function() {
1932        var _ = this, i, slideIndex, infiniteCount;
1933        if (_.options.fade === true) {
1934            _.options.centerMode = false;
1935        }
1936        if (_.options.infinite === true && _.options.fade === false) {
1937            slideIndex = null;
1938            if (_.slideCount > _.options.slidesToShow) {
1939                if (_.options.centerMode === true) {
1940                    infiniteCount = _.options.slidesToShow + 1;
1941                } else {
1942                    infiniteCount = _.options.slidesToShow;
1943                }
1944                for (i = _.slideCount; i > _.slideCount - infiniteCount; i -= 1) {
1945                    slideIndex = i - 1;
1946                    $(_.$slides[slideIndex]).clone(true).attr("id", "").attr("data-slick-index", slideIndex - _.slideCount).prependTo(_.$slideTrack).addClass("slick-cloned");
1947                }
1948                for (i = 0; i < infiniteCount; i += 1) {
1949                    slideIndex = i;
1950                    $(_.$slides[slideIndex]).clone(true).attr("id", "").attr("data-slick-index", slideIndex + _.slideCount).appendTo(_.$slideTrack).addClass("slick-cloned");
1951                }
1952                _.$slideTrack.find(".slick-cloned").find("[id]").each(function() {
1953                    $(this).attr("id", "");
1954                });
1955            }
1956        }
1957    };
1958    Slick.prototype.setPaused = function(paused) {
1959        var _ = this;
1960        if (_.options.autoplay === true && _.options.pauseOnHover === true) {
1961            _.paused = paused;
1962            if (!paused) {
1963                _.autoPlay();
1964            } else {
1965                _.autoPlayClear();
1966            }
1967        }
1968    };
1969    Slick.prototype.selectHandler = function(event) {
1970        var _ = this;
1971        var targetElement = $(event.target).is(".slick-slide") ? $(event.target) : $(event.target).parents(".slick-slide");
1972        var index = parseInt(targetElement.attr("data-slick-index"));
1973        if (!index) index = 0;
1974        if (_.slideCount <= _.options.slidesToShow) {
1975            _.setSlideClasses(index);
1976            _.asNavFor(index);
1977            return;
1978        }
1979        _.slideHandler(index);
1980    };
1981    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
1982        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, _ = this;
1983        sync = sync || false;
1984        if (_.animating === true && _.options.waitForAnimate === true) {
1985            return;
1986        }
1987        if (_.options.fade === true && _.currentSlide === index) {
1988            return;
1989        }
1990        if (_.slideCount <= _.options.slidesToShow) {
1991            return;
1992        }
1993        if (sync === false) {
1994            _.asNavFor(index);
1995        }
1996        targetSlide = index;
1997        targetLeft = _.getLeft(targetSlide);
1998        slideLeft = _.getLeft(_.currentSlide);
1999        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
2000        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
2001            if (_.options.fade === false) {
2002                targetSlide = _.currentSlide;
2003                if (dontAnimate !== true) {
2004                    _.animateSlide(slideLeft, function() {
2005                        _.postSlide(targetSlide);
2006                    });
2007                } else {
2008                    _.postSlide(targetSlide);
2009                }
2010            }
2011            return;
2012        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > _.slideCount - _.options.slidesToScroll)) {
2013            if (_.options.fade === false) {
2014                targetSlide = _.currentSlide;
2015                if (dontAnimate !== true) {
2016                    _.animateSlide(slideLeft, function() {
2017                        _.postSlide(targetSlide);
2018                    });
2019                } else {
2020                    _.postSlide(targetSlide);
2021                }
2022            }
2023            return;
2024        }
2025        if (_.options.autoplay === true) {
2026            clearInterval(_.autoPlayTimer);
2027        }
2028        if (targetSlide < 0) {
2029            if (_.slideCount % _.options.slidesToScroll !== 0) {
2030                animSlide = _.slideCount - _.slideCount % _.options.slidesToScroll;
2031            } else {
2032                animSlide = _.slideCount + targetSlide;
2033            }
2034        } else if (targetSlide >= _.slideCount) {
2035            if (_.slideCount % _.options.slidesToScroll !== 0) {
2036                animSlide = 0;
2037            } else {
2038                animSlide = targetSlide - _.slideCount;
2039            }
2040        } else {
2041            animSlide = targetSlide;
2042        }
2043        _.animating = true;
2044        _.$slider.trigger("beforeChange", [ _, _.currentSlide, animSlide ]);
2045        oldSlide = _.currentSlide;
2046        _.currentSlide = animSlide;
2047        _.setSlideClasses(_.currentSlide);
2048        _.updateDots();
2049        _.updateArrows();
2050        if (_.options.fade === true) {
2051            if (dontAnimate !== true) {
2052                _.fadeSlideOut(oldSlide);
2053                _.fadeSlide(animSlide, function() {
2054                    _.postSlide(animSlide);
2055                });
2056            } else {
2057                _.postSlide(animSlide);
2058            }
2059            _.animateHeight();
2060            return;
2061        }
2062        if (dontAnimate !== true) {
2063            _.animateSlide(targetLeft, function() {
2064                _.postSlide(animSlide);
2065            });
2066        } else {
2067            _.postSlide(animSlide);
2068        }
2069    };
2070    Slick.prototype.startLoad = function() {
2071        var _ = this;
2072        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
2073            _.$prevArrow.hide();
2074            _.$nextArrow.hide();
2075        }
2076        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
2077            _.$dots.hide();
2078        }
2079        _.$slider.addClass("slick-loading");
2080    };
2081    Slick.prototype.swipeDirection = function() {
2082        var xDist, yDist, r, swipeAngle, _ = this;
2083        xDist = _.touchObject.startX - _.touchObject.curX;
2084        yDist = _.touchObject.startY - _.touchObject.curY;
2085        r = Math.atan2(yDist, xDist);
2086        swipeAngle = Math.round(r * 180 / Math.PI);
2087        if (swipeAngle < 0) {
2088            swipeAngle = 360 - Math.abs(swipeAngle);
2089        }
2090        if (swipeAngle <= 45 && swipeAngle >= 0) {
2091            return _.options.rtl === false ? "left" : "right";
2092        }
2093        if (swipeAngle <= 360 && swipeAngle >= 315) {
2094            return _.options.rtl === false ? "left" : "right";
2095        }
2096        if (swipeAngle >= 135 && swipeAngle <= 225) {
2097            return _.options.rtl === false ? "right" : "left";
2098        }
2099        if (_.options.verticalSwiping === true) {
2100            if (swipeAngle >= 35 && swipeAngle <= 135) {
2101                return "left";
2102            } else {
2103                return "right";
2104            }
2105        }
2106        return "vertical";
2107    };
2108    Slick.prototype.swipeEnd = function(event) {
2109        var _ = this, slideCount;
2110        _.dragging = false;
2111        _.shouldClick = _.touchObject.swipeLength > 10 ? false : true;
2112        if (_.touchObject.curX === undefined) {
2113            return false;
2114        }
2115        if (_.touchObject.edgeHit === true) {
2116            _.$slider.trigger("edge", [ _, _.swipeDirection() ]);
2117        }
2118        if (_.touchObject.swipeLength >= _.touchObject.minSwipe) {
2119            switch (_.swipeDirection()) {
2120              case "left":
2121                slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide + _.getSlideCount()) : _.currentSlide + _.getSlideCount();
2122                _.slideHandler(slideCount);
2123                _.currentDirection = 0;
2124                _.touchObject = {};
2125                _.$slider.trigger("swipe", [ _, "left" ]);
2126                break;
2127
2128              case "right":
2129                slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide - _.getSlideCount()) : _.currentSlide - _.getSlideCount();
2130                _.slideHandler(slideCount);
2131                _.currentDirection = 1;
2132                _.touchObject = {};
2133                _.$slider.trigger("swipe", [ _, "right" ]);
2134                break;
2135            }
2136        } else {
2137            if (_.touchObject.startX !== _.touchObject.curX) {
2138                _.slideHandler(_.currentSlide);
2139                _.touchObject = {};
2140            }
2141        }
2142    };
2143    Slick.prototype.swipeHandler = function(event) {
2144        var _ = this;
2145        if (_.options.swipe === false || "ontouchend" in document && _.options.swipe === false) {
2146            return;
2147        } else if (_.options.draggable === false && event.type.indexOf("mou
2147se") !== -1) {
2148            return;
2149        }
2150        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? event.originalEvent.touches.length : 1;
2151        _.touchObject.minSwipe = _.listWidth / _.options.touchThreshold;
2152        if (_.options.verticalSwiping === true) {
2153            _.touchObject.minSwipe = _.listHeight / _.options.touchThreshold;
2154        }
2155        switch (event.data.action) {
2156          case "start":
2157            _.swipeStart(event);
2158            break;
2159
2160          case "move":
2161            _.swipeMove(event);
2162            break;
2163
2164          case "end":
2165            _.swipeEnd(event);
2166            break;
2167        }
2168    };
2169    Slick.prototype.swipeMove = function(event) {
2170        var _ = this, edgeWasHit = false, curLeft, swipeDirection, swipeLength, positionOffset, touches;
2171        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
2172        if (!_.dragging || touches && touches.length !== 1) {
2173            return false;
2174        }
2175        curLeft = _.getLeft(_.currentSlide);
2176        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
2177        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
2178        _.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
2179        if (_.options.verticalSwiping === true) {
2180            _.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
2181        }
2182        swipeDirection = _.swipeDirection();
2183        if (swipeDirection === "vertical") {
2184            return;
2185        }
2186        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
2187            event.preventDefault();
2188        }
2189        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
2190        if (_.options.verticalSwiping === true) {
2191            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
2192        }
2193        swipeLength = _.touchObject.swipeLength;
2194        _.touchObject.edgeHit = false;
2195        if (_.options.infinite === false) {
2196            if (_.currentSlide === 0 && swipeDirection === "right" || _.currentSlide >= _.getDotCount() && swipeDirection === "left") {
2197                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
2198                _.touchObject.edgeHit = true;
2199            }
2200        }
2201        if (_.options.vertical === false) {
2202            _.swipeLeft = curLeft + swipeLength * positionOffset;
2203        } else {
2204            _.swipeLeft = curLeft + swipeLength * (_.$list.height() / _.listWidth) * positionOffset;
2205        }
2206        if (_.options.verticalSwiping === true) {
2207            _.swipeLeft = curLeft + swipeLength * positionOffset;
2208        }
2209        if (_.options.fade === true || _.options.touchMove === false) {
2210            return false;
2211        }
2212        if (_.animating === true) {
2213            _.swipeLeft = null;
2214            return false;
2215        }
2216        _.setCSS(_.swipeLeft);
2217    };
2218    Slick.prototype.swipeStart = function(event) {
2219        var _ = this, touches;
2220        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
2221            _.touchObject = {};
2222            return false;
2223        }
2224        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
2225            touches = event.originalEvent.touches[0];
2226        }
2227        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
2228        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
2229        _.dragging = true;
2230    };
2231    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
2232        var _ = this;
2233        if (_.$slidesCache !== null) {
2234            _.unload();
2235            _.$slideTrack.children(this.options.slide).detach();
2236            _.$slidesCache.appendTo(_.$slideTrack);
2237            _.reinit();
2238        }
2239    };
2240    Slick.prototype.unload = function() {
2241        var _ = this;
2242        $(".slick-cloned", _.$slider).remove();
2243        if (_.$dots) {
2244            _.$dots.remove();
2245        }
2246        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
2247            _.$prevArrow.remove();
2248        }
2249        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
2250            _.$nextArrow.remove();
2251        }
2252        _.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "");
2253    };
2254    Slick.prototype.unslick = function(fromBreakpoint) {
2255        var _ = this;
2256        _.$slider.trigger("unslick", [ _, fromBreakpoint ]);
2257        _.destroy();
2258    };
2259    Slick.prototype.updateArrows = function() {
2260        var _ = this, centerOffset;
2261        centerOffset = Math.floor(_.options.slidesToShow / 2);
2262        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow && !_.options.infinite) {
2263            _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false");
2264            _.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false");
2265            if (_.currentSlide === 0) {
2266                _.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true");
2267                _.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false");
2268            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
2269                _.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true");
2270                _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false");
2271            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
2272                _.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true");
2273                _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false");
2274            }
2275        }
2276    };
2277    Slick.prototype.updateDots = function() {
2278        var _ = this;
2279        if (_.$dots !== null) {
2280            _.$dots.find("li").removeClass("slick-active").attr("aria-hidden", "true");
2281            _.$dots.find("li").eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden", "false");
2282        }
2283    };
2284    Slick.prototype.visibility = function() {
2285        var _ = this;
2286        if (document[_.hidden]) {
2287            _.paused = true;
2288            _.autoPlayClear();
2289        } else {
2290            if (_.options.autoplay === true) {
2291                _.paused = false;
2292                _.autoPlay();
2293            }
2294        }
2295    };
2296    Slick.prototype.initADA = function() {
2297        var _ = this;
2298        _.$slides.add(_.$slideTrack.find(".slick-cloned")).attr({
2299            "aria-hidden": "true",
2300            tabindex: "-1"
2301        }).find("a, input, button, select").attr({
2302            tabindex: "-1"
2303        });
2304        _.$slideTrack.attr("role", "listbox");
2305        _.$slides.not(_.$slideTrack.find(".slick-cloned")).each(function(i) {
2306            $(this).attr({
2307                role: "option",
2308                "aria-describedby": "slick-slide" + _.instanceUid + i + ""
2309            });
2310        });
2311        if (_.$dots !== null) {
2312            _.$dots.attr("role", "tablist").find("li").each(function(i) {
2313                $(this).attr({
2314                    role: "presentation",
2315                    "aria-selected": "false",
2316                    "aria-controls": "navigation" + _.instanceUid + i + "",
2317                    id: "slick-slide" + _.instanceUid + i + ""
2318                });
2319            }).first().attr("aria-selected", "true").end().find("button").attr("role", "button").end().closest("div").attr("role", "toolbar");
2320        }
2321        _.activateADA();
2322    };
2323    Slick.prototype.activateADA = function() {
2324        var _ = this, _isSlideOnFocus = _.$slider.find("*").is(":focus");
2325        _.$slideTrack.find(".slick-active").attr({
2326            "aria-hidden": "false",
2327            tabindex: "0"
2328        }).find("a, input, button, select").attr({
2329            tabindex: "0"
2330        });
2331        _isSlideOnFocus && _.$slideTrack.find(".slick-active").focus();
2332    };
2333    Slick.prototype.focusHandler = function() {
2334        var _ = this;
2335        _.$slider.on("focus.slick blur.slick", "*", function(event) {
2336            event.stopImmediatePropagation();
2337            var sf = $(this);
2338            setTimeout(function() {
2339                if (_.isPlay) {
2340                    if (sf.is(":focus")) {
2341                        _.autoPlayClear();
2342                        _.paused = true;
2343                    } else {
2344                        _.paused = false;
2345                        _.autoPlay();
2346                    }
2347                }
2348            }, 0);
2349        });
2350    };
2351    $.fn.slick = function() {
2352        var _ = this, opt = arguments[0], args = Array.prototype.slice.call(arguments, 1), l = _.length, i = 0, ret;
2353        for (i; i < l; i++) {
2354            if (typeof opt == "object" || typeof opt == "undefined") _[i].slick = new Slick(_[i], opt); else ret = _[i].slick[opt].apply(_[i].slick, args);
2355            if (typeof ret != "undefined") return ret;
2356        }
2357        return _;
2358    };
2359});
2360
2361(function($) {
2362    $.fn.unveil = function(threshold, callback) {
2363        var $w = $(window), th = threshold || 0, retina = window.devicePixelRatio > 1, attrib = retina ? "data-src-retina" : "data-src", images = this, loaded;
2364        this.one("unveil", function() {
2365            var source = this.getAttribute(attrib);
2366            source = source || this.getAttribute("data-src");
2367            if (source) {
2368                if (this.tagName === "IMG") {
2369                    this.setAttribute("src", source);
2370                    this.parentElement.classList.add("is-loaded");
2371                } else {
2372                    this.style.backgroundImage = "url(" + source + ")";
2373                    this.parentElement.classList.add("is-loaded");
2374                }
2375                if (typeof callback === "function") {
2376                    callback.call(this);
2377                }
2378            }
2379        });
2380        function unveil() {
2381            var inview = images.filter(function() {
2382                var $e = $(this);
2383                if ($e.is(":hidden")) return;
2384                var wt = $w.scrollTop(), wb = wt + $w.height(), et = $e.offset().top, eb = et + $e.height();
2385                return eb >= wt - th && et <= wb + th;
2386            });
2387            loaded = inview.trigger("unveil");
2388            images = images.not(loaded);
2389        }
2390        $w.on("scroll.unveil resize.unveil lookup.unveil", unveil);
2391        unveil();
2392        return this;
2393    };
2394})(window.jQuery || window.Zepto);
2395
2396(function($) {
2397    var addClass = $.fn.addClass;
2398    $.fn.addClass = function(value) {
2399        var orig = addClass.apply(this, arguments);
2400        var elem, i = 0, len = this.length;
2401        for (;i < len; i++) {
2402            elem = this[i];
2403            if (elem instanceof SVGElement) {
2404                var classes = $(elem).attr("class");
2405                if (classes) {
2406                    var index = classes.indexOf(value);
2407                    if (index === -1) {
2408                        classes = classes + " " + value;
2409                        $(elem).attr("class", classes);
2410                    }
2411                } else {
2412                    $(elem).attr("class", value);
2413                }
2414            }
2415        }
2416        return orig;
2417    };
2418    var removeClass = $.fn.removeClass;
2419    $.fn.removeClass = function(value) {
2420        var orig = removeClass.apply(this, arguments);
2421        var elem, i = 0, len = this.length;
2422        for (;i < len; i++) {
2423            elem = this[i];
2424            if (elem instanceof SVGElement) {
2425                var classes = $(elem).attr("class");
2426                if (classes) {
2427                    var index = classes.indexOf(value);
2428                    if (index !== -1) {
2429                        classes = classes.substring(0, index) + classes.substring(index + value.length, classes.length);
2430                        $(elem).attr("class", classes);
2431                    }
2432                }
2433            }
2434        }
2435        return orig;
2436    };
2437    var hasClass = $.fn.hasClass;
2438    $.fn.hasClass = function(value) {
2439        var orig = hasClass.apply(this, arguments);
2440        var elem, i = 0, len = this.length;
2441        for (;i < len; i++) {
2442            elem = this[i];
2443            if (elem instanceof SVGElement) {
2444                var classes = $(elem).attr("class");
2445                if (classes) {
2446                    if (classes.indexOf(value) === -1) {
2447                        return false;
2448                    } else {
2449                        return true;
2450                    }
2451                } else {
2452                    return false;
2453                }
2454            }
2455        }
2456        return orig;
2457    };
2458})(jQuery);
2459
2460$.easing.jswing = $.easing.swing;
2461
2462$.extend($.easing, {
2463    def: "easeInExpo",
2464    swing: function(x, t, b, c, d) {
2465        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
2466    },
2467    easeInSine: function(x, t, b, c, d) {
2468        return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
2469    },
2470    easeOutSine: function(x, t, b, c, d) {
2471        return c * Math.sin(t / d * (Math.PI / 2)) + b;
2472    },
2473    easeInOutSine: function(x, t, b, c, d) {
2474        return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
2475    },
2476    easeInExpo: function(x, t, b, c, d) {
2477        return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
2478    },
2479    easeOutExpo: function(x, t, b, c, d) {
2480        return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
2481    }
2482});
2483
2484(function($) {
2485    var pageTrans = {
2486        init: function() {
2487            var siteURL = "https://" + top.location.host.toString();
2488            var transLinks = $("a[href^='" + siteURL + "'], a[href^='/'], a[href^='./'], a[href^='../']");
2489            var noTransLinks = transLinks.not(".no-trans");
2490            setTimeout(function() {
2491                $("body").removeClass("fade-in-page");
2492            }, 5100);
2493            transLinks.click(function(e) {
2494                if (e.metaKey || e.ctrlKey) return;
2495                if (e.metaKey || e.shiftKey) return;
2496                e.preventDefault();
2497                var linkLocation = this.href;
2498                function redirectPage() {
2499                    window.location = linkLocation;
2500                }
2501                $("body").addClass("is-exiting");
2502                $(".site-menu, main").animate({
2503                    opacity: "0"
2504                }, {
2505                    duration: 600,
2506                    complete: function() {
2507                        $("body").fadeOut(600, redirectPage);
2508                    }
2509                });
2510            });
2511            $(window).unload(function() {
2512                $(window).unbind("unload");
2513            });
2514            $(window).bind("pageshow", function(e) {
2515                if (e.originalEvent.persisted) {
2516                    window.location.reload();
2517                }
2518            });
2519        }
2520    };
2521    pageTrans.init();
2522})(jQuery);
2523
2524(function($) {
2525    scrollDirection = {
2526        init: function() {
2527            var didScroll;
2528            var lastScrollTop = 0;
2529            var scrollDistance = 15;
2530            var navbarHeight = $(".header-main").outerHeight();
2531            $(window).scroll(function() {
2532                didScroll = true;
2533            });
2534            function hasScrolled() {
2535                var st = $(this).scrollTop();
2536                if (Math.abs(lastScrollTop - st) <= scrollDistance) {
2537                    return;
2538                }
2539                if (st > lastScrollTop && st > navbarHeight) {
2540                    $("body").removeClass("at-top close-to-top").removeClass("scrolling-up").addClass("scrolling-down");
2541                } else if (st + $(window).height() < $(document).height()) {
2542                    $("body").removeClass("scrolling-down").addClass("scrolling-up");
2543                }
2544                if ($("body").hasClass("scrolling-up") && st <= 225) {
2545                    $("body").addClass("close-to-top");
2546                }
2547                if (st <= 0) {
2548                    $("body").removeClass("scrolling-down scrolling-up close-to-top").addClass("at-top");
2549                }
2550                lastScrollTop = st;
2551            }
2552            setInterval(function() {
2553                if (didScroll) {
2554                    hasScrolled();
2555                    didScroll = false;
2556                }
2557            }, 250);
2558        }
2559    };
2560    scrollDirection.init();
2561})(jQuery);
2562
2563(function($) {
2564    var s, menuNav = {
2565        settings: {
2566            body: $("body"),
2567            menuToggle: $(".js-menu-toggle")
2568        },
2569        init: function() {
2570            s = this.settings;
2571            this.bindEvents();
2572        },
2573        bindEvents: function() {
2574            s.menuToggle.click(function(e) {
2575                e.preventDefault();
2576                menuNav.toggleMenu();
2577            });
2578            $(document).keyup(function(e) {
2579                if ($("body").hasClass("js-menu--is-open") && e.
2579which === 27) {
2580                    menuNav.toggleMenu();
2581                }
2582            });
2583        },
2584        toggleMenu: function() {
2585            s.body.toggleClass("js-menu--is-open");
2586        },
2587        closeMenu: function() {
2588            $(".js-menu--is-open").removeClass("js-menu--is-open");
2589        }
2590    };
2591    menuNav.init();
2592})(jQuery);
2593
2594(function($) {
2595    var ScrollDetect = {
2596        init: function(trigger) {
2597            $("[data-scroll]").each(function() {
2598                var self = $(this);
2599                var osTrigger = trigger ? trigger : self;
2600                osTrigger.waypoint(function() {
2601                    self.addClass("animated");
2602                }, {
2603                    triggerOnce: true,
2604                    offset: "132%"
2605                });
2606            });
2607        }
2608    };
2609    ScrollDetect.init();
2610})(jQuery);
2611
2612$(".js-network-map").waypoint(function() {
2613    var children = $(".network-map__layer");
2614    var idx = 2;
2615    function addClassToNextChild() {
2616        if (idx == children.length) return;
2617        children.eq(idx++).addClass("is-animated");
2618        window.setTimeout(addClassToNextChild, 800);
2619    }
2620    $(".network-map__stats").addClass("is-animated");
2621    setTimeout(function() {
2622        addClassToNextChild();
2623    }, 800);
2624}, {
2625    triggerOnce: true,
2626    offset: "110%"
2627});
2628
2629(function($) {
2630    $.fn.scrollAnchor = function(options, callback) {
2631        var defualts = $.extend({
2632            offset: "0"
2633        }, options);
2634        return this.each(function() {
2635            $("[data-scrollto]").click(function(e) {
2636                e.preventDefault();
2637                var $this = $(this), offset = options.offset, target = "#" + $(this).data("scrollto"), $target = $(target);
2638                if (options.addActive) {
2639                    $("a[data-scrollto]").removeClass("active");
2640                }
2641                $("html, body").stop().animate({
2642                    scrollTop: $target.offset().top - offset
2643                }, {
2644                    duration: 600,
2645                    easing: "easeInExpo",
2646                    complete: options.complete
2647                });
2648                $.isFunction(options.setup);
2649            });
2650        });
2651    };
2652})(jQuery);
2653
2654$("html").scrollAnchor({
2655    offset: "150"
2656});
2657
2658(function($) {
2659    var loadThenScroll = {
2660        init: function() {
2661            if (window.location.hash) {
2662                setTimeout(function() {
2663                    $("html, body").scrollTop(0).show();
2664                    $("html, body").animate({
2665                        scrollTop: $(window.location.hash).offset().top - 60
2666                    }, 1200, "swing");
2667                }, 100);
2668            }
2669        }
2670    };
2671    loadThenScroll.init();
2672})(jQuery);
2673
2674(function($) {
2675    var stickyNav = {
2676        init: function() {
2677            var $subNav = $(".js-sticky");
2678            var stickyStart = ($subNav.offset() || {
2679                top: -100
2680            }).top;
2681            $(document).on("scroll resize", $subNav, function() {
2682                var pos = $(document).scrollTop();
2683                if (pos >= stickyStart) {
2684                    $subNav.addClass("is-sticky");
2685                } else {
2686                    $subNav.removeClass("is-sticky");
2687                }
2688            });
2689        }
2690    };
2691    if ($(".js-sticky").length) {
2692        stickyNav.init();
2693    }
2694})(jQuery);
2695
2696var PopItUp = function() {
2697    var s;
2698    var settings = {
2699        autoOpen: $("[data-popup-init]"),
2700        openLink: $("[data-popup]"),
2701        closeLink: $(".js-close-popup"),
2702        body: $(document.body),
2703        videoHolder: $(".popup__vid"),
2704        self: null
2705    };
2706    return {
2707        init: function() {
2708            s = settings;
2709            this.bindEvents();
2710        },
2711        bindEvents: function() {
2712            if (typeof s.autoOpen.data("popup-init") !== "undefined") {
2713                PopItUp.autoOpenPopUp();
2714            }
2715            s.openLink.on("click", function(e) {
2716                e.preventDefault();
2717                e.stopPropagation();
2718                s.self = this;
2719                PopItUp.openPopUp();
2720                if ($(this).data("vimeo-id")) {
2721                    PopItUp.playVideo();
2722                }
2723            });
2724            s.closeLink.on("click", function(e) {
2725                e.preventDefault();
2726                PopItUp.closePopUp();
2727                PopItUp.stopVideo();
2728            });
2729            s.body.on("keyup click", function(e) {
2730                if (s.body.hasClass("popup--is-open") && e.which === 27) {
2731                    PopItUp.closePopUp();
2732                    PopItUp.stopVideo();
2733                }
2734            });
2735        },
2736        autoOpenPopUp: function() {
2737            s.autoOpen.addClass("is-open");
2738            s.body.addClass("popup--auto-open");
2739        },
2740        openPopUp: function() {
2741            var popup = $(s.self).data("popup");
2742            s.autoOpen.removeClass("is-open");
2743            $("#" + popup).addClass("is-open").attr("aria-hidden", "false");
2744            s.body.addClass("popup--is-open");
2745        },
2746        closePopUp: function() {
2747            var popup = $(s.self).attr("data-popup");
2748            $("#" + popup).removeClass("is-open").attr("aria-hidden", "true");
2749            s.body.removeClass("popup--is-open popup--auto-open");
2750        },
2751        playVideo: function() {
2752            var vimeoID = $(s.self).data("vimeo-id"), vimeoURL = "https://player.vimeo.com/video/", vimeoPath = vimeoURL + vimeoID, vimeoColor = $(s.self).data("vimeo-color");
2753            $.getJSON("http://www.vimeo.com/api/oembed.json?url=" + encodeURIComponent(vimeoPath) + "&title=0&byline=0&color=" + vimeoColor + "&autoplay=1&callback=?", function(data) {
2754                s.videoHolder.html(data.html);
2755            });
2756        },
2757        stopVideo: function() {
2758            $(".popup__vid").empty();
2759        }
2760    };
2761}();
2762
2763PopItUp.init();
2764
2765(function($) {
2766    var $window = $(window);
2767    var windowHeight = $window.height();
2768    $window.resize(function() {
2769        windowHeight = $window.height();
2770    });
2771    $.fn.parallax = function(xpos, speedFactor, outerHeight) {
2772        var $this = $(this);
2773        var getHeight;
2774        var firstTop;
2775        $this.each(function() {
2776            firstTop = $this.offset().top;
2777        });
2778        if (outerHeight) {
2779            getHeight = function(jqo) {
2780                return jqo.outerHeight(true);
2781            };
2782        } else {
2783            getHeight = function(jqo) {
2784                return jqo.height();
2785            };
2786        }
2787        function translate3d(elm, value) {
2788            var translate3d = "translate3d(0px," + value + "px, 0";
2789            $this.css({
2790                "-ms-transform": translate3d,
2791                "-moz-transform": translate3d,
2792                "-webkit-transform": translate3d,
2793                transform: translate3d
2794            });
2795        }
2796        function updatePosition() {
2797            var plaxElement = $(this);
2798            var newPos = scrollY / 3;
2799            translate3d(plaxElement, newPos);
2800        }
2801        if (arguments.length < 1 || speedFactor === null) {
2802            speedFactor = .1;
2803        }
2804        function update() {
2805            var pos = $window.scrollTop();
2806            $this.each(function() {
2807                var $element = $(this);
2808                var top = $element.offset().top;
2809                var height = getHeight($element);
2810                if (top + height < pos || top > pos + windowHeight) {
2811                    return;
2812                }
2813                window.requestAnimationFrame(updatePosition);
2814            });
2815        }
2816        $window.bind("scroll", update).resize(update);
2817        update();
2818    };
2819})(jQuery);
2820
2821var Spanizer = function() {
2822    var s;
2823    return {
2824        settings: {
2825            letters: $(".js-letters"),
2826            words: $(".js-words")
2827        },
2828        init: function() {
2829            s = this.settings;
2830            this.bindEvents();
2831        },
2832        bindEvents: function() {
2833            Spanizer.letters();
2834            Spanizer.words();
2835        },
2836        letters: function() {
2837            s.letters.html(function(i, el) {
2838                var spanizer = $.trim(el).split("");
2839                var spanizing = "<span>
2839" + spanizer.join("</span><span>") + "</span>";
2840                return spanizing;
2841            });
2842        },
2843        words: function() {
2844            s.words.html(function(i, el) {
2845                var spanize = el.split(" ");
2846                var spanizeArr = [];
2847                var spanizing = "<span>" + spanize.join("</span> <span>") + "</span>";
2848                return spanizing;
2849            });
2850        }
2851    };
2852}();
2853
2854if ($(".js-letters").length || $(".js-words").length) Spanizer.init();
2855
2856if ($(".js-locations-map").length) {
2857    (function($) {
2858        var styles = [ {
2859            featureType: "water",
2860            elementType: "geometry.fill",
2861            stylers: [ {
2862                color: "#d3d3d3"
2863            } ]
2864        }, {
2865            featureType: "transit",
2866            stylers: [ {
2867                color: "#808080"
2868            }, {
2869                visibility: "off"
2870            } ]
2871        }, {
2872            featureType: "road.highway",
2873            elementType: "geometry.stroke",
2874            stylers: [ {
2875                visibility: "on"
2876            }, {
2877                color: "#b3b3b3"
2878            } ]
2879        }, {
2880            featureType: "road.highway",
2881            elementType: "geometry.fill",
2882            stylers: [ {
2883                color: "#ffffff"
2884            } ]
2885        }, {
2886            featureType: "road.local",
2887            elementType: "geometry.fill",
2888            stylers: [ {
2889                visibility: "on"
2890            }, {
2891                color: "#ffffff"
2892            }, {
2893                weight: 1.8
2894            } ]
2895        }, {
2896            featureType: "road.local",
2897            elementType: "geometry.stroke",
2898            stylers: [ {
2899                color: "#d7d7d7"
2900            } ]
2901        }, {
2902            featureType: "poi",
2903            elementType: "geometry.fill",
2904            stylers: [ {
2905                visibility: "on"
2906            }, {
2907                color: "#ebebeb"
2908            } ]
2909        }, {
2910            featureType: "administrative",
2911            elementType: "geometry",
2912            stylers: [ {
2913                color: "#a7a7a7"
2914            } ]
2915        }, {
2916            featureType: "road.arterial",
2917            elementType: "geometry.fill",
2918            stylers: [ {
2919                color: "#ffffff"
2920            } ]
2921        }, {
2922            featureType: "road.arterial",
2923            elementType: "geometry.fill",
2924            stylers: [ {
2925                color: "#ffffff"
2926            } ]
2927        }, {
2928            featureType: "landscape",
2929            elementType: "geometry.fill",
2930            stylers: [ {
2931                visibility: "on"
2932            }, {
2933                color: "#efefef"
2934            } ]
2935        }, {
2936            featureType: "road",
2937            elementType: "labels.text.fill",
2938            stylers: [ {
2939                color: "#696969"
2940            } ]
2941        }, {
2942            featureType: "administrative",
2943            elementType: "labels.text.fill",
2944            stylers: [ {
2945                visibility: "on"
2946            }, {
2947                color: "#737373"
2948            } ]
2949        }, {
2950            featureType: "poi",
2951            elementType: "labels.icon",
2952            stylers: [ {
2953                visibility: "off"
2954            } ]
2955        }, {
2956            featureType: "poi",
2957            elementType: "labels",
2958            stylers: [ {
2959                visibility: "off"
2960            } ]
2961        }, {
2962            featureType: "road.arterial",
2963            elementType: "geometry.stroke",
2964            stylers: [ {
2965                color: "#d6d6d6"
2966            } ]
2967        }, {
2968            featureType: "road",
2969            elementType: "labels.icon",
2970            stylers: [ {
2971                visibility: "off"
2972            } ]
2973        }, {}, {
2974            featureType: "poi",
2975            elementType: "geometry.fill",
2976            stylers: [ {
2977                color: "#dadada"
2978            } ]
2979        } ];
2980        function render_map($locationsMap) {
2981            var $markers = $locationsMap.find(".marker");
2982            var args = {
2983                zoom: 16,
2984                center: new google.maps.LatLng(0, 0),
2985                mapTypeId: google.maps.MapTypeId.ROADMAP,
2986                styles: styles,
2987                scrollwheel: false
2988            };
2989            var map = new google.maps.Map($locationsMap[0], args);
2990            map.markers = [];
2991            $markers.each(function() {
2992                add_marker($(this), map);
2993            });
2994            center_map(map);
2995            center_map_resize(map);
2996        }
2997        var infowindow = new google.maps.InfoWindow({
2998            content: ""
2999        });
3000        function add_marker($marker, map) {
3001            var latlng = new google.maps.LatLng($marker.attr("data-lat"), $marker.attr("data-lng"));
3002            var marker = new google.maps.Marker({
3003                position: latlng,
3004                map: map,
3005                icon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABIRJREFUeNqsV0lMZGUQrl5otrBvYUkA2cMWYOAAGJEOnjh7MCbGiyflPpmYaMwYjwYzGuegJ28zp0nsCNixBQFliY
3005EgIDTYgDSEtVm76Qb8vpc8fOnp9Q2VVLrfe//766uqr6r+Z7i9vZVQMjAwIAaDQfx+vxwdHcnFxYWcnZ2Zjo+PH2xvb1tPTk5ew7tmLA1kZGS48vPzfy4oKPgjMTExkJqaKllZWWKxWIT7Dw4OSjgxSwySkJAgHo+nZWFh4Quv12vNzs421dXVKQaurq7k4OBA1tbWPgEwB+4/BKDfCT4WMcdifH19/b2ZmZmnFRUVlo6ODsnNzRWz+f9XA4GAHB4eGqempt6cnp7+DVH7qL29/ZtXBkDjc3Nz78P4d1arVZqamuTm5kaur68Vz1WhtwTV398viJJpaGjo6+TkZGNra+sT7bq4ANDQ5ubmg7GxsW/7+voU4z6fT0JxhvcYBQJraGgQo9EoNpvtK/BgrqioaDQSAGO4ByTdxMTE48rKyoTGxkZB7iUcYbVAuI78qK2tNUxOTn5+enpq1gVgY2PjdZDrLeacnsUjjAbfA3G7wR+rrhSsrKy8kZOTo+Q2GMDu7i5zTXJKeXm51NfXC0rw7jnXo1IEpcl9unDrp7gjsLe3V8pNTCbTS6Gn8eXlZYWI/OV1sJCYdAB9o0hXChgdVkGoeqbnka5VYZ+AmPQC8IVjPcMe6VqVy8tL/vh1cQDls7q/v68QilHQAmHOVc9VDgSHnzzg++CBSxeA6upqu8PhuHK73ZaSkhJlJqhCwmlJFyzkDYmKKrrt6upy6EoBCDRbWFj4fHx8/M6rWITr2IjQQ+j9CwAd0wUgMzNTOjs7P4YnR2goKqGiCtdhHrCPnOH9h9xHFwB6AQ+cvb29bwOAl5ti1EbcjM8xO2R0dDTQ09PzDiL4F/fRPYyY96qqqhEQ6l273f6M3mAiSqgBw5LF7JCRkRHp7u7+AO34RbRBFDECZDGVvb2mpuY5htGnw8PDgt6ukCw47zSGKci1T7D2e16zcqLND2Okaagq6xmj9bOkpKRJTMeXANB7jGw2jrW2trZH5+fnCiBGUFs9cQGg51pFNK5bWloeLS0tyc7Ozt2BhDlmVGZnZ6W5ufkx7nvYwAhAVV0AuIlWcR7kYLJDf6S3KrkIZHFxkVH5G/3iB45xNi+t6gLAMAcrjYJcXzqdTg4Z5R5DPD8/Lzg3PEUqfGretaoLAPMerIxCenr6LzDsRJ0rNc+OhxR4S0tLn5EvJGSwvlIVaJXhRBT86A+21dVVJQIul0vS0tKm4b2LXNHmPhYOmCP1gHDVQR7gHPAh2c7ax7WNhqLlOy4A4XLHSMDjP2HsAt8BKTh2SXFx8a/qofTeANC7CAPHDfZvIvw1AOpJSUlZpPFohIuLA6HYrCqJBQL+u7W1xTLcgh4wNeHW33sESD6A2MfXkOA70M3aJwA9YtbzEr2i1yQqDJ/w4/XeAeTl5YV/Cd0PEdrhkQsT0l1WVqarAiICiHQAIQAQ7x/+x+9SqKN7rPKfAAMAeEr6Wg15E0MAAAAASUVORK5CYII="
3006            });
3007            map.markers.push(marker);
3008            if ($marker.html()) {
3009                locationsToggle = $(".js-locations-toggle").find("[data-lat='" + $marker.attr("data-lat") + "']");
3010                locationsLink = $("locations-toc__link");
3011                $(locationsToggle).click(function() {
3012                    infowindow.setContent($marker.html());
3013                    infowindow.open(map, marker);
3014                    $(".locations-toc__link.active").removeClass("active");
3015                    $(this).addClass("active");
3016                });
3017                google.maps.event.addListener(marker, "click", function() {
3018                    infowindow.setContent($marker.html());
3019                    infowindow.open(map, marker);
3020                });
3021                google.maps.event.addListener(map, "click", function(event) {
3022                    if (infowindow) {
3023                        infowindow.close();
3024                    }
3025                });
3026            }
3027        }
3028        function center_map(map) {
3029            var bounds = new google.maps.LatLngBounds();
3030            $.each(map.markers, function(i, marker) {
3031                var latlng = new google.maps.LatLng(marker.position.lat(), marker.position.lng());
3032                bounds.extend(latlng);
3033            });
3034            if (map.markers.length == 1) {
3035                map.setCenter(bounds.getCenter());
3036                map.setZoom(16);
3037            } else {
3038                map.fitBounds(bounds);
3039            }
3040        }
3041        function center_map_resize(map) {
3042            google.maps.event.addDomListener(window, "resize", function() {
3043                var center = map.getCenter();
3044                google.maps.event.trigger(map, "resize");
3045                map.setCenter(center);
3046            });
3047        }
3048        $(function() {
3049            $(".js-locations-map").each(function() {
3050                render_map($(this));
3051            });
3052            $(".js-hq-map").each(function() {
3053                render_map($(this));
3054            });
3055        });
3056    })(jQuery);
3057}
3058
3059(function($) {
3060    $.everydayImInstagrammin = {
3061        defaults: {
3062            clientID: "null",
3063            accessToken: "null",
3064            numberPics: "12",
3065            captions: "false"
3066        }
3067    };
3068    $.fn.extend({
3069        everydayImInstagrammin: function(options) {
3070            $.extend($.everydayImInstagrammin.defaults, options);
3071            return this.each(function() {
3072                var el = $(this), clientID = options.clientID, accessToken = options.accessToken, numberPics = options.numberPics, instaUrl = "https://api.instagram.com/v1/users/" + clientID + "/media/recent/?access_token=" + accessToken + "&callback=?";
3073                $.ajax({
3074                    type: "GET",
3075                    dataType: "jsonp",
3076                    cache: false,
3077                    url: instaUrl
3078                }).done(function(data) {
3079                    for (var i = 0; i < options.numberPics; i++) {
3080                        if (typeof data.data[i] === "undefined") {
3081                            return false;
3082                        } else {
3083                            var caption = "";
3084                            if (data.data[i].caption !== null) {
3085                                var caption = data.data[i].caption.text;
3086                                el.append('<figure class="insta-item"><a class="insta-item__link" target="_blank" href="' + data.data[i].link + '"><img class="insta-item__img" src="' + data.data[i].images.standard_resolution.url + '" /><div class="insta-item__caption"><p>' + caption + "</p></div></a></figure>");
3087                            } else {
3088                                el.append('<figure class="insta-item"><a class="insta-item__link" target="_blank" href="' + data.data[i].link + '"><img class="insta-item__img" src="' + data.data[i].images.standard_resolution.url + '"  /></a></figure>');
3089                            }
3090                        }
3091                    }
3092                }).fail(function(jqXHR, textStatus) {
3093                    console.log("Nah Burv. Request failed: " + textStatus);
3094                });
3095            });
3096        }
3097    });
3098})(jQuery);
3099
3100$(".js-insta").everydayImInstagrammin({
3101    clientID: "2254353059",
3102    accessToken: "2254353059.1677ed0.a0d4058536024f7c9f37f0e3227c1656",
3103    numberPics: "6",
3104    captions: "true"
3105});
3106
3107!function(root, factory) {
3108    if (typeof define === "function" && define.amd) {
3109        define([ "jquery" ], factory);
3110    } else if (typeof exports === "object") {
3111        factory(require("jquery"));
3112    } else {
3113        factory(root.jQuery);
3114    }
3115}(this, function($) {
3116    "use strict";
3117    var PLUGIN_NAME = "vide";
3118    var DEFAULTS = {
3119        volume: 1,
3120        playbackRate: 1,
3121        muted: true,
3122        loop: true,
3123        autoplay: true,
3124        position: "50% 50%",
3125        posterType: "detect",
3126        resizing: true,
3127        bgColor: "transparent",
3128        className: ""
3129    };
3130    var NOT_IMPLEMENTED_MSG = "Not implemented";
3131    function parseOptions(str) {
3132        var obj = {};
3133        var delimiterIndex;
3134        var option;
3135        var prop;
3136        var val;
3137        var arr;
3138        var len;
3139        var i;
3140        arr = str.replace(/\s*:\s*/g, ":").replace(/\s*,\s*/g, ",").split(",");
3141        for (i = 0, len = arr.length; i < len; i++) {
3142            option = arr[i];
3143            if (option.search(/^(http|https|ftp):\/\//) !== -1 || option.search(":") === -1) {
3144                break;
3145            }
3146            delimiterIndex = option.indexOf(":");
3147            prop = option.substring(0, delimiterIndex);
3148            val = option.substring(delimiterIndex + 1);
3149            if (!val) {
3150                val = undefined;
3151            }
3152            if (typeof val === "string") {
3153                val = val === "true" || (val === "false" ? false : val);
3154            }
3155            if (typeof val === "string") {
3156                val = !isNaN(val) ? +val : val;
3157            }
3158            obj[prop] = val;
3159        }
3160        if (prop == null && val == null) {
3161            return str;
3162        }
3163        return obj;
3164    }
3165    function parsePosition(str) {
3166        str = "" + str;
3167        var args = str.split(/\s+/);
3168        var x = "50%";
3169        var y = "50%";
3170        var len;
3171        var arg;
3172        var i;
3173        for (i = 0, len = args.length; i < len; i++) {
3174            arg = args[i];
3175            if (arg === "left") {
3176                x = "0%";
3177            } else if (arg === "right") {
3178                x = "100%";
3179            } else if (arg === "top") {
3180                y = "0%";
3181            } else if (arg === "bottom") {
3182                y = "100%";
3183            } else if (arg === "center") {
3184                if (i === 0) {
3185                    x = "50%";
3186                } else {
3187                    y = "50%";
3188                }
3189            } else {
3190                if (i === 0) {
3191                    x = arg;
3192                } else {
3193                    y = arg;
3194                }
3195            }
3196        }
3197        return {
3198            x: x,
3199            y: y
3200        };
3201    }
3202    function findPoster(path, callback) {
3203        var onLoad = function() {
3204            callback(this.src);
3205        };
3206        $;
3207        $('<img src="' + path + '.jpg">').load(onLoad);
3208    }
3209    function Vide(element, path, options) {
3210        this.$element = $(element);
3211        if (typeof path === "string") {
3212            path = parseOptions(path);
3213        }
3214        if (!options) {
3215            options = {};
3216        } else if (typeof options === "string") {
3217            options = parseOptions(options);
3218        }
3219        if (typeof path === "string") {
3220            path = path.replace(/\.\w*$/, "");
3221        } else if (typeof path === "object") {
3222            for (var i in path) {
3223                if (path.hasOwnProperty(i)) {
3224                    path[i] = path[i].replace(/\.\w*$/, "");
3225                }
3226            }
3227        }
3228        this.settings = $.extend({}, DEFAULTS, options);
3229        this.path = path;
3230        try {
3231            this.init();
3232        } catch (e) {
vendor: 4,640 bytes, lines 3233-3356
3233            if (e.message !== NOT_IMPLEMENTED_MSG) {
3234                throw e;
3235            }
3236        }
3237    }
3238    Vide.prototype.init = function() {
3239        var vide = this;
3240        var path = vide.path;
3241        var poster = path;
3242        var sources = "";
3243        var $element = vide.$element;
3244        var settings = vide.settings;
3245        var position = parsePosition(settings.position);
3246        var posterType = settings.posterType;
3247        var $video;
3248        var $wrapper;
3249        $wrapper = vide.$wrapper = $("<div>").addClass(settings.className).css({
3250            position: "absolute",
3251            "z-index": -1,
3252            top: 0,
3253            left: 0,
3254            bottom: 0,
3255            right: 0,
3256            overflow: "hidden",
3257            "-webkit-background-size": "cover",
3258            "-moz-background-size": "cover",
3259            "-o-background-size": "cover",
3260            "background-size": "cover",
3261            "background-color": settings.bgColor,
3262            "background-repeat": "no-repeat",
3263            "background-position": position.x + " " + position.y
3264        });
3265        if (typeof path === "object") {
3266            if (path.poster) {
3267                poster = path.poster;
3268            } else {
3269                if (path.mp4) {
3270                    poster = path.mp4;
3271                } else if (path.webm) {
3272                    poster = path.webm;
3273                } else if (path.ogv) {
3274                    poster = path.ogv;
3275                }
3276            }
3277        }
3278        if (posterType === "detect") {
3279            findPoster(poster, function(url) {
3280                $wrapper.css("background-image", "url(" + url + ")");
3281            });
3282        } else if (posterType !== "none") {
3283            $wrapper.css("background-image", "url(" + poster + "." + posterType + ")");
3284        }
3285        if ($element.css("position") === "static") {
3286            $element.css("position", "relative");
3287        }
3288        $element.prepend($wrapper);
3289        if (typeof path === "object") {
3290            if (path.mp4) {
3291                sources += '<source src="' + path.mp4 + '.mp4" type="video/mp4">';
3292            }
3293            if (path.webm) {
3294                sources += '<source src="' + path.webm + '.webm" type="video/webm">';
3295            }
3296            if (path.ogv) {
3297                sources += '<source src="' + path.ogv + '.ogv" type="video/ogg">';
3298            }
3299            $video = vide.$video = $("<video>" + sources + "</video>");
3300        } else {
3301            $video = vide.$video = $("<video>" + '<source src="' + path + '.mp4" type="video/mp4">' + '<source src="' + path + '.webm" type="video/webm">' + '<source src="' + path + '.ogv" type="video/ogg">' + "</video>");
3302        }
3303        try {
3304            $video.prop({
3305                autoplay: settings.autoplay,
3306                loop: settings.loop,
3307                volume: settings.volume,
3308                muted: settings.muted,
3309                defaultMuted: settings.muted,
3310                playbackRate: settings.playbackRate,
3311                defaultPlaybackRate: settings.playbackRate
3312            });
3313        } catch (e) {
3314            throw new Error(NOT_IMPLEMENTED_MSG);
3315        }
3316        $video.css({
3317            margin: "auto",
3318            position: "absolute",
3319            "z-index": -1,
3320            top: position.y,
3321            left: position.x,
3322            "-webkit-transform": "translate(-" + position.x + ", -" + position.y + ")",
3323            "-ms-transform": "translate(-" + position.x + ", -" + position.y + ")",
3324            "-moz-transform": "translate(-" + position.x + ", -" + position.y + ")",
3325            transform: "translate(-" + position.x + ", -" + position.y + ")",
3326            visibility: "hidden",
3327            opacity: 0
3328        }).one("canplaythrough." + PLUGIN_NAME, function() {
3329            vide.resize();
3330        }).one("playing." + PLUGIN_NAME, function() {
3331            $video.css({
3332                visibility: "visible",
3333                opacity: 1
3334            });
3335            $wrapper.css("background-image", "none");
3336        });
3337        $element.on("resize." + PLUGIN_NAME, function() {
3338            if (settings.resizing) {
3339                vide.resize();
3340            }
3341        });
3342        $wrapper.append($video);
3343    };
3344    Vide.prototype.getVideoObject = function() {
3345        return this.$video[0];
3346    };
3347    Vide.prototype.resize = function() {
3348        if (!this.$video) {
3349            return;
3350        }
3351        var $wrapper = this.$wrapper;
3352        var $video = this.$video;
3353        var video = $video[0];
3354        var videoHeight = video.videoHeight;
3355        var videoWidth = video.videoWidth;
3356        var wrapperHeight = $wrapper.height();
3357        var wrapperWidth = $wrapper.width();
3358        if (wrapperWidth / videoWidth > wrapperHeight / videoHeight) {
3359            $video.css({
3360                width: wrapperWidth + 2,
3361                height: "auto"
3362            });
3363        } else {
3364            $video.css({
3365                width: "auto",
3366                height: wrapperHeight + 2
3367            });
3368        }
3369    };
3370    Vide.prototype.destroy = function() {
3371        delete $[PLUGIN_NAME].lookup[this.index];
3372        this.$video && this.$video.off(PLUGIN_NAME);
3373        this.$element.off(PLUGIN_NAME).removeData(PLUGIN_NAME);
3374        this.$wrapper.remove();
3375    };
3376    $[PLUGIN_NAME] = {
3377        lookup: []
3378    };
3379    $.fn[PLUGIN_NAME] = function(path, options) {
3380        var instance;
3381        this.each(function() {
3382            instance = $.data(this, PLUGIN_NAME);
3383            instance && instance.destroy();
3384            instance = new Vide(this, path, options);
3385            instance.index = $[PLUGIN_NAME].lookup.push(instance) - 1;
3386            $.data(this, PLUGIN_NAME, instance);
3387        });
3388        return this;
3389    };
3390    $(document).ready(function() {
3391        var $window = $(window);
3392        $window.on("resize." + PLUGIN_NAME, function() {
3393            for (var len = $[PLUGIN_NAME].lookup.length, i = 0, instance; i < len; i++) {
3394                instance = $[PLUGIN_NAME].lookup[i];
3395                if (instance && instance.settings.resizing) {
3396                    instance.resize();
3397                }
3398            }
3399        });
3400        $window.on("unload." + PLUGIN_NAME, function() {
3401            return false;
3402        });
3403        $(document).find("[data-" + PLUGIN_NAME + "-bg]").each(function(i, element) {
3404            var $element = $(element);
3405            var options = $element.data(PLUGIN_NAME + "-options");
3406            var path = $element.data(PLUGIN_NAME + "-bg");
3407            $element[PLUGIN_NAME](path, options);
3408        });
3409    });
3410});
3411
3412var MCSignUp = function() {
3413    var $form = $("#mc-embedded-subscribe-form"), $formSubmit = $("#mc-embedded-subscribe"), $body = $("body"), $signupCheck = $("#signup_check"), $signupCheckLabel = $(".signup__check-label"), $signupNotice = $(".signup-notice"), successOverlayTime = 8150;
3414    var msg_success = "Thank you for subscribing to S&P Real Estate Corp. We will be in touch shortly.";
3415    return {
3416        init: function() {
3417            this.bind();
3418        },
3419        bind: function() {
3420            $formSubmit.on("click", function(e) {
3421                if (e) e.preventDefault();
3422                if ($signupCheck[0].checked === false) {
3423                    $signupCheckLabel.addClass("has-invalid");
3424                    return false;
3425                }
3426                MCSignUp.registerForm();
3427            });
3428        },
3429        closeNotice: function() {
3430            console.log("here");
3431            $(".js-close-notice").click(function(e) {
3432                e.preventDefault();
3433                console.log("clicked");
3434                if ($body.hasClass("signup--error")) {
3435                    console.log("click to remove ");
3436                    $body.removeClass("signup--error");
3437                }
3438            });
3439        },
3440        registerForm: function() {
3441            $.ajax({
3442                type: $form.attr("method"),
3443                url: $form.attr("action"),
3444                data: $form.serialize(),
3445                timeout: 5e3,
3446                cache: false,
3447                dataType: "jsonp",
3448                contentType: "application/json; charset=utf-8",
3449                error: function(err) {
3450                    $signupNotice.html('<span class="alert">Sorry, please try again.</span>');
3451                },
3452                success: function(data) {
3453                    var message;
3454                    if (data.result !== "success") {
3455                        message = data.msg.substring();
3456                        $body.addClass("signup--error");
3457                        $signupNotice.html('<span class="signup-notice__message">' + message + '</span><a class="close-x js-close-notice"></a>');
3458                        $(".signup-form__input").addClass("error");
3459                        MCSignUp.closeNotice();
3460                    } else {
3461                        message = msg_success;
3462                        $body.addClass("signup--success");
3463                        $signupNotice.html('<span class="signup-notice__message">' + message + "</span>");
3464                        $signupCheckLabel.removeClass("has-invalid");
3465                        setTimeout(function() {
3466                            $body.removeClass("signup--error signup--success");
3467                            PopItUp.closePopUp();
3468                        }, successOverlayTime);
3469                    }
3470                }
3471            });
3472        }
3473    };
3474}();
3475
3476MCSignUp.init();
3477
3478var site = {
3479    featureJS: function() {
3480        $("html").removeClass("no-js");
3481        if (!feature.svg) $("html").addClass("no-svg");
3482        if (!feature.cssFlexbox) $("html").addClass("no-flexbox");
3483    },
3484    plax: function() {
3485        $(".js-parallax").parallax(6, "false");
3486    },
3487    mastVids: function() {
3488        $(".bg_vid video").fadeIn(400);
3489    },
3490    sliders: function() {
3491        $(".js-slider-content").slick({
3492            infinite: true,
3493            autoplay: true,
3494            fade: true,
3495            autoplaySpeed: 5e3,
3496            speed: 1e3,
3497            arrows: true,
3498            dots: true,
3499            prevArrow: "<span class='slick-arrow slick-arrow--prev'><i class='icon-left-chev'></i></span>",
3500            nextArrow: "<span class='slick-arrow slick-arrow--next'><i class='icon-right-chev'></i></span>"
3501        });
3502        $(".js-slider-imgs").slick({
3503            infinite: true,
3504            autoplay: true,
3505            fade: false,
3506            autoplaySpeed: 3e3,
3507            arrows: true,
3508            dots: true,
3509            prevArrow: "<span class='slick-arrow slick-arrow--prev'><i class='icon-left-chev'></i></span>",
3510            nextArrow: "<span class='slick-arrow slick-arrow--next'><i class='icon-right-chev'></i></span>"
3511        });
3512    },
3513    lazy: function() {
3514        $(".js-lazy").unveil(10, function() {
3515            $(this).load(function() {
3516                $(this).parent().addClass("loaded");
3517            });
3518        });
3519    }
3520};
3521
3522$(function() {
3523    site.featureJS();
3524    if ($(".js-parallax").length) site.plax();
3525    if ($(".bg_vid").length) site.mastVids();
3526    if ($('[class*="js-slider"]').length) site.sliders();
3527    if ($(".js-lazy").length) site.lazy();
3528});

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.