PageSourceSearch

https://www.sport-grosse.de/out/flow/src/js/scripts.js?1583311858

js sport-grosse.de collected 2026-10-05 23:02:32 UTC 130,679 bytes, 2,204 lines download raw bytes

vendor: 6,040 bytes, lines 1-123
1if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); + function(a) {
2    "use strict";
3    var b = a.fn.jquery.split(" ")[0].split(".");
4    if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1) throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")
5}(jQuery), + function(a) {
6    "use strict";
7
8    function b() {
9        var a = document.createElement("bootstrap"),
10            b = {
11                WebkitTransition: "webkitTransitionEnd",
12                MozTransition: "transitionend",
13                OTransition: "oTransitionEnd otransitionend",
14                transition: "transitionend"
15            };
16        for (var c in b)
17            if (void 0 !== a.style[c]) return {
18                end: b[c]
19            };
20        return !1
21    }
22    a.fn.emulateTransitionEnd = function(b) {
23        var c = !1,
24            d = this;
25        a(this).one("bsTransitionEnd", function() {
26            c = !0
27        });
28        var e = function() {
29            c || a(d).trigger(a.support.transition.end)
30        };
31        return setTimeout(e, b), this
32    }, a(function() {
33        a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = {
34            bindType: a.support.transition.end,
35            delegateType: a.support.transition.end,
36            handle: function(b) {
37                return a(b.target).is(this) ? b.handleObj.handler.apply(this, arguments) : void 0
38            }
39        })
40    })
41}(jQuery), + function(a) {
42    "use strict";
43
44    function b(b) {
45        return this.each(function() {
46            var c = a(this),
47                e = c.data("bs.alert");
48            e || c.data("bs.alert", e = new d(this)), "string" == typeof b && e[b].call(c)
49        })
50    }
51    var c = '[data-dismiss="alert"]',
52        d = function(b) {
53            a(b).on("click", c, this.close)
54        };
55    d.VERSION = "3.3.5", d.TRANSITION_DURATION = 150, d.prototype.close = function(b) {
56        function c() {
57            g.detach().trigger("closed.bs.alert").remove()
58        }
59        var e = a(this),
60            f = e.attr("data-target");
61        f || (f = e.attr("href"), f = f && f.replace(/.*(?=#[^\s]*$)/, ""));
62        var g = a(f);
63        b && b.preventDefault(), g.length || (g = e.closest(".alert")), g.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (g.removeClass("in"), a.support.transition && g.hasClass("fade") ? g.one("bsTransitionEnd", c).emulateTransitionEnd(d.TRANSITION_DURATION) : c())
64    };
65    var e = a.fn.alert;
66    a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function() {
67        return a.fn.alert = e, this
68    }, a(document).on("click.bs.alert.data-api", c, d.prototype.close)
69}(jQuery), + function(a) {
70    "use strict";
71
72    function b(b) {
73        return this.each(function() {
74            var d = a(this),
75                e = d.data("bs.button"),
76                f = "object" == typeof b && b;
77            e || d.data("bs.button", e = new c(this, f)), "toggle" == b ? e.toggle() : b && e.setState(b)
78        })
79    }
80    var c = function(b, d) {
81        this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1
82    };
83    c.VERSION = "3.3.5", c.DEFAULTS = {
84        loadingText: "loading..."
85    }, c.prototype.setState = function(b) {
86        var c = "disabled",
87            d = this.$element,
88            e = d.is("input") ? "val" : "html",
89            f = d.data();
90        b += "Text", null == f.resetText && d.data("resetText", d[e]()), setTimeout(a.proxy(function() {
91            d[e](null == f[b] ? this.options[b] : f[b]), "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c))
92        }, this), 0)
93    }, c.prototype.toggle = function() {
94        var a = !0,
95            b = this.$element.closest('[data-toggle="buttons"]');
96        if (b.length) {
97            var c = this.$element.find("input");
98            "radio" == c.prop("type") ? (c.prop("checked") && (a = !1), b.find(".active").removeClass("active"), this.$element.addClass("active")) : "checkbox" == c.prop("type") && (c.prop("checked") !== this.$element.hasClass("active") && (a = !1), this.$element.toggleClass("active")), c.prop("checked", this.$element.hasClass("active")), a && c.trigger("change")
99        } else this.$element.attr("aria-pressed", !this.$element.hasClass("active")), this.$element.toggleClass("active")
100    };
101    var d = a.fn.button;
102    a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function() {
103        return a.fn.button = d, this
104    }, a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(c) {
105        var d = a(c.target);
106        d.hasClass("btn") || (d = d.closest(".btn")), b.call(d, "toggle"), a(c.target).is('input[type="radio"]') || a(c.target).is('input[type="checkbox"]') || c.preventDefault()
107    }).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(b) {
108        a(b.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(b.type))
109    })
110}(jQuery), + function(a) {
111    "use strict";
112
113    function b(b) {
114        return this.each(function() {
115            var d = a(this),
116                e = d.data("bs.carousel"),
117                f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b),
118                g = "string" == typeof b ? b : f.slide;
119            e || d.data("bs.carousel", e = new c(this, f)), "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle()
120        })
121    }
122    var c = function(b, c) {
123        this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard && this.$element.on("key
vendor: 4,450 bytes, lines 123-204
123down.bs.carousel", a.proxy(this.keydown, this)), "hover" == this.options.pause && !("ontouchstart" in document.documentElement) && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
124    };
125    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 600, c.DEFAULTS = {
126        interval: 5e3,
127        pause: "hover",
128        wrap: !0,
129        keyboard: !0
130    }, c.prototype.keydown = function(a) {
131        if (!/input|textarea/i.test(a.target.tagName)) {
132            switch (a.which) {
133                case 37:
134                    this.prev();
135                    break;
136                case 39:
137                    this.next();
138                    break;
139                default:
140                    return
141            }
142            a.preventDefault()
143        }
144    }, c.prototype.cycle = function(b) {
145        return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
146    }, c.prototype.getItemIndex = function(a) {
147        return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active)
148    }, c.prototype.getItemForDirection = function(a, b) {
149        var c = this.getItemIndex(b),
150            d = "prev" == a && 0 === c || "next" == a && c == this.$items.length - 1;
151        if (d && !this.options.wrap) return b;
152        var e = "prev" == a ? -1 : 1,
153            f = (c + e) % this.$items.length;
154        return this.$items.eq(f)
155    }, c.prototype.to = function(a) {
156        var b = this,
157            c = this.getItemIndex(this.$active = this.$element.find(".item.active"));
158        return a > this.$items.length - 1 || 0 > a ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function() {
159            b.to(a)
160        }) : c == a ? this.pause().cycle() : this.slide(a > c ? "next" : "prev", this.$items.eq(a))
161    }, c.prototype.pause = function(b) {
162        return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
163    }, c.prototype.next = function() {
164        return this.sliding ? void 0 : this.slide("next")
165    }, c.prototype.prev = function() {
166        return this.sliding ? void 0 : this.slide("prev")
167    }, c.prototype.slide = function(b, d) {
168        var e = this.$element.find(".item.active"),
169            f = d || this.getItemForDirection(b, e),
170            g = this.interval,
171            h = "next" == b ? "left" : "right",
172            i = this;
173        if (f.hasClass("active")) return this.sliding = !1;
174        var j = f[0],
175            k = a.Event("slide.bs.carousel", {
176                relatedTarget: j,
177                direction: h
178            });
179        if (this.$element.trigger(k), !k.isDefaultPrevented()) {
180            if (this.sliding = !0, g && this.pause(), this.$indicators.length) {
181                this.$indicators.find(".active").removeClass("active");
182                var l = a(this.$indicators.children()[this.getItemIndex(f)]);
183                l && l.addClass("active")
184            }
185            var m = a.Event("slid.bs.carousel", {
186                relatedTarget: j,
187                direction: h
188            });
189            return a.support.transition && this.$element.hasClass("slide") ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f.addClass(h), e.one("bsTransitionEnd", function() {
190                f.removeClass([b, h].join(" ")).addClass("active"), e.removeClass(["active", h].join(" ")), i.sliding = !1, setTimeout(function() {
191                    i.$element.trigger(m)
192                }, 0)
193            }).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass("active"), f.addClass("active"), this.sliding = !1, this.$element.trigger(m)), g && this.cycle(), this
194        }
195    };
196    var d = a.fn.carousel;
197    a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function() {
198        return a.fn.carousel = d, this
199    };
200    var e = function(c) {
201        var d, e = a(this),
202            f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
203        if (f.hasClass("carousel")) {
204            var g = a.extend({}, f.data(), e.data()),
vendor: 11,199 bytes, lines 205-403
205                h = e.attr("data-slide-to");
206            h && (g.interval = !1), b.call(f, g), h && f.data("bs.carousel").to(h), c.preventDefault()
207        }
208    };
209    a(document).on("click.bs.carousel.data-api", "[data-slide]", e).on("click.bs.carousel.data-api", "[data-slide-to]", e), a(window).on("load", function() {
210        a('[data-ride="carousel"]').each(function() {
211            var c = a(this);
212            b.call(c, c.data())
213        })
214    })
215}(jQuery), + function(a) {
216    "use strict";
217
218    function b(b) {
219        var c, d = b.attr("data-target") || (c = b.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "");
220        return a(d)
221    }
222
223    function c(b) {
224        return this.each(function() {
225            var c = a(this),
226                e = c.data("bs.collapse"),
227                f = a.extend({}, d.DEFAULTS, c.data(), "object" == typeof b && b);
228            !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1), e || c.data("bs.collapse", e = new d(this, f)), "string" == typeof b && e[b]()
229        })
230    }
231    var d = function(b, c) {
232        this.$element = a(b), this.options = a.extend({}, d.DEFAULTS, c), this.$trigger = a('[data-toggle="collapse"][href="#' + b.id + '"],[data-toggle="collapse"][data-target="#' + b.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle()
233    };
234    d.VERSION = "3.3.5", d.TRANSITION_DURATION = 350, d.DEFAULTS = {
235        toggle: !0
236    }, d.prototype.dimension = function() {
237        var a = this.$element.hasClass("width");
238        return a ? "width" : "height"
239    }, d.prototype.show = function() {
240        if (!this.transitioning && !this.$element.hasClass("in")) {
241            var b, e = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
242            if (!(e && e.length && (b = e.data("bs.collapse"), b && b.transitioning))) {
243                var f = a.Event("show.bs.collapse");
244                if (this.$element.trigger(f), !f.isDefaultPrevented()) {
245                    e && e.length && (c.call(e, "hide"), b || e.data("bs.collapse", null));
246                    var g = this.dimension();
247                    this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1;
248                    var h = function() {
249                        this.$element.removeClass("collapsing").addClass("collapse in")[g](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
250                    };
251                    if (!a.support.transition) return h.call(this);
252                    var i = a.camelCase(["scroll", g].join("-"));
253                    this.$element.one("bsTransitionEnd", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])
254                }
255            }
256        }
257    }, d.prototype.hide = function() {
258        if (!this.transitioning && this.$element.hasClass("in")) {
259            var b = a.Event("hide.bs.collapse");
260            if (this.$element.trigger(b), !b.isDefaultPrevented()) {
261                var c = this.dimension();
262                this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning = 1;
263                var e = function() {
264                    this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
265                };
266                return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(e, this)).emulateTransitionEnd(d.TRANSITION_DURATION) : e.call(this)
267            }
268        }
269    }, d.prototype.toggle = function() {
270        this[this.$element.hasClass("in") ? "hide" : "show"]()
271    }, d.prototype.getParent = function() {
272        return a(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(a.proxy(function(c, d) {
273            var e = a(d);
274            this.addAriaAndCollapsedClass(b(e), e)
275        }, this)).end()
276    }, d.prototype.addAriaAndCollapsedClass = function(a, b) {
277        var c = a.hasClass("in");
278        a.attr("aria-expanded", c), b.toggleClass("collapsed", !c).attr("aria-expanded", c)
279    };
280    var e = a.fn.collapse;
281    a.fn.collapse = c, a.fn.collapse.Constructor = d, a.fn.collapse.noConflict = function() {
282        return a.fn.collapse = e, this
283    }, a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(d) {
284        var e = a(this);
285        e.attr("data-target") || d.preventDefault();
286        var f = b(e),
287            g = f.data("bs.collapse"),
288            h = g ? "toggle" : e.data();
289        c.call(f, h)
290    })
291}(jQuery), + function(a) {
292    "use strict";
293
294    function b(b) {
295        var c = b.attr("data-target");
296        c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
297        var d = c && a(c);
298        return d && d.length ? d : b.parent()
299    }
300
301    function c(c) {
302        c && 3 === c.which || (a(e).remove(), a(f).each(function() {
303            var d = a(this),
304                e = b(d),
305                f = {
306                    relatedTarget: this
307                };
308            e.hasClass("open") && (c && "click" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event("hide.bs.dropdown", f)), c.isDefaultPrevented() || (d.attr("aria-expanded", "false"), e.removeClass("open").trigger("hidden.bs.dropdown", f))))
309        }))
310    }
311
312    function d(b) {
313        return this.each(function() {
314            var c = a(this),
315                d = c.data("bs.dropdown");
316            d || c.data("bs.dropdown", d = new g(this)), "string" == typeof b && d[b].call(c)
317        })
318    }
319    var e = ".dropdown-backdrop",
320        f = '[data-toggle="dropdown"]',
321        g = function(b) {
322            a(b).on("click.bs.dropdown", this.toggle)
323        };
324    g.VERSION = "3.3.5", g.prototype.toggle = function(d) {
325        var e = a(this);
326        if (!e.is(".disabled, :disabled")) {
327            var f = b(e),
328                g = f.hasClass("open");
329            if (c(), !g) {
330                "ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click", c);
331                var h = {
332                    relatedTarget: this
333                };
334                if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) return;
335                e.trigger("focus").attr("aria-expanded", "true"), f.toggleClass("open").trigger("shown.bs.dropdown", h)
336            }
337            return !1
338        }
339    }, g.prototype.keydown = function(c) {
340        if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) {
341            var d = a(this);
342            if (c.preventDefault(), c.stopPropagation(), !d.is(".disabled, :disabled")) {
343                var e = b(d),
344                    g = e.hasClass("open");
345                if (!g && 27 != c.which || g && 27 == c.which) return 27 == c.which && e.find(f).trigger("focus"), d.trigger("click");
346                var h = " li:not(.disabled):visible a",
347                    i = e.find(".dropdown-menu" + h);
348                if (i.length) {
349                    var j = i.index(c.target);
350                    38 == c.which && j > 0 && j--, 40 == c.which && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).trigger("focus")
351                }
352            }
353        }
354    };
355    var h = a.fn.dropdown;
356    a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function() {
357        return a.fn.dropdown = h, this
358    }, a(document).on("click.bs.dropdown.data-api", c).on("click.bs.dropdown.data-api", ".dropdown form", function(a) {
359        a.stopPropagation()
360    }).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f, g.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", g.prototype.keydown)
361}(jQuery), + function(a) {
362    "use strict";
363
364    function b(b, d) {
365        return this.each(function() {
366            var e = a(this),
367                f = e.data("bs.modal"),
368                g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
369            f || e.data("bs.modal", f = new c(this, g)), "string" == typeof b ? f[b](d) : g.show && f.show(d)
370        })
371    }
372    var c = function(b, c) {
373        this.options = c, this.$body = a(document.body), this.$element = a(b), this.$dialog = this.$element.find(".modal-dialog"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0, this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function() {
374            this.$element.trigger("loaded.bs.modal")
375        }, this))
376    };
377    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 300, c.BACKDROP_TRANSITION_DURATION = 150, c.DEFAULTS = {
378        backdrop: !0,
379        keyboard: !0,
380        show: !0
381    }, c.prototype.toggle = function(a) {
382        return this.isShown ? this.hide() : this.show(a)
383    }, c.prototype.show = function(b) {
384        var d = this,
385            e = a.Event("show.bs.modal", {
386                relatedTarget: b
387            });
388        this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.$dialog.on("mousedown.dismiss.bs.modal", function() {
389            d.$element.one("mouseup.dismiss.bs.modal", function(b) {
390                a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0)
391            })
392        }), this.backdrop(function() {
393            var e = a.support.transition && d.$element.hasClass("fade");
394            d.$element.parent().length || d.$element.appendTo(d.$body), d.$element.show().scrollTop(0), d.adjustDialog(), e && d.$element[0].offsetWidth, d.$element.addClass("in"), d.enforceFocus();
395            var f = a.Event("shown.bs.modal", {
396                relatedTarget: b
397            });
398            e ? d.$dialog.one("bsTransitionEnd", function() {
399                d.$element.trigger("focus").trigger(f)
400            }).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger("focus").trigger(f)
401        }))
402    }, c.prototype.hide = function(b) {
403        b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").off("
vendor: 14,748 bytes, lines 403-656
403click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"), this.$dialog.off("mousedown.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal())
404    }, c.prototype.enforceFocus = function() {
405        a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function(a) {
406            this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
407        }, this))
408    }, c.prototype.escape = function() {
409        this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", a.proxy(function(a) {
410            27 == a.which && this.hide()
411        }, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
412    }, c.prototype.resize = function() {
413        this.isShown ? a(window).on("resize.bs.modal", a.proxy(this.handleUpdate, this)) : a(window).off("resize.bs.modal")
414    }, c.prototype.hideModal = function() {
415        var a = this;
416        this.$element.hide(), this.backdrop(function() {
417            a.$body.removeClass("modal-open"), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger("hidden.bs.modal")
418        })
419    }, c.prototype.removeBackdrop = function() {
420        this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
421    }, c.prototype.backdrop = function(b) {
422        var d = this,
423            e = this.$element.hasClass("fade") ? "fade" : "";
424        if (this.isShown && this.options.backdrop) {
425            var f = a.support.transition && e;
426            if (this.$backdrop = a(document.createElement("div")).addClass("modal-backdrop " + e).appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", a.proxy(function(a) {
427                    return this.ignoreBackdropClick ? void(this.ignoreBackdropClick = !1) : void(a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide()))
428                }, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) return;
429            f ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b()
430        } else if (!this.isShown && this.$backdrop) {
431            this.$backdrop.removeClass("in");
432            var g = function() {
433                d.removeBackdrop(), b && b()
434            };
435            a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : g()
436        } else b && b()
437    }, c.prototype.handleUpdate = function() {
438        this.adjustDialog()
439    }, c.prototype.adjustDialog = function() {
440        var a = this.$element[0].scrollHeight > document.documentElement.clientHeight;
441        this.$element.css({
442            paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : "",
443            paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : ""
444        })
445    }, c.prototype.resetAdjustments = function() {
446        this.$element.css({
447            paddingLeft: "",
448            paddingRight: ""
449        })
450    }, c.prototype.checkScrollbar = function() {
451        var a = window.innerWidth;
452        if (!a) {
453            var b = document.documentElement.getBoundingClientRect();
454            a = b.right - Math.abs(b.left)
455        }
456        this.bodyIsOverflowing = document.body.clientWidth < a, this.scrollbarWidth = this.measureScrollbar()
457    }, c.prototype.setScrollbar = function() {
458        var a = parseInt(this.$body.css("padding-right") || 0, 10);
459        this.originalBodyPad = document.body.style.paddingRight || "", this.bodyIsOverflowing && this.$body.css("padding-right", a + this.scrollbarWidth)
460    }, c.prototype.resetScrollbar = function() {
461        this.$body.css("padding-right", this.originalBodyPad)
462    }, c.prototype.measureScrollbar = function() {
463        var a = document.createElement("div");
464        a.className = "modal-scrollbar-measure", this.$body.append(a);
465        var b = a.offsetWidth - a.clientWidth;
466        return this.$body[0].removeChild(a), b
467    };
468    var d = a.fn.modal;
469    a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function() {
470        return a.fn.modal = d, this
471    }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(c) {
472        var d = a(this),
473            e = d.attr("href"),
474            f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")),
475            g = f.data("bs.modal") ? "toggle" : a.extend({
476                remote: !/#/.test(e) && e
477            }, f.data(), d.data());
478        d.is("a") && c.preventDefault(), f.one("show.bs.modal", function(a) {
479            a.isDefaultPrevented() || f.one("hidden.bs.modal", function() {
480                d.is(":visible") && d.trigger("focus")
481            })
482        }), b.call(f, g, this)
483    })
484}(jQuery), + function(a) {
485    "use strict";
486
487    function b(b) {
488        return this.each(function() {
489            var d = a(this),
490                e = d.data("bs.tooltip"),
491                f = "object" == typeof b && b;
492            !e && /destroy|hide/.test(b) || (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]())
493        })
494    }
495    var c = function(a, b) {
496        this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init("tooltip", a, b)
497    };
498    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 150, c.DEFAULTS = {
499        animation: !0,
500        placement: "top",
501        selector: !1,
502        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
503        trigger: "hover focus",
504        title: "",
505        delay: 0,
506        html: !1,
507        container: !1,
508        viewport: {
509            selector: "body",
510            padding: 0
511        }
512    }, c.prototype.init = function(b, c, d) {
513        if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = {
514                click: !1,
515                hover: !1,
516                focus: !1
517            }, this.$element[0] instanceof document.constructor && !this.options.selector) throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
518        for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
519            var g = e[f];
520            if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this));
521            else if ("manual" != g) {
522                var h = "hover" == g ? "mouseenter" : "focusin",
523                    i = "hover" == g ? "mouseleave" : "focusout";
524                this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
525            }
526        }
527        this.options.selector ? this._options = a.extend({}, this.options, {
528            trigger: "manual",
529            selector: ""
530        }) : this.fixTitle()
531    }, c.prototype.getDefaults = function() {
532        return c.DEFAULTS
533    }, c.prototype.getOptions = function(b) {
534        return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
535            show: b.delay,
536            hide: b.delay
537        }), b
538    }, c.prototype.getDelegateOptions = function() {
539        var b = {},
540            c = this.getDefaults();
541        return this._options && a.each(this._options, function(a, d) {
542            c[a] != d && (b[a] = d)
543        }), b
544    }, c.prototype.enter = function(b) {
545        var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
546        return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusin" == b.type ? "focus" : "hover"] = !0), c.tip().hasClass("in") || "in" == c.hoverState ? void(c.hoverState = "in") : (clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void(c.timeout = setTimeout(function() {
547            "in" == c.hoverState && c.show()
548        }, c.options.delay.show)) : c.show())
549    }, c.prototype.isInStateTrue = function() {
550        for (var a in this.inState)
551            if (this.inState[a]) return !0;
552        return !1
553    }, c.prototype.leave = function(b) {
554        var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
555        return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), b instanceof a.Event && (c.inState["focusout" == b.type ? "focus" : "hover"] = !1), c.isInStateTrue() ? void 0 : (clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void(c.timeout = setTimeout(function() {
556            "out" == c.hoverState && c.hide()
557        }, c.options.delay.hide)) : c.hide())
558    }, c.prototype.show = function() {
559        var b = a.Event("show.bs." + this.type);
560        if (this.hasContent() && this.enabled) {
561            this.$element.trigger(b);
562            var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
563            if (b.isDefaultPrevented() || !d) return;
564            var e = this,
565                f = this.tip(),
566                g = this.getUID(this.type);
567            this.setContent(), f.attr("id", g), this.$element.attr("aria-describedby", g), this.options.animation && f.addClass("fade");
568            var h = "function" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) : this.options.placement,
569                i = /\s?auto?\s?/i,
570                j = i.test(h);
571            j && (h = h.replace(i, "") || "top"), f.detach().css({
572                top: 0,
573                left: 0,
574                display: "block"
575            }).addClass(h).data("bs." + this.type, this), this.options.container ? f.appendTo(this.options.container) : f.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this.type);
576            var k = this.getPosition(),
577                l = f[0].offsetWidth,
578                m = f[0].offsetHeight;
579            if (j) {
580                var n = h,
581                    o = this.getPosition(this.$viewport);
582                h = "bottom" == h && k.bottom + m > o.bottom ? "top" : "top" == h && k.top - m < o.top ? "bottom" : "right" == h && k.right + l > o.width ? "left" : "left" == h && k.left - l < o.left ? "right" : h, f.removeClass(n).addClass(h)
583            }
584            var p = this.getCalculatedOffset(h, k, l, m);
585            this.applyPlacement(p, h);
586            var q = function() {
587                var a = e.hoverState;
588                e.$element.trigger("shown.bs." + e.type), e.hoverState = null, "out" == a && e.leave(e)
589            };
590            a.support.transition && this.$tip.hasClass("fade") ? f.one("bsTransitionEnd", q).emulateTransitionEnd(c.TRANSITION_DURATION) : q()
591        }
592    }, c.prototype.applyPlacement = function(b, c) {
593        var d = this.tip(),
594            e = d[0].offsetWidth,
595            f = d[0].offsetHeight,
596            g = parseInt(d.css("margin-top"), 10),
597            h = parseInt(d.css("margin-left"), 10);
598        isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a.extend({
599            using: function(a) {
600                d.css({
601                    top: Math.round(a.top),
602                    left: Math.round(a.left)
603                })
604            }
605        }, b), 0), d.addClass("in");
606        var i = d[0].offsetWidth,
607            j = d[0].offsetHeight;
608        "top" == c && j != f && (b.top = b.top + f - j);
609        var k = this.getViewportAdjustedDelta(c, b, i, j);
610        k.left ? b.left += k.left : b.top += k.top;
611        var l = /top|bottom/.test(c),
612            m = l ? 2 * k.left - e + i : 2 * k.top - f + j,
613            n = l ? "offsetWidth" : "offsetHeight";
614        d.offset(b), this.replaceArrow(m, d[0][n], l)
615    }, c.prototype.replaceArrow = function(a, b, c) {
616        this.arrow().css(c ? "left" : "top", 50 * (1 - a / b) + "%").css(c ? "top" : "left", "")
617    }, c.prototype.setContent = function() {
618        var a = this.tip(),
619            b = this.getTitle();
620        a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
621    }, c.prototype.hide = function(b) {
622        function d() {
623            "in" != e.hoverState && f.detach(), e.$element.removeAttr("aria-describedby").trigger("hidden.bs." + e.type), b && b()
624        }
625        var e = this,
626            f = a(this.$tip),
627            g = a.Event("hide.bs." + this.type);
628        return this.$element.trigger(g), g.isDefaultPrevented() ? void 0 : (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one("bsTransitionEnd", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(), this.hoverState = null, this)
629    }, c.prototype.fixTitle = function() {
630        var a = this.$element;
631        (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
632    }, c.prototype.hasContent = function() {
633        return this.getTitle()
634    }, c.prototype.getPosition = function(b) {
635        b = b || this.$element;
636        var c = b[0],
637            d = "BODY" == c.tagName,
638            e = c.getBoundingClientRect();
639        null == e.width && (e = a.extend({}, e, {
640            width: e.right - e.left,
641            height: e.bottom - e.top
642        }));
643        var f = d ? {
644                top: 0,
645                left: 0
646            } : b.offset(),
647            g = {
648                scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop()
649            },
650            h = d ? {
651                width: a(window).width(),
652                height: a(window).height()
653            } : null;
654        return a.extend({}, e, g, h, f)
655    }, c.prototype.getCalculatedOffset = function(a, b, c, d) {
656        return "bottom" == a ? {
vendor: 6,253 bytes, lines 657-781
657            top: b.top + b.height,
658            left: b.left + b.width / 2 - c / 2
659        } : "top" == a ? {
660            top: b.top - d,
661            left: b.left + b.width / 2 - c / 2
662        } : "left" == a ? {
663            top: b.top + b.height / 2 - d / 2,
664            left: b.left - c
665        } : {
666            top: b.top + b.height / 2 - d / 2,
667            left: b.left + b.width
668        }
669    }, c.prototype.getViewportAdjustedDelta = function(a, b, c, d) {
670        var e = {
671            top: 0,
672            left: 0
673        };
674        if (!this.$viewport) return e;
675        var f = this.options.viewport && this.options.viewport.padding || 0,
676            g = this.getPosition(this.$viewport);
677        if (/right|left/.test(a)) {
678            var h = b.top - f - g.scroll,
679                i = b.top + f - g.scroll + d;
680            h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i)
681        } else {
682            var j = b.left - f,
683                k = b.left + f + c;
684            j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k)
685        }
686        return e
687    }, c.prototype.getTitle = function() {
688        var a, b = this.$element,
689            c = this.options;
690        return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
691    }, c.prototype.getUID = function(a) {
692        do a += ~~(1e6 * Math.random()); while (document.getElementById(a));
693        return a
694    }, c.prototype.tip = function() {
695        if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
696        return this.$tip
697    }, c.prototype.arrow = function() {
698        return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
699    }, c.prototype.enable = function() {
700        this.enabled = !0
701    }, c.prototype.disable = function() {
702        this.enabled = !1
703    }, c.prototype.toggleEnabled = function() {
704        this.enabled = !this.enabled
705    }, c.prototype.toggle = function(b) {
706        var c = this;
707        b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))), b ? (c.inState.click = !c.inState.click, c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
708    }, c.prototype.destroy = function() {
709        var a = this;
710        clearTimeout(this.timeout), this.hide(function() {
711            a.$element.off("." + a.type).removeData("bs." + a.type), a.$tip && a.$tip.detach(), a.$tip = null, a.$arrow = null, a.$viewport = null
712        })
713    };
714    var d = a.fn.tooltip;
715    a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function() {
716        return a.fn.tooltip = d, this
717    }
718}(jQuery), + function(a) {
719    "use strict";
720
721    function b(b) {
722        return this.each(function() {
723            var d = a(this),
724                e = d.data("bs.popover"),
725                f = "object" == typeof b && b;
726            !e && /destroy|hide/.test(b) || (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]())
727        })
728    }
729    var c = function(a, b) {
730        this.init("popover", a, b)
731    };
732    if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js");
733    c.VERSION = "3.3.5", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
734        placement: "right",
735        trigger: "click",
736        content: "",
737        template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
738    }), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults = function() {
739        return c.DEFAULTS
740    }, c.prototype.setContent = function() {
741        var a = this.tip(),
742            b = this.getTitle(),
743            c = this.getContent();
744        a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content").children().detach().end()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
745    }, c.prototype.hasContent = function() {
746        return this.getTitle() || this.getContent()
747    }, c.prototype.getContent = function() {
748        var a = this.$element,
749            b = this.options;
750        return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
751    }, c.prototype.arrow = function() {
752        return this.$arrow = this.$arrow || this.tip().find(".arrow")
753    };
754    var d = a.fn.popover;
755    a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function() {
756        return a.fn.popover = d, this
757    }
758}(jQuery), + function(a) {
759    "use strict";
760
761    function b(c, d) {
762        this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", a.proxy(this.process, this)), this.refresh(), this.process()
763    }
764
765    function c(c) {
766        return this.each(function() {
767            var d = a(this),
768                e = d.data("bs.scrollspy"),
769                f = "object" == typeof c && c;
770            e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
771        })
772    }
773    b.VERSION = "3.3.5", b.DEFAULTS = {
774        offset: 10
775    }, b.prototype.getScrollHeight = function() {
776        return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
777    }, b.prototype.refresh = function() {
778        var b = this,
779            c = "offset",
780            d = 0;
781        this.offsets = [], this.targets = [], this.scrollHeight = this.get
vendor: 7,107 bytes, lines 781-917
781ScrollHeight(), a.isWindow(this.$scrollElement[0]) || (c = "position", d = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function() {
782            var b = a(this),
783                e = b.data("target") || b.attr("href"),
784                f = /^#./.test(e) && a(e);
785            return f && f.length && f.is(":visible") && [
786                [f[c]().top + d, e]
787            ] || null
788        }).sort(function(a, b) {
789            return a[0] - b[0]
790        }).each(function() {
791            b.offsets.push(this[0]), b.targets.push(this[1])
792        })
793    }, b.prototype.process = function() {
794        var a, b = this.$scrollElement.scrollTop() + this.options.offset,
795            c = this.getScrollHeight(),
796            d = this.options.offset + c - this.$scrollElement.height(),
797            e = this.offsets,
798            f = this.targets,
799            g = this.activeTarget;
800        if (this.scrollHeight != c && this.refresh(), b >= d) return g != (a = f[f.length - 1]) && this.activate(a);
801        if (g && b < e[0]) return this.activeTarget = null, this.clear();
802        for (a = e.length; a--;) g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a])
803    }, b.prototype.activate = function(b) {
804        this.activeTarget = b, this.clear();
805        var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]',
806            d = a(c).parents("li").addClass("active");
807        d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")),
808            d.trigger("activate.bs.scrollspy")
809    }, b.prototype.clear = function() {
810        a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
811    };
812    var d = a.fn.scrollspy;
813    a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function() {
814        return a.fn.scrollspy = d, this
815    }, a(window).on("load.bs.scrollspy.data-api", function() {
816        a('[data-spy="scroll"]').each(function() {
817            var b = a(this);
818            c.call(b, b.data())
819        })
820    })
821}(jQuery), + function(a) {
822    "use strict";
823
824    function b(b) {
825        return this.each(function() {
826            var d = a(this),
827                e = d.data("bs.tab");
828            e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]()
829        })
830    }
831    var c = function(b) {
832        this.element = a(b)
833    };
834    c.VERSION = "3.3.5", c.TRANSITION_DURATION = 150, c.prototype.show = function() {
835        var b = this.element,
836            c = b.closest("ul:not(.dropdown-menu)"),
837            d = b.data("target");
838        if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
839            var e = c.find(".active:last a"),
840                f = a.Event("hide.bs.tab", {
841                    relatedTarget: b[0]
842                }),
843                g = a.Event("show.bs.tab", {
844                    relatedTarget: e[0]
845                });
846            if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) {
847                var h = a(d);
848                this.activate(b.closest("li"), c), this.activate(h, h.parent(), function() {
849                    e.trigger({
850                        type: "hidden.bs.tab",
851                        relatedTarget: b[0]
852                    }), b.trigger({
853                        type: "shown.bs.tab",
854                        relatedTarget: e[0]
855                    })
856                })
857            }
858        }
859    }, c.prototype.activate = function(b, d, e) {
860        function f() {
861            g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1), b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), h ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu").length && b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), e && e()
862        }
863        var g = d.find("> .active"),
864            h = e && a.support.transition && (g.length && g.hasClass("fade") || !!d.find("> .fade").length);
865        g.length && h ? g.one("bsTransitionEnd", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g.removeClass("in")
866    };
867    var d = a.fn.tab;
868    a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function() {
869        return a.fn.tab = d, this
870    };
871    var e = function(c) {
872        c.preventDefault(), b.call(a(this), "show")
873    };
874    a(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', e).on("click.bs.tab.data-api", '[data-toggle="pill"]', e)
875}(jQuery), + function(a) {
876    "use strict";
877
878    function b(b) {
879        return this.each(function() {
880            var d = a(this),
881                e = d.data("bs.affix"),
882                f = "object" == typeof b && b;
883            e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]()
884        })
885    }
886    var c = function(b, d) {
887        this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition()
888    };
889    c.VERSION = "3.3.5", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = {
890        offset: 0,
891        target: window
892    }, c.prototype.getState = function(a, b, c, d) {
893        var e = this.$target.scrollTop(),
894            f = this.$element.offset(),
895            g = this.$target.height();
896        if (null != c && "top" == this.affixed) return c > e ? "top" : !1;
897        if ("bottom" == this.affixed) return null != c ? e + this.unpin <= f.top ? !1 : "bottom" : a - d >= e + g ? !1 : "bottom";
898        var h = null == this.affixed,
899            i = h ? e : f.top,
900            j = h ? g : b;
901        return null != c && c >= e ? "top" : null != d && i + j >= a - d ? "bottom" : !1
902    }, c.prototype.getPinnedOffset = function() {
903        if (this.pinnedOffset) return this.pinnedOffset;
904        this.$element.removeClass(c.RESET).addClass("affix");
905        var a = this.$target.scrollTop(),
906            b = this.$element.offset();
907        return this.pinnedOffset = b.top - a
908    }, c.prototype.checkPositionWithEventLoop = function() {
909        setTimeout(a.proxy(this.checkPosition, this), 1)
910    }, c.prototype.checkPosition = function() {
911        if (this.$element.is(":visible")) {
912            var b = this.$element.height(),
913                d = this.options.offset,
914                e = d.top,
915                f = d.bottom,
916                g = Math.max(a(document).height(), a(document.body).height());
917            "object" != typeof d && (f = e = d), "function" == typeof e && (e = d.top(this.$element)), "function" == typeof f && (f = d.bottom(this.$element));
918            var h = this.getState(g, b, e, f);
919            if (this.affixed != h) {
920                null != this.unpin && this.$element.css("top", "");
921                var i = "affix" + (h ? "-" + h : ""),
922                    j = a.Event(i + ".bs.affix");
923                if (this.$element.trigger(j), j.isDefaultPrevented()) return;
924                this.affixed = h, this.unpin = "bottom" == h ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix", "affixed") + ".bs.affix")
925            }
926            "bottom" == h && this.$element.offset({
927                top: g - b - f
928            })
929        }
930    };
931    var d = a.fn.affix;
932    a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function() {
933        return a.fn.affix = d, this
934    }, a(window).on("load", function() {
935        a('[data-spy="affix"]').each(function() {
936            var c = a(this),
937                d = c.data();
938            d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d.offsetBottom), null != d.offsetTop && (d.offset.top = d.offsetTop), b.call(c, d)
939        })
940    })
941}(jQuery),
942function(a) {
943    "use strict";
944
945    function b(b) {
946        var c = [{
947            re: /[\xC0-\xC6]/g,
948            ch: "A"
949        }, {
950            re: /[\xE0-\xE6]/g,
951            ch: "a"
952        }, {
953            re: /[\xC8-\xCB]/g,
954            ch: "E"
955        }, {
956            re: /[\xE8-\xEB]/g,
957            ch: "e"
958        }, {
959            re: /[\xCC-\xCF]/g,
960            ch: "I"
961        }, {
962            re: /[\xEC-\xEF]/g,
963            ch: "i"
964        }, {
965            re: /[\xD2-\xD6]/g,
966            ch: "O"
967        }, {
968            re: /[\xF2-\xF6]/g,
969            ch: "o"
970        }, {
971            re: /[\xD9-\xDC]/g,
972            ch: "U"
973        }, {
974            re: /[\xF9-\xFC]/g,
975            ch: "u"
976        }, {
977            re: /[\xC7-\xE7]/g,
978            ch: "c"
979        }, {
980            re: /[\xD1]/g,
981            ch: "N"
982        }, {
983            re: /[\xF1]/g,
984            ch: "n"
985        }];
986        return a.each(c, function() {
987            b = b.replace(this.re, this.ch)
988        }), b
989    }
990
991    function c(a) {
992        var b = {
993                "&": "&amp;",
994                "<": "&lt;",
995                ">": "&gt;",
996                '"': "&quot;",
997                "'": "&#x27;",
998                "`": "&#x60;"
999            },
1000            c = "(?:" + Object.keys(b).join("|") + ")",
1001            d = new RegExp(c),
1002            e = new RegExp(c, "g"),
1003            f = null == a ? "" : "" + a;
1004        return d.test(f) ? f.replace(e, function(a) {
1005            return b[a]
1006        }) : f
1007    }
1008
1009    function d(b, c) {
1010        var d = arguments,
1011            f = b,
1012            g = c;
1013        [].shift.apply(d);
1014        var h, i = this.each(function() {
1015            var b = a(this);
1016            if (b.is("select")) {
1017                var c = b.data("selectpicker"),
1018                    i = "object" == typeof f && f;
1019                if (c) {
1020                    if (i)
1021                        for (var j in i) i.hasOwnProperty(j) && (c.options[j] = i[j])
1022                } else {
1023                    var k = a.extend({}, e.DEFAULTS, a.fn.selectpicker.defaults || {}, b.data(), i);
1024                    b.data("selectpicker", c = new e(this, k, g))
1025                }
1026                "string" == typeof f && (h = c[f] instanceof Function ? c[f].apply(c, d) : c.options[f])
1027            }
1028        });
1029        return "undefined" != typeof h ? h : i
1030    }
1031    String.prototype.includes || ! function() {
1032        var a = {}.toString,
1033            b = function() {
1034                try {
1035                    var a = {},
1036                        b = Object.defineProperty,
1037                        c = b(a, a, a) && b
1038                } catch (d) {}
1039                return c
1040            }(),
1041            c = "".indexOf,
1042            d = function(b) {
1043                if (null == this) throw TypeError();
1044                var d = String(this);
1045                if (b && "[object RegExp]" == a.call(b)) throw TypeError();
1046                var e = d.length,
1047                    f = String(b),
1048                    g = f.length,
1049                    h = arguments.length > 1 ? arguments[1] : void 0,
1050                    i = h ? Number(h) : 0;
1051                i != i && (i = 0);
1052                var j = Math.min(Math.max(i, 0), e);
1053                return g + j > e ? !1 : -1 != c.call(d, f, i)
1054            };
1055        b ? b(String.prototype, "includes", {
1056            value: d,
1057            configurable: !0,
1058            writable: !0
1059        }) : String.prototype.includes = d
1060    }(), String.prototype.startsWith || ! function() {
1061        var a = function() {
1062                try {
1063                    var a = {},
1064                        b = Object.defineProperty,
1065                        c = b(a, a, a) && b
1066                } catch (d) {}
1067                return c
1068            }(),
1069            b = {}.toString,
1070            c = function(a) {
1071                if (null == this) throw TypeError();
1072                var c = String(this);
1073                if (a && "[object RegExp]" == b.call(a)) throw TypeError();
1074                var d = c.length,
1075                    e = String(a),
1076                    f = e.length,
1077                    g = arguments.length > 1 ? arguments[1] : void 0,
1078                    h = g ? Number(g) : 0;
1079                h != h && (h = 0);
1080                var i = Math.min(Math.max(h, 0), d);
1081                if (f + i > d) return !1;
1082                for (var j = -1; ++j < f;)
1083                    if (c.charCodeAt(i + j) != e.charCodeAt(j)) return !1;
1084                return !0
1085            };
1086        a ? a(String.prototype, "startsWith", {
1087            value: c,
1088            configurable: !0,
1089            writable: !0
1090        }) : String.prototype.startsWith = c
1091    }(), Object.keys || (Object.keys = function(a, b, c) {
1092        c = [];
1093        for (b in a) c.hasOwnProperty.call(a, b) && c.push(b);
1094        return c
1095    }), a.expr[":"].icontains = function(b, c, d) {
1096        var e = a(b),
1097            f = (e.data("tokens") || e.text()).toUpperCase();
1098        return f.includes(d[3].toUpperCase())
1099    }, a.expr[":"].ibegins = function(b, c, d) {
1100        var e = a(b),
1101            f = (e.data("tokens") || e.text()).toUpperCase();
1102        return f.startsWith(d[3].toUpperCase())
1103    }, a.expr[":"].aicontains = function(b, c, d) {
1104        var e = a(b),
1105            f = (e.data("tokens") || e.data("normalizedText") || e.text()).toUpperCase();
1106        return f.includes(d[3].toUpperCase())
1107    }, a.expr[":"].aibegins = function(b, c, d) {
1108        var e = a(b),
1109            f = (e.data("tokens") || e.data("normalizedText") || e.text()).toUpperCase();
1110        return f.startsWith(d[3].toUpperCase())
1111    };
1112    var e = function(b, c, d) {
1113        d && (d.stopPropagation(), d.preventDefault()), this.$element = a(b), this.$newElement = null, this.$button = null, this.$menu = null, this.$lis = null, this.options = c, null === this.options.title && (this.options.title = this.$element.attr("title")), this.val = e.prototype.val, this.render = e.prototype.render, this.refresh = e.prototype.refresh, this.setStyle = e.prototype.setStyle, this.selectAll = e.prototype.selectAll, this.deselectAll = e.prototype.deselectAll, this.destroy = e.prototype.remove, this.remove = e.prototype.remove, this.show = e.prototype.show, this.hide = e.prototype.hide, this.init()
1114    };
1115    e.VERSION = "1.7.2", e.DEFAULTS = {
1116        noneSelectedText: "Nothing selected",
1117        noneResultsText: "No results matched {0}",
1118        countSelectedText: function(a, b) {
1119            return 1 == a ? "{0} item selected" : "{0} items selected"
1120        },
1121        maxOptionsText: function(a, b) {
1122            return [1 == a ? "Limit reached ({n} item max)" : "Limit reached ({n} items max)", 1 == b ? "Group limit reached ({n} item max)" : "Group limit reached ({n} items max)"]
1123        },
1124        selectAllText: "Select All",
1125        deselectAllText: "Deselect All",
1126        doneButton: !1,
1127        doneButtonText: "Close",
1128        multipleSeparator: ", ",
1129        styleBase: "btn",
1130        style: "btn-default",
1131        size: "auto",
1132        title: null,
1133        selectedTextFormat: "values",
1134        width: !1,
1135        container: !1,
1136        hideDisabled: !1,
1137        showSubtext: !1,
1138        showIcon: !0,
1139        showContent: !0,
1140        dropupAuto: !0,
1141        header: !1,
1142        liveSearch: !1,
1143        liveSearchPlaceholder: null,
1144        liveSearchNormalize: !1,
1145        liveSearchStyle: "contains",
1146        actionsBox: !1,
1147        iconBase: "glyphicon",
1148        tickIcon: "glyphicon-ok",
1149        maxOptions: !1,
1150        mobile: !1,
1151        selectOnTab: !1,
1152        dropdownAlignRight: !1
1153    }, e.prototype = {
1154        constructor: e,
1155        init: function() {
1156            var b = this,
1157                c = this.$element.attr("id");
1158            this.$element.addClass("bs-select-hidden"), this.liObj = {}, this.multiple = this.$element.prop("multiple"), this.autofocus = this.$element.prop("autofocus"), this.$newElement = this.createView(), this.$element.after(this.$newElement), this.$button = this.$newElement.children("button"), this.$menu = this.$newElement.children(".dropdown-menu"), this.$menuInner = this.$menu.children(".inner"), this.$searchbox = this.$menu.find("input"), this.options.dropdownAlignRight && this.$menu.addClass("dropdown-menu-right"), "undefined" != typeof c && (this.$button.attr("data-id", c), a('label[for="' + c + '"]').click(function(a) {
1159                a.preventDefault(), b.$button.focus()
1160            })), this.checkDisabled(), this.clickListener(), this.options.liveSearch && this.liveSearchListener(), this.render(), this.setStyle(), this.setWidth(), this.options.container && this.selectPosition(), this.$menu.data("this", this), this.$newElement.data("this", this), this.options.mobile && this.mobile(), this.$newElement.on("hide.bs.dropdown", function(a) {
1161                b.$element.trigger("hide.bs.select", a)
1162            }), this.$newElement.on("hidden.bs.dropdown", function(a) {
1163                b.$element.trigger("hidden.bs.select", a)
1164            }), this.$newElement.on("show.bs.dropdown", function(a) {
1165                b.$element.trigger("show.bs.select", a)
1166            }), this.$newElement.on("shown.bs.dropdown", function(a) {
1167                b.$element.trigger("shown.bs.select", a)
1168            }), setTimeout(function() {
1169                b.$element.trigger("loaded.bs.select")
1170            })
1171        },
1172        createDropdown: function() {
1173            var b = this.multiple ? " show-tick" : "",
1174                d = this.$element.parent().hasClass("input-group") ? " input-group-btn" : "",
1175                e = this.autofocus ? " autofocus" : "",
1176                f = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + "</div>" : "",
1177                g = this.options.liveSearch ? '<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"' + (null === this.options.liveSearchPlaceholder ? "" : ' placeholder="' + c(this.options.liveSearchPlaceholder) + '"') + "></div>" : "",
1178                h = this.multiple && this.options.actionsBox ? '<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn btn-default">' + this.options.selectAllText + '</button><button type="button" class="actions-btn bs-deselect-all btn btn-default">' + this.options.deselectAllText + "</button></div></div>" : "",
1179                i = this.multiple && this.options.doneButton ? '<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm btn-default">' + this.options.doneButtonText + "</button></div></div>" : "",
1180                j = '<div class="btn-group bootstrap-select' + b + d + '"><button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + e + '><span class="filter-option pull-left"></span>&nbsp;<span class="caret"></span></button><div class="dropdown-menu open">' + f + g + h + '<ul class="dropdown-menu inner" role="menu"></ul>' + i + "</div></div>";
1181            return a(j)
1182        },
1183        createView: function() {
1184            var a = this.createDropdown(),
1185                b = this.createLi();
1186            return a.find("ul")[0].innerHTML = b, a
1187        },
1188        reloadLi: function() {
1189            this.destroyLi();
1190            var a = this.createLi();
1191            this.$menuInner[0].innerHTML = a
1192        },
1193        destroyLi: function() {
1194            this.$menu.find("li").remove()
1195        },
1196        createLi: function() {
1197            var d = this,
1198                e = [],
1199                f = 0,
1200                g = document.createElement("option"),
1201                h = -1,
1202                i = function(a, b, c, d) {
1203                    return "<li" + ("undefined" != typeof c & "" !== c ? ' class="' + c + '"' : "") + ("undefined" != typeof b & null !== b ? ' data-original-index="' + b + '"' : "") + ("undefined" != typeof d & null !== d ? 'data-optgroup="' + d + '"' : "") + ">" + a + "</li>"
1204                },
1205                j = function(a, e, f, g) {
1206                    return '<a tabindex="0"' + ("undefined" != typeof e ? ' class="' + e + '"' : "") + ("undefined" != typeof f ? ' style="' + f + '"' : "") + (d.options.liveSearchNormalize ? ' data-normalized-text="' + b(c(a)) + '"' : "") + ("undefined" != typeof g || null !== g ? ' data-tokens="' + g + '"' : "") + ">" + a + '<span class="' + d.options.iconBase + " " + d.options.tickIcon + ' check-mark"></span></a>'
1207                };
1208            if (this.options.title && !this.multiple && (h--, !this.$element.find(".bs-title-option").length)) {
1209                var k = this.$element[0];
1210                g.className = "bs-title-option", g.appendChild(document.createTextNode(this.options.title)), g.value = "", k.insertBefore(g, k.firstChild), null === k.options[k.selectedIndex].getAttribute("selected") && (g.selected = !0)
1211            }
1212            return this.$element.find("option").each(function(b) {
1213                var c = a(this);
1214                if (h++, !c.hasClass("bs-title-option")) {
1215                    var g = this.className || "",
1216                        k = this.style.cssText,
1217                        l = c.data("content") ? c.data("content") : c.html(),
1218                        m = c.data("tokens") ? c.data("tokens") : null,
1219                        n = "undefined" != typeof c.data("subtext") ? '<small class="text-muted">' + c.data("subtext") + "</small>" : "",
1220                        o = "undefined" != typeof c.data("icon") ? '<span class="' + d.options.iconBase + " " + c.data("icon") + '"></span> ' : "",
1221                        p = this.disabled || "OPTGROUP" === this.parentElement.tagName && this.parentElement.disabled;
1222                    if ("" !== o && p && (o = "<span>" + o + "</span>"), d.options.hideDisabled && p) return void h--;
1223                    if (c.data("content") || (l = o + '<span class="text">' + l + n + "</span>"), "OPTGROUP" === this.parentElement.tagName && c.data("divider") !== !0) {
1224                        if (0 === c.index()) {
1225                            f += 1;
1226                            var q = this.parentElement.label,
1227                                r = "undefined" != typeof c.parent().data("subtext") ? '<small class="text-muted">' + c.parent().data("subtext") + "</small>" : "",
1228                                s = c.parent().data("icon") ? '<span class="' + d.options.iconBase + " " + c.parent().data("icon") + '"></span> ' : "",
1229                                t = " " + this.parentElement.className || "";
1230                            q = s + '<span class="text">' + q + r + "</span>", 0 !== b && e.length > 0 && (h++, e.push(i("", null, "divider", f + "div"))), h++, e.push(i(q, null, "dropdown-header" + t, f))
1231                        }
1232                        e.push(i(j(l, "opt " + g + t, k, m), b, "", f))
1233                    } else c.data("divider") === !0 ? e.push(i("", b, "divider")) : c.data("hidden") === !0 ? e.push(i(j(l, g, k, m), b, "hidden is-hidden")) : (this.previousElementSibling && "OPTGROUP" === this.previousElementSibling.tagName && (h++, e.push(i("", null, "divider", f + "div"))), e.push(i(j(l, g, k, m), b)));
1234                    d.liObj[b] = h
1235                }
1236            }), this.multiple || 0 !== this.$element.find("option:selected").length || this.options.title || this.$element.find("option").eq(0).prop("selected", !0).attr("selected", "selected"), e.join("")
1237        },
1238        findLis: function() {
1239            return null == this.$lis && (this.$lis = this.$menu.find("li")), this.$lis
1240        },
1241        render: function(b) {
1242            var c, d = this;
1243            b !== !1 && this.$element.find("option").each(function(a) {
1244                var b = d.findLis().eq(d.liObj[a]);
1245                d.setDisabled(a, this.disabled || "OPTGROUP" === this.parentElement.tagName && this.parentElement.disabled, b), d.setSelected(a, this.selected, b)
1246            }), this.tabIndex();
1247            var e = this.$element.find("option").map(function() {
1248                    if (this.selected) {
1249                        if (d.options.hideDisabled && (this.disabled || "OPTGROUP" === this.parentElement.tagName && this.parentElement.disabled)) return !1;
1250                        var b, c = a(this),
1251                            e = c.data("icon") && d.options.showIcon ? '<i class="' + d.options.iconBase + " " + c.data("icon") + '"></i> ' : "";
1252                        return b = d.options.showSubtext && c.data("subtext") && !d.multiple ? ' <small class="text-muted">' + c.data("subtext") + "</small>" : "", "undefined" != typeof c.attr("title") ? c.attr("title") : c.data("content") && d.options.showContent ? c.data("content") : e + c.html() + b
1253                    }
1254                }).toArray(),
1255                f = this.multiple ? e.join(this.options.multipleSeparator) : e[0];
1256            if (this.multiple && this.options.selectedTextFormat.indexOf("count") > -1) {
1257                var g = this.options.selectedTextFormat.split(">");
1258                if (g.length > 1 && e.length > g[1] || 1 == g.length && e.length >= 2) {
1259                    c = this.options.hideDisabled ? ", [disabled]" : "";
1260                    var h = this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]' + c).length,
1261                        i = "function" == typeof this.options.countSelectedText ? this.options.countSelectedText(e.length, h) : this.options.countSelectedText;
1262                    f = i.replace("{0}", e.length.toString()).replace("{1}", h.toString())
1263                }
1264            }
1265            void 0 == this.options.title && (this.options.title = this.$element.attr("title")), "static" == this.options.selectedTextFormat && (f = this.options.title), f || (f = "undefined" != typeof this.options.title ? this.options.title : this.options.noneSelectedText), this.$button.attr("title", a.trim(f.replace(/<[^>]*>?/g, ""))), this.$button.children(".filter-option").html(f), this.$element.trigger("rendered.bs.select")
1266        },
1267        setStyle: function(a, b) {
1268            this.$element.attr("class") && this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ""));
1269            var c = a ? a : this.options.style;
1270            "add" == b ? this.$button.addClass(c) : "remove" == b ? this.$button.removeClass(c) : (this.$button.removeClass(this.options.style), this.$button.addClass(c))
1271        },
1272        liHeight: function(b) {
1273            if (b || this.options.size !== !1 && !this.sizeInfo) {
1274                var c = document.createElement("div"),
1275                    d = document.createElement("div"),
1276                    e = document.createElement("ul"),
1277                    f = document.createElement("li"),
1278                    g = document.createElement("li"),
1279                    h = document.createElement("a"),
1280                    i = document.createElement("span"),
1281                    j = this.options.header ? this.$menu.find(".popover-title")[0].cloneNode(!0) : null,
1282                    k = this.options.liveSearch ? document.createElement("div") : null,
1283                    l = this.options.actionsBox && this.multiple ? this.$menu.find(".bs-actionsbox")[0].cloneNode(!0) : null,
1284                    m = this.options.doneButton && this.multiple ? this.$menu.find(".bs-donebutton")[0].cloneNode(!0) : null;
1285                if (i.className = "text", c.className = this.$menu[0].parentNode.className + " open", d.className = "dropdown-menu open", e.className = "dropdown-menu inner", f.className = "divider", i.appendChild(document.createTextNode("Inner text")), h.appendChild(i), g.appendChild(h), e.appendChild(g), e.appendChild(f), j && d.appendChild(j), k) {
1286                    var n = document.createElement("span");
1287                    k.className = "bs-searchbox", n.className = "form-control", k.appendChild(n), d.appendChild(k)
1288                }
1289                l && d.appendChild(l), d.appendChild(e), m && d.appendChild(m), c.appendChild(d), document.body.appendChild(c);
1290                var o = h.offsetHeight,
1291                    p = j ? j.offsetHeight : 0,
1292                    q = k ? k.offsetHeight : 0,
1293                    r = l ? l.offsetHeight : 0,
1294                    s = m ? m.offsetHeight : 0,
1295                    t = a(f).outerHeight(!0),
1296                    u = getComputedStyle ? getComputedStyle(d) : !1,
1297                    v = u ? a(d) : null,
1298                    w = parseInt(u ? u.paddingTop : v.css("paddingTop")) + parseInt(u ? u.paddingBottom : v.css("paddingBottom")) + parseInt(u ? u.borderTopWidth : v.css("borderTopWidth")) + parseInt(u ? u.borderBottomWidth : v.css("borderBottomWidth")),
1299                    x = w + parseInt(u ? u.marginTop : v.css("marginTop")) + parseInt(u ? u.marginBottom : v.css("marginBottom")) + 2;
1300                document.body.removeChild(c), this.sizeInfo = {
1301                    liHeight: o,
1302                    headerHeight: p,
1303                    searchHeight: q,
1304                    actionsHeight: r,
1305                    doneButtonHeight: s,
1306                    dividerHeight: t,
1307                    menuPadding: w,
1308                    menuExtras: x
1309                }
1310            }
1311        },
1312        setSize: function() {
1313            this.findLis(), this.liHeight();
1314            var b, c, d, e, f = this,
1315                g = this.$menu,
1316                h = this.$menuInner,
1317                i = a(window),
1318                j = this.$newElement[0].offsetHeight,
1319                k = this.sizeInfo.liHeight,
1320                l = this.sizeInfo.headerHeight,
1321                m = this.sizeInfo.searchHeight,
1322                n = this.sizeInfo.actionsHeight,
1323                o = this.sizeInfo.doneButtonHeight,
1324                p = this.sizeInfo.dividerHeight,
1325                q = this.sizeInfo.menuPadding,
1326                r = this.sizeInfo.menuExtras,
1327                s = this.options.hideDisabled ? ".disabled" : "",
1328                t = function() {
1329                    d = f.$newElement.offset().top - i.scrollTop(), e = i.height() - d - j
1330                };
1331            if (t(), this.options.header && g.css("padding-top", 0), "auto" === this.options.size) {
1332                var u = function() {
1333                    var i, j = function(b, c) {
1334                            return function(d) {
1335                                return c ? d.classList ? d.classList.contains(b) : a(d).hasClass(b) : !(d.classList ? d.classList.contains(b) : a(d).hasClass(b))
1336                            }
1337                        },
1338                        p = f.$menuInner[0].getElementsByTagName("li"),
1339                        s = Array.prototype.filter ? Array.prototype.filter.call(p, j("hidden", !1)) : f.$lis.not(".hidden"),
1340                        u = Array.prototype.filter ? Array.prototype.filter.call(s, j("dropdown-header", !0)) : s.filter(".dropdown-header");
1341                    t(), b = e - r, f.options.container ? (g.data("height") || g.data("height", g.height()), c = g.data("height")) : c = g.height(), f.options.dropupAuto && f.$newElement.toggleClass("dropup", d > e && c > b - r), f.$newElement.hasClass("dropup") && (b = d - r), i = s.length + u.length > 3 ? 3 * k + r - 2 : 0, g.css({
1342                        "max-height": b + "px",
1343                        overflow: "hidden",
1344                        "min-height": i + l + m + n + o + "px"
1345                    }), h.css({
1346                        "max-height": b - l - m - n - o - q + "px",
1347                        "overflow-y": "auto",
1348                        "min-height": Math.max(i - q, 0) + "px"
1349                    })
1350                };
1351                u(), this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize", u), i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize", u)
1352            } else if (this.options.size && "auto" != this.options.size && this.$lis.not(s).length > this.options.size) {
1353                var v = this.$lis.not(".divider").not(s).children().slice(0, this.options.size).last().parent().index(),
1354                    w = this.$lis.slice(0, v + 1).filter(".divider").length;
1355                b = k * this.options.size + w * p + q, f.options.container ? (g.data("height") || g.data("height", g.height()), c = g.data("height")) : c = g.height(), f.options.dropupAuto && this.$newElement.toggleClass("dropup", d > e && c > b - r), g.css({
1356                    "max-height": b + l + m + n + o + "px",
1357                    overflow: "hidden",
1358                    "min-height": ""
1359                }), h.css({
1360                    "max-height": b - q + "px",
1361                    "overflow-y": "auto",
1362                    "min-height": ""
1363                })
1364            }
1365        },
1366        setWidth: function() {
1367            if ("auto" === this.options.width) {
1368                this.$menu.css("min-width", "0");
1369                var a = this.$menu.parent().clone().appendTo("body"),
1370                    b = this.options.container ? this.$newElement.clone().appendTo("body") : a,
1371                    c = a.children(".dropdown-menu").outerWidth(),
1372                    d = b.css("width", "auto").children("button").outerWidth();
1373                a.remove(), b.remove(), this.$newElement.css("width", Math.max(c, d) + "px")
1374            } else "fit" === this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", "").addClass("fit-width")) : this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", this.options.width)) : (this.$menu.css("min-width", ""), this.$newElement.css("width", ""));
1375            this.$newElement.hasClass("fit-width") && "fit" !== this.options.width && this.$newElement.removeClass("fit-width")
1376        },
1377        selectPosition: function() {
1378            var b, c, d = this,
1379                e = "<div />",
1380                f = a(e),
1381                g = function(a) {
1382                    f.addClass(a.attr("class").replace(/form-control|fit-width/gi, "")).toggleClass("dropup", a.hasClass("dropup")), b = a.offset(), c = a.hasClass("dropup") ? 0 : a[0].offsetHeight, f.css({
1383                        top: b.top + c,
1384                        left: b.left,
1385                        width: a[0].offsetWidth,
1386                        position: "absolute"
1387                    })
1388                };
1389            this.$newElement.on("click", function() {
1390                d.isDisabled() || (g(a(this)), f.appendTo(d.options.container), f.toggleClass("open", !a(this).hasClass("open")), f.append(d.$menu))
1391            }), a(window).on("resize scroll", function() {
1392                g(d.$newElement)
1393            }), this.$element.on("hide.bs.select", function() {
1394                d.$menu.data("height", d.$menu.height()), f.detach()
1395            })
1396        },
1397        setSelected: function(a, b, c) {
1398            if (!c) var c = this.findLis().eq(this.liObj[a]);
1399            c.toggleClass("selected", b)
1400        },
1401        setDisabled: function(a, b, c) {
1402            if (!c) var c = this.findLis().eq(this.liObj[a]);
1403            b ? c.addClass("disabled").children("a").attr("href", "#").attr("tabindex", -1) : c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex", 0)
1404        },
1405        isDisabled: function() {
1406            return this.$element[0].disabled
1407        },
1408        checkDisabled: function() {
1409            var a = this;
1410            this.isDisabled() ? (this.$newElement.addClass("disabled"), this.$button.addClass("disabled").attr("tabindex", -1)) : (this.$button.hasClass("disabled") && (this.$newElement.removeClass("disabled"), this.$button.removeClass("disabled")), -1 != this.$button.attr("tabindex") || this.$element.data("tabindex") || this.$button.removeAttr("tabindex")), this.$button.click(function() {
1411                return !a.isDisabled()
1412            })
1413        },
1414        tabIndex: function() {
1415            this.$element.is("[tabindex]") && (this.$element.data("tabindex", this.$element.attr("tabindex")), this.$button.attr("tabindex", this.$element.data("tabindex")))
1416        },
1417        clickListener: function() {
1418            var b = this,
1419                c = a(document);
1420            this.$newElement.on("touchstart.dropdown", ".dropdown-menu", function(a) {
1421                a.stopPropagation()
1422            }), c.data("spaceSelect", !1), this.$button.on("keyup", function(a) {
1423                /(32)/.test(a.keyCode.toString(10)) && c.data("spaceSelect") && (a.preventDefault(), c.data("spaceSelect", !1))
1424            }), this.$newElement.on("click", function() {
1425                b.setSize(), b.$element.on("shown.bs.select", function() {
1426                    if (b.options.liveSearch || b.multiple) {
1427                        if (!b.multiple) {
1428                            var a = b.liObj[b.$element[0].selectedIndex];
1429                            if ("number" != typeof a) return;
1430                            var c = b.$lis.eq(a)[0].offsetTop - b.$menuInner[0].offsetTop;
1431                            c = c - b.$menuInner[0].offsetHeight / 2 + b.sizeInfo.liHeight / 2, b.$menuInner[0].scrollTop = c
1432                        }
1433                    } else b.$menu.find(".selected a").focus()
1434                })
1435            }), this.$menu.on("click", "li a", function(c) {
1436                var d = a(this),
1437                    e = d.parent().data("originalIndex"),
1438                    f = b.$element.val(),
1439                    g = b.$element.prop("selectedIndex");
1440                if (b.multiple && c.stopPropagation(), c.preventDefault(), !b.isDisabled() && !d.parent().hasClass("disabled")) {
1441                    var h = b.$element.find("option"),
1442                        i = h.eq(e),
1443                        j = i.prop("selected"),
1444                        k = i.parent("optgroup"),
1445                        l = b.options.maxOptions,
1446                        m = k.data("maxOptions") || !1;
1447                    if (b.multiple) {
1448                        if (i.prop("selected", !j), b.setSelected(e, !j), d.blur(), l !== !1 || m !== !1) {
1449                            var n = l < h.filter(":selected").length,
1450                                o = m < k.find("option:selected").length;
1451                            if (l && n || m && o)
1452                                if (l && 1 == l) h.prop("selected", !1), i.prop("selected", !0), b.$menu.find(".selected").removeClass("selected"), b.setSelected(e, !0);
1453                                else if (m && 1 == m) {
1454                                k.find("option:selected").prop("selected", !1), i.prop("selected", !0);
1455                                var p = d.parent().data("optgroup");
1456                                b.$menu.find('[data-optgroup="' + p + '"]').removeClass("selected"), b.setSelected(e, !0)
1457                            } else {
1458                                var q = "function" == typeof b.options.maxOptionsText ? b.options.maxOptionsText(l, m) : b.options.maxOptionsText,
1459                                    r = q[0].replace("{n}", l),
1460                                    s = q[1].replace("{n}", m),
1461                                    t = a('<div class="notify"></div>');
1462                                q[2] && (r = r.replace("{var}", q[2][l > 1 ? 0 : 1]), s = s.replace("{var}", q[2][m > 1 ? 0 : 1])), i.prop("selected", !1), b.$menu.append(t), l && n && (t.append(a("<div>" + r + "</div>")), b.$element.trigger("maxReached.bs.select")), m && o && (t.append(a("<div>" + s + "</div>")), b.$element.trigger("maxReachedGrp.bs.select")), setTimeout(function() {
1463                                    b.setSelected(e, !1)
1464                                }, 10), t.delay(750).fadeOut(300, function() {
1465                                    a(this).remove()
1466                                })
1467                            }
1468                        }
1469                    } else h.prop("selected", !1), i.prop("selected", !0), b.$menu.find(".selected").removeClass("selected"), b.setSelected(e, !0);
1470                    b.multiple ? b.options.liveSearch && b.$searchbox.focus() : b.$button.focus(), (f != b.$element.val() && b.multiple || g != b.$element.prop("selectedIndex") && !b.multiple) && (b.$element.change(), b.$element.trigger("changed.bs.select", [e, i.prop("selected"), j]))
1471                }
1472            }), this.$menu.on("click", "li.disabled a, .popover-title, .popover-title :not(.close)", function(c) {
1473                c.currentTarget == this && (c.preventDefault(), c.stopPropagation(), b.options.liveSearch && !a(c.target).hasClass("close") ? b.$searchbox.focus() : b.$button.focus())
1474            }), this.$menu.on("click", "li.divider, li.dropdown-header", function(a) {
1475                a.preventDefault(), a.stopPropagation(), b.options.liveSearch ? b.$searchbox.focus() : b.$button.focus()
1476            }), this.$menu.on("click", ".popover-title .close", function() {
1477                b.$button.click()
1478            }), this.$searchbox.on("click", function(a) {
1479                a.stopPropagation()
1480            }), this.$menu.on("click", ".actions-btn", function(c) {
1481                b.options.liveSearch ? b.$searchbox.focus() : b.$button.focus(), c.preventDefault(), c.stopPropagation(), a(this).hasClass("bs-select-all") ? b.selectAll() : b.deselectAll(), b.$element.change()
1482            }), this.$element.change(function() {
1483                b.render(!1)
1484            })
1485        },
1486        liveSearchListener: function() {
1487            var d = this,
1488                e = a('<li class="no-results"></li>');
1489            this.$newElement.on("click.dropdown.data-api touchstart.dropdown.data-api", function() {
1490                d.$menuInner.find(".active").removeClass("active"), d.$searchbox.val() && (d.$searchbox.val(""), d.$lis.not(".is-hidden").removeClass("hidden"), e.parent().length && e.remove()), d.multiple || d.$menuInner.find(".selected").addClass("active"), setTimeout(function() {
1491                    d.$searchbox.focus()
1492                }, 10)
1493            }), this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api", function(a) {
1494                a.stopPropagation()
1495            }), this.$searchbox.on("input propertychange", function() {
1496                if (d.$searchbox.val()) {
1497                    var f = d.$lis.not(".is-hidden").removeClass("hidden").children("a");
1498                    f = d.options.liveSearchNormalize ? f.not(":a" + d._searchStyle() + "(" + b(d.$searchbox.val()) + ")") : f.not(":" + d._searchStyle() + "(" + d.$searchbox.val() + ")"), f.parent().addClass("hidden"), d.$lis.filter(".dropdown-header").each(function() {
1499                        var b = a(this),
1500                            c = b.data("optgroup");
1501                        0 === d.$lis.filter("[data-optgroup=" + c + "]").not(b).not(".hidden").length && (b.addClass("hidden"), d.$lis.filter("[data-optgroup=" + c + "div]").addClass("hidden"))
1502                    });
1503                    var g = d.$lis.not(".hidden");
1504                    g.each(function(b) {
1505                        var c = a(this);
1506                        c.hasClass("divider") && (c.index() === g.eq(0).index() || c.index() === g.last().index() || g.eq(b + 1).hasClass("divider")) && c.addClass("hidden")
1507                    }), d.$lis.not(".hidden, .no-results").length ? e.parent().length && e.remove() : (e.parent().length && e.remove(), e.html(d.options.noneResultsText.replace("{0}", '"' + c(d.$searchbox.val()) + '"')).show(), d.$menuInner.append(e))
1508                } else d.$lis.not(".is-hidden").removeClass("hidden"), e.parent().length && e.remove();
1509                d.$lis.filter(".active").removeClass("active"), d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(), a(this).focus()
1510            })
1511        },
1512        _searchStyle: function() {
1513            var a = "icontains";
1514            switch (this.options.liveSearchStyle) {
1515                case "begins":
1516                case "startsWith":
1517                    a = "ibegins";
1518                    break;
1519                case "contains":
1520            }
1521            return a
1522        },
1523        val: function(a) {
1524            return "undefined" != typeof a ? (this.$element.val(a), this.render(), this.$element) : this.$element.val()
1525        },
1526        selectAll: function() {
1527            this.findLis(), this.$element.find("option:enabled").not("[data-divider], [data-hidden]").prop("selected", !0), this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").addClass("selected"), this.render(!1)
1528        },
1529        deselectAll: function() {
1530            this.findLis(), this.$element.find("option:enabled").not("[data-divider], [data-hidden]").prop("selected", !1), this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").removeClass("selected"), this.render(!1)
1531        },
1532        keydown: function(c) {
1533            var d, e, f, g, h, i, j, k, l, m = a(this),
1534                n = m.is("input") ? m.parent().parent() : m.parent(),
1535                o = n.data("this"),
1536                p = ":not(.disabled, .hidden, .dropdown-header, .divider)",
1537                q = {
1538                    32: " ",
1539                    48: "0",
1540                    49: "1",
1541                    50: "2",
1542                    51: "3",
1543                    52: "4",
1544                    53: "5",
1545                    54: "6",
1546                    55: "7",
1547                    56: "8",
1548                    57: "9",
1549                    59: ";",
1550                    65: "a",
1551                    66: "b",
1552                    67: "c",
1553                    68: "d",
1554                    69: "e",
1555                    70: "f",
1556             
1556       71: "g",
1557                    72: "h",
1558                    73: "i",
1559                    74: "j",
1560                    75: "k",
1561                    76: "l",
1562                    77: "m",
1563                    78: "n",
1564                    79: "o",
1565                    80: "p",
1566                    81: "q",
1567                    82: "r",
1568                    83: "s",
1569                    84: "t",
1570                    85: "u",
1571                    86: "v",
1572                    87: "w",
1573                    88: "x",
1574                    89: "y",
1575                    90: "z",
1576                    96: "0",
1577                    97: "1",
1578                    98: "2",
1579                    99: "3",
1580                    100: "4",
1581                    101: "5",
1582                    102: "6",
1583                    103: "7",
1584                    104: "8",
1585                    105: "9"
1586                };
1587            if (o.options.liveSearch && (n = m.parent().parent()), o.options.container && (n = o.$menu), d = a("[role=menu] li a", n), l = o.$menu.parent().hasClass("open"), !l && (c.keyCode >= 48 && c.keyCode <= 57 || event.keyCode >= 65 && event.keyCode <= 90) && (o.options.container ? o.$newElement.trigger("click") : (o.setSize(), o.$menu.parent().addClass("open"), l = !0), o.$searchbox.focus()), o.options.liveSearch && (/(^9$|27)/.test(c.keyCode.toString(10)) && l && 0 === o.$menu.find(".active").length && (c.preventDefault(), o.$menu.parent().removeClass("open"), o.options.container && o.$newElement.removeClass("open"), o.$button.focus()), d = a("[role=menu] li:not(.disabled, .hidden, .dropdown-header, .divider)", n), m.val() || /(38|40)/.test(c.keyCode.toString(10)) || 0 === d.filter(".active").length && (d = o.$newElement.find("li"), d = o.options.liveSearchNormalize ? d.filter(":a" + o._searchStyle() + "(" + b(q[c.keyCode]) + ")") : d.filter(":" + o._searchStyle() + "(" + q[c.keyCode] + ")"))), d.length) {
1588                if (/(38|40)/.test(c.keyCode.toString(10))) e = d.index(d.filter(":focus")), g = d.parent(p).first().data("originalIndex"), h = d.parent(p).last().data("originalIndex"), f = d.eq(e).parent().nextAll(p).eq(0).data("originalIndex"), i = d.eq(e).parent().prevAll(p).eq(0).data("originalIndex"), j = d.eq(f).parent().prevAll(p).eq(0).data("originalIndex"), o.options.liveSearch && (d.each(function(b) {
1589                    a(this).hasClass("disabled") || a(this).data("index", b)
1590                }), e = d.index(d.filter(".active")), g = d.first().data("index"), h = d.last().data("index"), f = d.eq(e).nextAll().eq(0).data("index"), i = d.eq(e).prevAll().eq(0).data("index"), j = d.eq(f).prevAll().eq(0).data("index")), k = m.data("prevIndex"), 38 == c.keyCode ? (o.options.liveSearch && (e -= 1), e != j && e > i && (e = i), g > e && (e = g), e == k && (e = h)) : 40 == c.keyCode && (o.options.liveSearch && (e += 1), -1 == e && (e = 0), e != j && f > e && (e = f), e > h && (e = h), e == k && (e = g)), m.data("prevIndex", e), o.options.liveSearch ? (c.preventDefault(), m.hasClass("dropdown-toggle") || (d.removeClass("active").eq(e).addClass("active").children("a").focus(),
1591                    m.focus())) : d.eq(e).focus();
1592                else if (!m.is("input")) {
1593                    var r, s, t = [];
1594                    d.each(function() {
1595                        a(this).parent().hasClass("disabled") || a.trim(a(this).text().toLowerCase()).substring(0, 1) == q[c.keyCode] && t.push(a(this).parent().index())
1596                    }), r = a(document).data("keycount"), r++, a(document).data("keycount", r), s = a.trim(a(":focus").text().toLowerCase()).substring(0, 1), s != q[c.keyCode] ? (r = 1, a(document).data("keycount", r)) : r >= t.length && (a(document).data("keycount", 0), r > t.length && (r = 1)), d.eq(t[r - 1]).focus()
1597                }
1598                if ((/(13|32)/.test(c.keyCode.toString(10)) || /(^9$)/.test(c.keyCode.toString(10)) && o.options.selectOnTab) && l) {
1599                    if (/(32)/.test(c.keyCode.toString(10)) || c.preventDefault(), o.options.liveSearch) /(32)/.test(c.keyCode.toString(10)) || (o.$menu.find(".active a").click(), m.focus());
1600                    else {
1601                        var u = a(":focus");
1602                        u.click(), u.focus(), c.preventDefault(), a(document).data("spaceSelect", !0)
1603                    }
1604                    a(document).data("keycount", 0)
1605                }(/(^9$|27)/.test(c.keyCode.toString(10)) && l && (o.multiple || o.options.liveSearch) || /(27)/.test(c.keyCode.toString(10)) && !l) && (o.$menu.parent().removeClass("open"), o.options.container && o.$newElement.removeClass("open"), o.$button.focus())
1606            }
1607        },
1608        mobile: function() {
1609            this.$element.addClass("mobile-device").appendTo(this.$newElement), this.options.container && this.$menu.hide()
1610        },
1611        refresh: function() {
1612            this.$lis = null, this.reloadLi(), this.render(), this.checkDisabled(), this.liHeight(!0), this.setStyle(), this.setWidth(), this.$lis && this.$searchbox.trigger("propertychange"), this.$element.trigger("refreshed.bs.select")
1613        },
1614        hide: function() {
1615            this.$newElement.hide()
1616        },
1617        show: function() {
1618            this.$newElement.show()
1619        },
1620        remove: function() {
1621            this.$newElement.remove(), this.$element.remove()
1622        }
1623    };
1624    var f = a.fn.selectpicker;
1625    a.fn.selectpicker = d, a.fn.selectpicker.Constructor = e, a.fn.selectpicker.noConflict = function() {
1626        return a.fn.selectpicker = f, this
1627    }, a(document).data("keycount", 0).on("keydown", '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', e.prototype.keydown).on("focusin.modal", '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function(a) {
1628        a.stopPropagation()
1629    }), a(window).on("load.bs.select.data-api", function() {
1630        a(".selectpicker").each(function() {
1631            var b = a(this);
1632            d.call(b, b.data())
1633        })
1634    })
1635}(jQuery),
1636function(a) {
1637    function b(a) {
1638        return new RegExp("^" + a + "$")
1639    }
1640
1641    function c(a, b) {
1642        for (var c = Array.prototype.slice.call(arguments).splice(2), d = a.split("."), e = d.pop(), f = 0; f < d.length; f++) b = b[d[f]];
1643        return b[e].apply(this, c)
1644    }
1645    var d = [],
1646        e = {
1647            options: {
1648                prependExistingHelpBlock: !1,
1649                sniffHtml: !0,
1650                preventSubmit: !0,
1651                submitError: function(a, b, c) {
1652                    a.find('input[name="' + Object.keys(c)[0] + '"]').focus()
1653                },
1654                submitSuccess: !1,
1655                semanticallyStrict: !1,
1656                autoAdd: {
1657                    helpBlocks: !0
1658                },
1659                filter: function() {
1660                    return a(this).is(":visible")
1661                }
1662            },
1663            methods: {
1664                init: function(b) {
1665                    var c = a.extend(!0, {}, e);
1666                    c.options = a.extend(!0, c.options, b);
1667                    var h = this,
1668                        i = a.unique(h.map(function() {
1669                            return a(this).parents("form")[0]
1670                        }).toArray());
1671                    return a(i).bind("submit", function(b) {
1672                        var d = a(this),
1673                            e = 0,
1674                            f = d.find("input,textarea,select").not("[type=submit],[type=image]").filter(c.options.filter);
1675                        f.trigger("submit.validation").trigger("validationLostFocus.validation"), f.each(function(b, c) {
1676                            var d = a(c),
1677                                f = d.parents(".form-group").first();
1678                            f.hasClass("text-warning") && (f.removeClass("text-warning").addClass("text-danger"), e++)
1679                        }), f.trigger("validationLostFocus.validation"), e ? (c.options.preventSubmit && b.preventDefault(), a.isFunction(c.options.submitError) && c.options.submitError(d, b, f.jqBootstrapValidation("collectErrors", !0))) : a.isFunction(c.options.submitSuccess) && c.options.submitSuccess(d, b)
1680                    }), this.each(function() {
1681                        var b = a(this),
1682                            e = b.parents(".form-group").first(),
1683                            h = e.find(".help-block").first(),
1684                            i = b.parents("form").first(),
1685                            j = [];
1686                        if (!h.length && c.options.autoAdd && c.options.autoAdd.helpBlocks && (h = a('<div class="help-block" />'), e.find(".controls").append(h), d.push(h[0])), c.options.sniffHtml) {
1687                            var k = "";
1688                            if (void 0 !== b.attr("pattern") && (k = "Not in the expected format<!-- data-validation-pattern-message to override -->", b.data("validationPatternMessage") && (k = b.data("validationPatternMessage")), b.data("validationPatternMessage", k), b.data("validationPatternRegex", b.attr("pattern"))), void 0 !== b.attr("max") || void 0 !== b.attr("aria-valuemax")) {
1689                                var l = void 0 !== b.attr("max") ? b.attr("max") : b.attr("aria-valuemax");
1690                                k = "Too high: Maximum of '" + l + "'<!-- data-validation-max-message to override -->", b.data("validationMaxMessage") && (k = b.data("validationMaxMessage")), b.data("validationMaxMessage", k), b.data("validationMaxMax", l)
1691                            }
1692                            if (void 0 !== b.attr("min") || void 0 !== b.attr("aria-valuemin")) {
1693                                var m = void 0 !== b.attr("min") ? b.attr("min") : b.attr("aria-valuemin");
1694                                k = "Too low: Minimum of '" + m + "'<!-- data-validation-min-message to override -->", b.data("validationMinMessage") && (k = b.data("validationMinMessage")), b.data("validationMinMessage", k), b.data("validationMinMin", m)
1695                            }
1696                            void 0 !== b.attr("maxlength") && (k = "Too long: Maximum of '" + b.attr("maxlength") + "' characters<!-- data-validation-maxlength-message to override -->", b.data("validationMaxlengthMessage") && (k = b.data("validationMaxlengthMessage")), b.data("validationMaxlengthMessage", k), b.data("validationMaxlengthMaxlength", b.attr("maxlength"))), void 0 !== b.attr("minlength") && (k = "Too short: Minimum of '" + b.attr("minlength") + "' characters<!-- data-validation-minlength-message to override -->", b.data("validationMinlengthMessage") && (k = b.data("validationMinlengthMessage")), b.data("validationMinlengthMessage", k), b.data("validationMinlengthMinlength", b.attr("minlength"))), void 0 === b.attr("required") && void 0 === b.attr("aria-required") || (k = c.builtInValidators.required.message, b.data("validationRequiredMessage") && (k = b.data("validationRequiredMessage")), b.data("validationRequiredMessage", k)), void 0 !== b.attr("type") && "number" === b.attr("type").toLowerCase() && (k = c.builtInValidators.number.message, b.data("validationNumberMessage") && (k = b.data("validationNumberMessage")), b.data("validationNumberMessage", k)), void 0 !== b.attr("type") && "email" === b.attr("type").toLowerCase() && (k = oFlow.i18n.DD_FORM_VALIDATION_VALIDEMAIL, b.data("validationValidemailMessage") ? k = b.data("validationValidemailMessage") : b.data("validationEmailMessage") && (k = b.data("validationEmailMessage")), b.data("validationValidemailMessage", k)), void 0 !== b.attr("minchecked") && (k = "Not enough options checked; Minimum of '" + b.attr("minchecked") + "' required<!-- data-validation-minchecked-message to override -->", b.data("validationMincheckedMessage") && (k = b.data("validationMincheckedMessage")), b.data("validationMincheckedMessage", k), b.data("validationMincheckedMinchecked", b.attr("minchecked"))), void 0 !== b.attr("maxchecked") && (k = "Too many options checked; Maximum of '" + b.attr("maxchecked") + "' required<!-- data-validation-maxchecked-message to override -->
1696", b.data("validationMaxcheckedMessage") && (k = b.data("validationMaxcheckedMessage")), b.data("validationMaxcheckedMessage", k), b.data("validationMaxcheckedMaxchecked", b.attr("maxchecked")))
1697                        }
1698                        void 0 !== b.data("validation") && (j = b.data("validation").split(",")), a.each(b.data(), function(a, b) {
1699                            var c = a.replace(/([A-Z])/g, ",$1").split(",");
1700                            "validation" === c[0] && c[1] && j.push(c[1])
1701                        });
1702                        var n = j,
1703                            o = [];
1704                        do a.each(j, function(a, b) {
1705                            j[a] = f(b)
1706                        }), j = a.unique(j), o = [], a.each(n, function(d, e) {
1707                            if (void 0 !== b.data("validation" + e + "Shortcut")) a.each(b.data("validation" + e + "Shortcut").split(","), function(a, b) {
1708                                o.push(b)
1709                            });
1710                            else if (c.builtInValidators[e.toLowerCase()]) {
1711                                var g = c.builtInValidators[e.toLowerCase()];
1712                                "shortcut" === g.type.toLowerCase() && a.each(g.shortcut.split(","), function(a, b) {
1713                                    b = f(b), o.push(b), j.push(b)
1714                                })
1715                            }
1716                        }), n = o; while (n.length > 0);
1717                        var p = {};
1718                        a.each(j, function(d, e) {
1719                            var g = b.data("validation" + e + "Message"),
1720                                h = void 0 !== g,
1721                                i = !1;
1722                            if (g = g ? g : "'" + e + "' validation failed <!-- Add attribute 'data-validation-" + e.toLowerCase() + "-message' to input to change this message -->", a.each(c.validatorTypes, function(c, d) {
1723                                    void 0 === p[c] && (p[c] = []), i || void 0 === b.data("validation" + e + f(d.name)) || (p[c].push(a.extend(!0, {
1724                                        name: f(d.name),
1725                                        message: g
1726                                    }, d.init(b, e))), i = !0)
1727                                }), !i && c.builtInValidators[e.toLowerCase()]) {
1728                                var j = a.extend(!0, {}, c.builtInValidators[e.toLowerCase()]);
1729                                h && (j.message = g);
1730                                var k = j.type.toLowerCase();
1731                                "shortcut" === k ? i = !0 : a.each(c.validatorTypes, function(c, d) {
1732                                    void 0 === p[c] && (p[c] = []), i || k !== c.toLowerCase() || (b.data("validation" + e + f(d.name), j[d.name.toLowerCase()]), p[k].push(a.extend(j, d.init(b, e))), i = !0)
1733                                })
1734                            }
1735                            i || a.error("Cannot find validation info for '" + e + "'")
1736                        }), h.data("original-contents", h.data("original-contents") ? h.data("original-contents") : h.html()), h.data("original-role", h.data("original-role") ? h.data("original-role") : h.attr("role")), e.data("original-classes", e.data("original-clases") ? e.data("original-classes") : e.attr("class")), b.data("original-aria-invalid", b.data("original-aria-invalid") ? b.data("original-aria-invalid") : b.attr("aria-invalid")), b.bind("validation.validation", function(d, e) {
1737                            var f = g(b),
1738                                h = [];
1739                            return a.each(p, function(d, g) {
1740                                (f || f.length || e && e.includeEmpty || c.validatorTypes[d].blockSubmit && e && e.submitting) && a.each(g, function(a, e) {
1741                                    c.validatorTypes[d].validate(b, f, e) && h.push(e.message)
1742                                })
1743                            }), h
1744                        }), b.bind("getValidators.validation", function() {
1745                            return p
1746                        }), b.bind("submit.validation", function() {
1747                            return b.triggerHandler("change.validation", {
1748                                submitting: !0
1749                            })
1750                        }), b.bind(["keyup", "focus", "blur", "click", "keydown", "keypress", "change"].join(".validation ") + ".validation", function(d, f) {
1751                            var j = g(b),
1752                                k = [];
1753                            e.find("input,textarea,select").each(function(c, d) {
1754                                var e = k.length;
1755                                if (a.each(a(d).triggerHandler("validation.validation", f), function(a, b) {
1756                                        k.push(b)
1757                                    }), k.length > e) a(d).attr("aria-invalid", "true");
1758                                else {
1759                                    var g = b.data("original-aria-invalid");
1760                                    a(d).attr("aria-invalid", void 0 !== g ? g : !1)
1761                                }
1762                            }), i.find("input,select,textarea").not(b).not('[name="' + b.attr("name") + '"]').trigger("validationLostFocus.validation"), k = a.unique(k.sort()), k.length ? (e.removeClass("text-success text-danger").addClass("text-warning"), c.options.semanticallyStrict && 1 === k.length ? h.html(k[0] + (c.options.prependExistingHelpBlock ? h.data("original-contents") : "")) : h.html('<ul class="list-unstyled text-danger" role="alert"><li>' + k.join("</li><li>") + "</li></ul>" + (c.options.prependExistingHelpBlock ? h.data("original-contents") : ""))) : (e.removeClass("text-warning text-danger text-success"), j.length > 0 && e.addClass("text-success"), h.html(h.data("original-contents"))), "blur" === d.t
1762ype && e.removeClass("text-success")
1763                        }), b.bind("validationLostFocus.validation", function() {
1764                            e.removeClass("text-success")
1765                        })
1766                    })
1767                },
1768                destroy: function() {
1769                    return this.each(function() {
1770                        var b = a(this),
1771                            c = b.parents(".form-group").first(),
1772                            e = c.find(".help-block").first();
1773                        b.unbind(".validation"), e.html(e.data("original-contents")), c.attr("class", c.data("original-classes")), b.attr("aria-invalid", b.data("original-aria-invalid")), e.attr("role", b.data("original-role")), d.indexOf(e[0]) > -1 && e.remove()
1774                    })
1775                },
1776                collectErrors: function(b) {
1777                    var c = {};
1778                    return this.each(function(b, d) {
1779                        var e = a(d),
1780                            f = e.attr("name"),
1781                            g = e.triggerHandler("validation.validation", {
1782                                includeEmpty: !0
1783                            });
1784                        c[f] = a.extend(!0, g, c[f])
1785                    }), a.each(c, function(a, b) {
1786                        0 === b.length && delete c[a]
1787                    }), c
1788                },
1789                hasErrors: function() {
1790                    var b = [];
1791                    return this.each(function(c, d) {
1792                        b = b.concat(a(d).triggerHandler("getValidators.validation") ? a(d).triggerHandler("validation.validation", {
1793                            submitting: !0
1794                        }) : [])
1795                    }), b.length > 0
1796                },
1797                override: function(b) {
1798                    e = a.extend(!0, e, b)
1799                }
1800            },
1801            validatorTypes: {
1802                callback: {
1803                    name: "callback",
1804                    init: function(a, b) {
1805                        return {
1806                            validatorName: b,
1807                            callback: a.data("validation" + b + "Callback"),
1808                            lastValue: a.val(),
1809                            lastValid: !0,
1810                            lastFinished: !0
1811                        }
1812                    },
1813                    validate: function(a, b, d) {
1814                        if (d.lastValue === b && d.lastFinished) return !d.lastValid;
1815                        if (d.lastFinished === !0) {
1816                            d.lastValue = b, d.lastValid = !0, d.lastFinished = !1;
1817                            var e = d,
1818                                f = a;
1819                            c(d.callback, window, a, b, function(a) {
1820                                e.lastValue === a.value && (e.lastValid = a.valid, a.message && (e.message = a.message), e.lastFinished = !0, f.data("validation" + e.validatorName + "Message", e.message), setTimeout(function() {
1821                                    f.trigger("change.validation")
1822                                }, 1))
1823                            })
1824                        }
1825                        return !1
1826                    }
1827                },
1828                ajax: {
1829                    name: "ajax",
1830                    init: function(a, b) {
1831                        return {
1832                            validatorName: b,
1833                            url: a.data("validation" + b + "Ajax"),
1834                            lastValue: a.val(),
1835                            lastValid: !0,
1836                            lastFinished: !0
1837                        }
1838                    },
1839                    validate: function(b, c, d) {
1840                        return "" + d.lastValue == "" + c && d.lastFinished === !0 ? d.lastValid === !1 : (d.lastFinished === !0 && (d.lastValue = c, d.lastValid = !0, d.lastFinished = !1, a.ajax({
1841                            url: d.url,
1842                            data: "value=" + c + "&field=" + b.attr("name"),
1843                            dataType: "json",
1844                            success: function(a) {
1845                                "" + d.lastValue == "" + a.value && (d.lastV
1845alid = !!a.valid, a.message && (d.message = a.message), d.lastFinished = !0, b.data("validation" + d.validatorName + "Message", d.message), setTimeout(function() {
1846                                    b.trigger("change.validation")
1847                                }, 1))
1848                            },
1849                            failure: function() {
1850                                d.lastValid = !0, d.message = "ajax call failed", d.lastFinished = !0, b.data("validation" + d.validatorName + "Message", d.message), setTimeout(function() {
1851                                    b.trigger("change.validation")
1852                                }, 1)
1853                            }
1854                        })), !1)
1855                    }
1856                },
1857                regex: {
1858                    name: "regex",
1859                    init: function(a, c) {
1860                        return {
1861                            regex: b(a.data("validation" + c + "Regex"))
1862                        }
1863                    },
1864                    validate: function(a, b, c) {
1865                        return !c.regex.test(b) && !c.negative || c.regex.test(b) && c.negative
1866                    }
1867                },
1868                required: {
1869                    name: "required",
1870                    init: function(a, b) {
1871                        return {}
1872                    },
1873                    validate: function(a, b, c) {
1874                        return !(0 !== b.length || c.negative) || !!(b.length > 0 && c.negative)
1875                    },
1876                    blockSubmit: !0
1877                },
1878                match: {
1879                    name: "match",
1880                    init: function(a, b) {
1881                        var c = a.parents("form").first().find('[name="' + a.data("validation" + b + "Match") + '"]').first();
1882                        return c.bind("validation.validation", function() {
1883                            a.trigger("change.validation", {
1884                                submitting: !0
1885                            })
1886                        }), {
1887                            element: c
1888                        }
1889                    },
1890                    validate: function(a, b, c) {
1891                        return b !== c.element.val() && !c.negative || b === c.element.val() && c.negative
1892                    },
1893                    blockSubmit: !0
1894                },
1895                max: {
1896                    name: "max",
1897                    init: function(a, b) {
1898                        return {
1899                            max: a.data("validation" + b + "Max")
1900                        }
1901                    },
1902                    validate: function(a, b, c) {
1903                        return parseFloat(b, 10) > parseFloat(c.max, 10) && !c.negative || parseFloat(b, 10) <= parseFloat(c.max, 10) && c.negative
1904                    }
1905                },
1906                min: {
1907                    name: "min",
1908                    init: function(a, b) {
1909                        return {
1910                            min: a.data("validation" + b + "Min")
1911                        }
1912                    },
1913                    validate: function(a, b, c) {
1914                        return parseFloat(b) < parseFloat(c.min) && !c.negative || parseFloat(b) >= parseFloat(c.min) && c.negative
1915                    }
1916                },
1917                maxlength: {
1918                    name: "maxlength",
1919                    init: function(a, b) {
1920                        return {
1921                            maxlength: a.data("validation" + b + "Maxlength")
1922                        }
1923                    },
1924                    validate: function(a, b, c) {
1925                        return b.length > c.maxlength && !c.negative || b.length <= c.maxlength && c.negative
1926                    }
1927                },
1928                minlength: {
1929                    name: "minlength",
1930                    init: function(a, b) {
1931                        return {
1932                            minlength: a.data("validation" + b + "Minlength")
1933                        }
1934                    },
1935                    validate: function(a, b, c) {
1936                        return b.length < c.minlength && !c.negative || b.length >= c.minlength && c.negative
1937                    }
1938                },
1939                maxchecked: {
1940                    name: "maxchecked",
1941                    init: function(a, b) {
1942                        var c = a.parents("form").first().find('[name="' + a.attr("name") + '"]');
1943                        return c.bind("click.validation", function() {
1944                            a.trigger("change.validation", {
1945                                includeEmpty: !0
1946                            })
1947                        }), {
1948                            maxchecked: a.data("validation" + b + "Maxchecked"),
1949                            elements: c
1950                        }
1951                    },
1952                    validate: function(a, b, c) {
1953                        return c.elements.filter(":checked").length > c.maxchecked && !c.negative || c.elements.filter(":checked").length <= c.maxchecked && c.negative
1954                    },
1955                    blockSubmit: !0
1956                },
1957                minchecked: {
1958                    name: "minchecked",
1959                    init: function(a, b) {
1960                        var c = a.parents("form").first().find('[name="' + a.attr("name") + '"]');
1961                        return c.bind("click.validation", function() {
1962                            a.trigger("change.validation", {
1963                                includeEmpty: !0
1964                            })
1965                        }), {
1966                            minchecked: a.data("validation" + b + "Minchecked"),
1967                            elements: c
1968                        }
1969                    },
1970                    validate: function(a, b, c) {
1971                        return c.elements.filter(":checked").length < c.minchecked && !c.negative || c.elements.filter(":checked").length >= c.minchecked && c.negative
1972                    },
1973                    blockSubmit: !0
1974                }
1975            },
1976            builtInValidators: {
1977                email: {
1978                    name: "Email",
1979                    type: "shortcut",
1980                    shortcut: "validemail"
1981                },
1982                validemail: {
1983                    name: "Validemail",
1984                    type: "regex",
1985                    regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}",
1986                    message: oFlow.i18n.DD_FORM_VALIDATION_VALIDEMAIL
1987                },
1988                passwordagain: {
1989                    name: "Passwordagain",
1990                    type: "match",
1991                    match: "password",
1992                    message: oFlow.i18n.DD_FORM_VALIDATION_PASSWORDAGAIN
1993                },
1994                positive: {
1995                    name: "Positive",
1996                    type: "shortcut",
1997                    shortcut: "number,positivenumber"
1998                },
1999                negative: {
2000                    name: "Negative",
2001                    type: "shortcut",
2002                    shortcut: "number,negativenumber"
2003                },
2004                number: {
2005                    name: "Number",
2006                    type: "regex",
2007                    regex: "([+-]?\\d+(\\.\\d*)?([eE][+-]?[0-9]+)?)?",
2008                    message: oFlow.i18n.DD_FORM_VALIDATION_NUMBER
2009                },
2010                integer: {
2011                    name: "Integer",
2012                    type: "regex",
2013                    regex: "[+-]?\\d+",
2014                    message: oFlow.i18n.DD_FORM_VALIDATION_INTEGER
2015                },
2016                positivenumber: {
2017                    name: "Positivenumber",
2018                    type: "min",
2019                    min: 0,
2020                    message: oFlow.i18n.DD_FORM_VALIDATION_POSITIVENUMBER
2021                },
2022                negativenumber: {
2023                    name: "Negativenumber",
2024                    type: "max",
2025                    max: 0,
2026                    message: oFlow.i18n.DD_FORM_VALIDATION_NEGATIVENUMBER
2027                },
2028                required: {
2029                    name: "Required",
2030                    type: "required",
2031                    message: oFlow.i18n.DD_FORM_VALIDATION_REQUIRED
2032                },
2033                checkone: {
2034                    name: "Checkone",
2035                    type: "minchecked",
2036                    minchecked: 1,
2037                    message: oFlow.i18n.DD_FORM_VALIDATION_CHECKONE
2038                }
2039            }
2040        },
2041        f = function(a) {
2042            return a.toLowerCase().replace(/(^|\s)([a-z])/g, function(a, b, c) {
2043                return b + c.toUpperCase()
2044            })
2045        },
2046        g = function(b) {
2047            var c = b.val(),
2048                d = b.attr("type");
2049            return "checkbox" === d && (c = b.is(":checked") ? c : ""), "radio" === d && (c = a('input[name="' + b.attr("name") + '"]:checked').length > 0 ? c : ""), c
2050        };
2051    a.fn.jqBootstrapValidation = function(b) {
2052        return e.methods[b] ? e.methods[b].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof b && b ? (a.error("Method " + b + " does not exist on jQuery.jqBootstrapValidation"), null) : e.methods.init.apply(this, arguments)
2053    }, a.jqBootstrapValidation = function(b) {
2054        a(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this, arguments)
2055    }
2056}(jQuery),
2057function(a) {
2058    a.fn.unveil = function(b, c) {
2059        function d() {
2060            var b = j.filter(function() {
2061                var b = a(this);
2062                if (!b.is(":hidden")) {
2063                    var c = f.scrollTop(),
2064                        d = c + f.height(),
2065                        e = b.offset().top,
2066                        h = e + b.height();
2067                    return h >= c - g && d + g >= e
2068                }
2069            });
2070            e = b.trigger("unveil"), j = j.not(e)
2071        }
2072        var e, f = a(window),
2073            g = b || 0,
2074            h = window.devicePixelRatio > 1,
2075            i = h ? "data-src-retina" : "data-src",
2076            j = this;
2077        return this.one("unveil", function() {
2078            var a = this.getAttribute(i);
2079            a = a || this.getAttribute("data-src"), a && (this.setAttribute("src", a), "function" == typeof c && c.call(this))
2080        }), f.on("scroll.unveil resize.unveil lookup.unveil", d), d(), this
2081    }
2082}(window.jQuery || window.Zepto),
2083function() {
2084    if ("-ms-user-select" in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/)) {
2085        var a = document.createElement("style");
2086        a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")), document.getElementsByTagName("head")[0].appendChild(a)
2087    }
2088}(), Flow = {}, $(function() {
2089    function a() {
2090        var a = $("#mainnav").find(".navbar-collapse"),
2091            c = $("#navigation"),
2092            d = c.find(".moreLinks");
2093//         if (b.width() <= 755) return d.before(d.find("> ul > li")), void d.remove();
2094//         if (d.length) d.before(d.find("> ul > li"));
2095//         else {
2096//             var e = document.createElement("li"),
2097//                 f = document.createElement("a"),
2098//                 g = document.createElement("ul");
2099//             e.className = "dropdown moreLinks", f.className = "dropdown-toggle", f.innerHTML = 'Mehr <span class="caret"></span>', f.setAttribute("data-toggle", "dropdown"), g.className = "dropdown-menu", g.setAttribute("role", "menu"), e.appendChild(f), e.appendChild(g), c.append(e), d = $(e)
2100//         }
2101        var h = a.width(),
2102            i = c.find("> li").not(".moreLinks"),
2103            j = 0,
2104            k = [];
2105        h -= d.width(), i.each(function() {
2106            var a = $(this);
2107            j += a.outerWidth(), j > h && k.push(a)
2108        }), k.length ? d.find("> ul").append(k) : d.remove()
2109    }
2110    var b = $(window),
2111        c = $("body"),
2112        d = $("#header"),
2113        e = $("#basket_list"),
2114        f = $("#jumptotop"),
2115        g = $("#econdaRecommendations"),
2116        h = $("input.oxValidate_enterPass"),
2117        i = $("#searchParam"),
2118        j = parseInt(d.height()),
2119        k = c.hasClass("is-checkout");
2120    window.isMobileDevice = function() {
2121        var a = !1;
2122        return function(b) {
2123            (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(b) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
2123sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(b.substr(0, 4))) && (a = !0)
2124        }(navigator.userAgent || navigator.vendor || window.opera), a
2125    }, b.scroll(function(a) {
2126        var b = $(this),
2127            d = $("#mainnav");
2128        k || isMobileDevice() && i.is(":focus") || (b.scrollTop() > j ? c.hasClass("fixed-header") || (/*c.addClass("fixed-header"), */this.setTimeout(function() {
2129//             d.addClass("fadeIn")
2130        }, 100)) : c.hasClass("fixed-header") && (c.removeClass("fixed-header"), d.removeClass("fadeIn"))), f.toggleClass("show", b.scrollTop() >= 300)
2131    }).trigger("scroll"), $(".search-toggle").click(function(a) {
2132        a.preventDefault(), $("html, body").animate({
2133            scrollTop: i.position().top - 10 || 0
2134        }, 300, function() {
2135            i.focus()
2136        })
2137    }), $('a[data-toggle="tab"]').on("shown.bs.tab", function(a) {
2138        $(this.getAttribute("href")).find("img").unveil()
2139    }), f.click(function() {
2140        $("html, body").animate({
2141            scrollTop: 0
2142        }, 300)
2143    }), $("#header .dropdown-menu input, #header .dropdown-menu label, #header .dropdown-menu button, #header .dropdown-menu").click(function(a) {
2144        a.stopPropagation()
2145    }), $(".nav").on("mouseenter", "li.dropdown", function(a) {
2146        b.width() >= 760 && $(this).addClass("open")
2147    }).on("mouseleave", "li.dropdown", function(a) {
2148        b.width() >= 760 && $(this).removeClass("open")
2149    }).on("click", "li.dropdown", function(a) {
2150        a.stopPropagation()
2151    }), d.find(".menu-dropdowns button[data-href]").click(function(a) {
2152        var b = $(this);
2153        $(window).width() <= 767 && (a.stopPropagation(), document.location.href = b.attr("data-href"))
2154    }), g.length && $.get(window.sBaseUrl + "cl=tpl&tpl=ajax_econda_recommendations.tpl&actcl=" + sActCl, function(a, b, c) {
2155        g.html(a), g.find("img").unveil()
2156    });
2157    var l = $("#filterList");
2158    l.length && l.find(".dropdown-menu li").click(function() {
2159        var a = $(this);
2160        a.parent().prev().val(a.children().first().data("selection-id")), a.closest("form").submit()
2161    });
2162//     var m = $("#sidebar"),
2163//         n = m.find(".box.categorytree");
2164//     n.length && n.find(".toggleTree").on("click touch", function() {
2165//         var a = $(this),
2166//             b = a.parents(".categorytree").find(".categoryBox");
2167//         a.hasClass("fa-caret-down") ? (a.removeClass("fa-caret-down"), a.attr("class", "fa-caret-up " + a.attr("class")), b.attr("style", "display:block!important")) : (a.removeClass("fs-caret-up"), a.attr("class", "fs-caret-down " + a.attr("class")), b.removeAttr("style"))
2168//     });
2169    var o = $(".selectorsBox");
2170    if (o.length && o.find(".dropdown-menu li").click(function(a) {
2171            a.preventDefault();
2172            var b = $(this);
2173            b.parent().prev().val(b.children().first().data("selection-id")), b.closest("form").submit()
2174        }), Flow.initEvents = function() {
2175            $("img").unveil(), $(".selectpicker").selectpicker(), $(".hasTooltip").tooltip(), $(".hasPopover").popover()
2176        }, Flow.initEvents(), a(), b.resize(function() {
2177            a()
2178        }), e.length && ($("#basket_form").on("submit", function(a) {
2179            var b = $(this),
2180                c = b.find(".hidden-xs"),
2181                d = b.find(".visible-xs");
2182            c.is(":hidden") && c.remove(), d.is(":hidden") && d.remove()
2183        }), e.find(".toggle-actions").click(function(a) {
2184            a.preventDefault();
2185            var b = $(this),
2186                c = b.parents("li").first().find(".row.toggable");
2187            c.slideToggle(150, function() {
2188                b.find("i").attr("class", c.is(":visible") ? "fa fa-chevron-up" : "fa fa-chevron-down")
2189            })
2190        })), h.length) {
2191        var p = h.val(),
2192            q = $(".oxValidate_pwd");
2193        h.keyup(function(a) {
2194            q.length && (p != a.target.value ? q.slideDown("fast") : q.is(":visible") && q.slideUp("fast"))
2195        })
2196    }
2197    $("#private-sales-login input.agb-check").click(function() {
2198        this.checked ? $("#private-sales-login button.submitButton").removeAttr("disabled") : $("#private-sales-login button.submitButton").attr("disabled", "disabled")
2199    })
2200}), $(window).load(function() {
2201    window.setTimeout(function() {
2202        $("img").unveil()
2203    }, 500)
2204});

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.