PageSourceSearch

https://zobaze.com/blog/assets/js/libs/bootstrap.js

js zobaze.com collected 2026-09-24 13:40:41 UTC 112,627 bytes, 2,776 lines download raw bytes

1(function(global, factory) {
2    if (typeof define == "function" && define.amd) {
3        define("ev-emitter/ev-emitter", factory);
4    } else if (typeof module == "object" && module.exports) {
5        module.exports = factory();
6    } else {
7        global.EvEmitter = factory();
8    }
9})(typeof window != "undefined" ? window : this, function() {
10    function EvEmitter() {}
11    var proto = EvEmitter.prototype;
12    proto.on = function(eventName, listener) {
13        if (!eventName || !listener) {
14            return;
15        }
16        var events = this._events = this._events || {};
17        var listeners = events[eventName] = events[eventName] || [];
18        if (listeners.indexOf(listener) == -1) {
19            listeners.push(listener);
20        }
21        return this;
22    };
23    proto.once = function(eventName, listener) {
24        if (!eventName || !listener) {
25            return;
26        }
27        this.on(eventName, listener);
28        var onceEvents = this._onceEvents = this._onceEvents || {};
29        var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {};
30        onceListeners[listener] = true;
31        return this;
32    };
33    proto.off = function(eventName, listener) {
34        var listeners = this._events && this._events[eventName];
35        if (!listeners || !listeners.length) {
36            return;
37        }
38        var index = listeners.indexOf(listener);
39        if (index != -1) {
40            listeners.splice(index, 1);
41        }
42        return this;
43    };
44    proto.emitEvent = function(eventName, args) {
45        var listeners = this._events && this._events[eventName];
46        if (!listeners || !listeners.length) {
47            return;
48        }
49        var i = 0;
50        var listener = listeners[i];
51        args = args || [];
52        var onceListeners = this._onceEvents && this._onceEvents[eventName];
53        while (listener) {
54            var isOnce = onceListeners && onceListeners[listener];
55            if (isOnce) {
56                this.off(eventName, listener);
57                delete onceListeners[listener];
58            }
59            listener.apply(this, args);
60            i += isOnce ? 0 : 1;
61            listener = listeners[i];
62        }
63        return this;
64    };
65    proto.allOff = proto.removeAllListeners = function() {
66        delete this._events;
67        delete this._onceEvents;
68    };
69    return EvEmitter;
70});
71
72(function(window, factory) {
73    "use strict";
74    if (typeof define == "function" && define.amd) {
75        define([ "ev-emitter/ev-emitter" ], function(EvEmitter) {
76            return factory(window, EvEmitter);
77        });
78    } else if (typeof module == "object" && module.exports) {
79        module.exports = factory(window, require("ev-emitter"));
80    } else {
81        window.imagesLoaded = factory(window, window.EvEmitter);
82    }
83})(typeof window !== "undefined" ? window : this, function factory(window, EvEmitter) {
84    var $ = window.jQuery;
85    var console = window.console;
86    function extend(a, b) {
87        for (var prop in b) {
88            a[prop] = b[prop];
89        }
90        return a;
91    }
92    function makeArray(obj) {
93        var ary = [];
94        if (Array.isArray(obj)) {
95            ary = obj;
96        } else if (typeof obj.length == "number") {
97            for (var i = 0; i < obj.length; i++) {
98                ary.push(obj[i]);
99            }
100        } else {
101            ary.push(obj);
102        }
103        return ary;
104    }
105    function ImagesLoaded(elem, options, onAlways) {
106        if (!(this instanceof ImagesLoaded)) {
107            return new ImagesLoaded(elem, options, onAlways);
108        }
109        if (typeof elem == "string") {
110            elem = document.querySelectorAll(elem);
111        }
112        this.elements = makeArray(elem);
113        this.options = extend({}, this.options);
114        if (typeof options == "function") {
115            onAlways = options;
116        } else {
117            extend(this.options, options);
118        }
119        if (onAlways) {
120            this.on("always", onAlways);
121        }
122        this.getImages();
123        if ($) {
124            this.jqDeferred = new $.Deferred();
125        }
126        setTimeout(function() {
127            this.check();
128        }.bind(this));
129    }
130    ImagesLoaded.prototype = Object.create(EvEmitter.prototype);
131    ImagesLoaded.prototype.options = {};
132    ImagesLoaded.prototype.getImages = function() {
133        this.images = [];
vendor: 4,097 bytes, lines 134-247
134        this.elements.forEach(this.addElementImages, this);
135    };
136    ImagesLoaded.prototype.addElementImages = function(elem) {
137        if (elem.nodeName == "IMG") {
138            this.addImage(elem);
139        }
140        if (this.options.background === true) {
141            this.addElementBackgroundImages(elem);
142        }
143        var nodeType = elem.nodeType;
144        if (!nodeType || !elementNodeTypes[nodeType]) {
145            return;
146        }
147        var childImgs = elem.querySelectorAll("img");
148        for (var i = 0; i < childImgs.length; i++) {
149            var img = childImgs[i];
150            this.addImage(img);
151        }
152        if (typeof this.options.background == "string") {
153            var children = elem.querySelectorAll(this.options.background);
154            for (i = 0; i < children.length; i++) {
155                var child = children[i];
156                this.addElementBackgroundImages(child);
157            }
158        }
159    };
160    var elementNodeTypes = {
161        1: true,
162        9: true,
163        11: true
164    };
165    ImagesLoaded.prototype.addElementBackgroundImages = function(elem) {
166        var style = getComputedStyle(elem);
167        if (!style) {
168            return;
169        }
170        var reURL = /url\((['"])?(.*?)\1\)/gi;
171        var matches = reURL.exec(style.backgroundImage);
172        while (matches !== null) {
173            var url = matches && matches[2];
174            if (url) {
175                this.addBackground(url, elem);
176            }
177            matches = reURL.exec(style.backgroundImage);
178        }
179    };
180    ImagesLoaded.prototype.addImage = function(img) {
181        var loadingImage = new LoadingImage(img);
182        this.images.push(loadingImage);
183    };
184    ImagesLoaded.prototype.addBackground = function(url, elem) {
185        var background = new Background(url, elem);
186        this.images.push(background);
187    };
188    ImagesLoaded.prototype.check = function() {
189        var _this = this;
190        this.progressedCount = 0;
191        this.hasAnyBroken = false;
192        if (!this.images.length) {
193            this.complete();
194            return;
195        }
196        function onProgress(image, elem, message) {
197            setTimeout(function() {
198                _this.progress(image, elem, message);
199            });
200        }
201        this.images.forEach(function(loadingImage) {
202            loadingImage.once("progress", onProgress);
203            loadingImage.check();
204        });
205    };
206    ImagesLoaded.prototype.progress = function(image, elem, message) {
207        this.progressedCount++;
208        this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
209        this.emitEvent("progress", [ this, image, elem ]);
210        if (this.jqDeferred && this.jqDeferred.notify) {
211            this.jqDeferred.notify(this, image);
212        }
213        if (this.progressedCount == this.images.length) {
214            this.complete();
215        }
216        if (this.options.debug && console) {
217            console.log("progress: " + message, image, elem);
218        }
219    };
220    ImagesLoaded.prototype.complete = function() {
221        var eventName = this.hasAnyBroken ? "fail" : "done";
222        this.isComplete = true;
223        this.emitEvent(eventName, [ this ]);
224        this.emitEvent("always", [ this ]);
225        if (this.jqDeferred) {
226            var jqMethod = this.hasAnyBroken ? "reject" : "resolve";
227            this.jqDeferred[jqMethod](this);
228        }
229    };
230    function LoadingImage(img) {
231        this.img = img;
232    }
233    LoadingImage.prototype = Object.create(EvEmitter.prototype);
234    LoadingImage.prototype.check = function() {
235        var isComplete = this.getIsImageComplete();
236        if (isComplete) {
237            this.confirm(this.img.naturalWidth !== 0, "naturalWidth");
238            return;
239        }
240        this.proxyImage = new Image();
241        this.proxyImage.addEventListener("load", this);
242        this.proxyImage.addEventListener("error", this);
243        this.img.addEventListener("load", this);
244        this.img.addEventListener("error", this);
245        this.proxyImage.src = this.img.src;
246    };
247    LoadingImage.prototype.getIsImageComplete = function() {
248        return this.img.complete && this.img.naturalWidth !== undefined;
249    };
250    LoadingImage.prototype.confirm = function(isLoaded, message) {
251        this.isLoaded = isLoaded;
252        this.emitEvent("progress", [ this, this.img, message ]);
253    };
254    LoadingImage.prototype.handleEvent = function(event) {
255        var method = "on" + event.type;
256        if (this[method]) {
257            this[method](event);
258        }
259    };
260    LoadingImage.prototype.onload = function() {
261        this.confirm(true, "onload");
262        this.unbindEvents();
263    };
264    LoadingImage.prototype.onerror = function() {
265        this.confirm(false, "onerror");
266        this.unbindEvents();
267    };
268    LoadingImage.prototype.unbindEvents = function() {
269        this.proxyImage.removeEventListener("load", this);
270        this.proxyImage.removeEventListener("error", this);
271        this.img.removeEventListener("load", this);
272        this.img.removeEventListener("error", this);
273    };
274    function Background(url, element) {
275        this.url = url;
276        this.element = element;
277        this.img = new Image();
278    }
279    Background.prototype = Object.create(LoadingImage.prototype);
280    Background.prototype.check = function() {
281        this.img.addEventListener("load", this);
282        this.img.addEventListener("error", this);
283        this.img.src = this.url;
284        var isComplete = this.getIsImageComplete();
285        if (isComplete) {
286            this.confirm(this.img.naturalWidth !== 0, "naturalWidth");
287            this.unbindEvents();
288        }
289    };
290    Background.prototype.unbindEvents = function() {
291        this.img.removeEventListener("load", this);
292        this.img.removeEventListener("error", this);
293    };
294    Background.prototype.confirm = function(isLoaded, message) {
295        this.isLoaded = isLoaded;
296        this.emitEvent("progress", [ this, this.element, message ]);
297    };
298    ImagesLoaded.makeJQueryPlugin = function(jQuery) {
299        jQuery = jQuery || window.jQuery;
300        if (!jQuery) {
301            return;
302        }
303        $ = jQuery;
304        $.fn.imagesLoaded = function(options, callback) {
305            var instance = new ImagesLoaded(this, options, callback);
306            return instance.jqDeferred.promise($(this));
307        };
308    };
309    ImagesLoaded.makeJQueryPlugin();
310    return ImagesLoaded;
311});
312
313(function($, undef) {
314    "use strict";
315    if ($.fn.dotdotdot) {
316        return;
317    }
318    $.fn.dotdotdot = function(o) {
319        if (this.length === 0) {
320            $.fn.dotdotdot.debug('No element found for "' + this.selector + '".');
321            return this;
322        }
323        if (this.length > 1) {
324            return this.each(function() {
325                $(this).dotdotdot(o);
326            });
327        }
328        var $dot = this;
329        var orgContent = $dot.contents();
330        if ($dot.data("dotdotdot")) {
331            $dot.trigger("destroy.dot");
332        }
333        $dot.data("dotdotdot-style", $dot.attr("style") || "");
334        $dot.css("word-wrap", "break-word");
335        if ($dot.css("white-space") === "nowrap") {
336            $dot.css("white-space", "normal");
337        }
338        $dot.bind_events = function() {
339            $dot.bind("update.dot", function(e, c) {
340                $dot.removeClass("is-truncated");
341                e.preventDefault();
342                e.stopPropagation();
343                switch (typeof opts.height) {
344                  case "number":
345                    opts.maxHeight = opts.height;
346                    break;
347
348                  case "function":
349                    opts.maxHeight = opts.height.call($dot[0]);
350                    break;
351
352                  default:
353                    opts.maxHeight = getTrueInnerHeight($dot);
354                    break;
355                }
356                opts.maxHeight += opts.tolerance;
357                if (typeof c != "undefined") {
358                    if (typeof c == "string" || "nodeType" in c && c.nodeType === 1) {
359                        c = $("<div />").append(c).contents();
360                    }
361                    if (c instanceof $) {
362                        orgContent = c;
363                    }
364                }
365                $inr = $dot.wrapInner('<div class="dotdotdot" />').children();
366                $inr.contents().detach().end().append(orgContent.clone(true)).find("br").replaceWith("  <br />  ").end().css({
367                    height: "auto",
368                    width: "auto",
369                    border: "none",
370                    padding: 0,
371                    margin: 0
372                });
373                var after = false, trunc = false;
374                if (conf.afterElement) {
375                    after = conf.afterElement.clone(true);
376                    after.show();
377                    conf.afterElement.detach();
378                }
379                if (test($inr, opts)) {
380                    if (opts.wrap == "children") {
381                        trunc = children($inr, opts, after);
382                    } else {
383                        trunc = ellipsis($inr, $dot, $inr, opts, after);
384                    }
385                }
386                $inr.replaceWith($inr.contents());
387                $inr = null;
388                if ($.isFunction(opts.callback)) {
389                    opts.callback.call($dot[0], trunc, orgContent);
390                }
391                conf.isTruncated = trunc;
392                return trunc;
393            }).bind("isTruncated.dot", function(e, fn) {
394                e.preventDefault();
395                e.stopPropagation();
396                if (typeof fn == "function") {
397                    fn.call($dot[0], conf.isTruncated);
398                }
399                return conf.isTruncated;
400            }).bind("originalContent.dot", function(e, fn) {
401                e.preventDefault();
402                e.stopPropagation();
403                if (typeof fn == "function") {
404                    fn.call($dot[0], orgContent);
405                }
406                return orgContent;
407            }).bind("destroy.dot", function(e) {
408                e.preventDefault();
409                e.stopPropagation();
410                $dot.unwatch().unbind_events().contents().detach().end().append(orgContent).attr("style", $dot.data("dotdotdot-style") || "").removeClass("is-truncated").data("dotdotdot", false);
411            });
412            return $dot;
413        };
414        $dot.unbind_events = function() {
415            $dot.unbind(".dot");
416            return $dot;
417        };
418        $dot.watch = function() {
419            $dot.unwatch();
420            if (opts.watch == "window") {
421                var $window = $(window), _wWidth = $window.width(), _wHeight = $window.height();
422                $window.bind("resize.dot" + conf.dotId, function() {
423                    if (_wWidth != $window.width() || _wHeight != $window.height() || !opts.windowResizeFix) {
424                        _wWidth = $window.width();
425                        _wHeight = $window.height();
426                        if (watchInt) {
427                            clearInterval(watchInt);
428                        }
429                        watchInt = setTimeout(function() {
430                            $dot.trigger("update.dot");
431                        }, 100);
432                    }
433                });
434            } else {
435                watchOrg = getSizes($dot);
436                watchInt = setInterval(function() {
437                    if ($dot.is(":visible")) {
438                        var watchNew = getSizes($dot);
439                        if (watchOrg.width != watchNew.width || watchOrg.height != watchNew.height) {
440                            $dot.trigger("update.dot");
441                            watchOrg = watchNew;
442                        }
443                    }
444                }, 500);
445            }
446            return $dot;
447        };
448        $dot.unwatch = function() {
449            $(window).unbind("resize.dot" + conf.dotId);
450            if (watchInt) {
451                clearInterval(watchInt);
452            }
453            return $dot;
454        };
455        var opts = $.extend(true, {}, $.fn.dotdotdot.defaults, o), conf = {}, watchOrg = {}, watchInt = null, $inr = null;
456        if (!(opts.lastCharacter.remove instanceof Array)) {
457            opts.lastCharacter.remove = $.fn.dotdotdot.defaultArrays.lastCharacter.remove;
458        }
459        if (!(opts.lastCharacter.noEllipsis instanceof Array)) {
460            opts.lastCharacter.noEllipsis = $.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis;
461        }
462        conf.afterElement = getElement(opts.after, $dot);
463        conf.isTruncated = false;
464        conf.dotId = dotId++;
465        $dot.data("dotdotdot", true).bind_events().trigger("update.dot");
466        if (opts.watch) {
467            $dot.watch();
468        }
469        return $dot;
470    };
471    $.fn.dotdotdot.defaults = {
472        ellipsis: "... ",
473        wrap: "word",
474        fallbackToLetter: true,
475        lastCharacter: {},
476        tolerance: 0,
477        callback: null,
478        after: null,
479        height: null,
480        watch: false,
481        windowResizeFix: true,
482        maxLength: null
483    };
484    $.fn.dotdotdot.defaultArrays = {
485        lastCharacter: {
486            remove: [ " ", " ", ",", ";", ".", "!", "?" ],
487            noEllipsis: []
488        }
489    };
490    $.fn.dotdotdot.debug = function(msg) {};
491    var dotId = 1;
492    function children($elem, o, after) {
493        var $elements = $elem.children(), isTruncated = false;
494        $elem.empty();
495        for (var a = 0, l = $elements.length; a < l; a++) {
496            var $e = $elements.eq(a);
497            $elem.append($e);
498            if (after) {
499                $elem.append(after);
500            }
501            if (test($elem, o)) {
502                $e.remove();
503                isTruncated = true;
504                break;
505            } else {
506                if (after) {
507                    after.detach();
508                }
509            }
510        }
511        return isTruncated;
512    }
513    function ellipsis($elem, $d, $i, o, after) {
514        var isTruncated = false;
515        var notx = "a, table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style";
516        var noty = "script, .dotdotdot-keep";
517        $elem.contents().detach().each(function() {
518            var e = this, $e = $(e);
519            if (typeof e == "undefined") {
520                return true;
521            } else if ($e.is(noty)) {
522                $elem.append($e);
523            } else if (isTruncated) {
524                return true;
525            } else {
526                $elem.append($e);
527                if (after && !$e.is(o.after) && !$e.find(o.after).length) {
528                    $elem[$elem.is(notx) ? "after" : "append"](after);
529                }
530                if (test($i, o)) {
531                    if (e.nodeType == 3) {
532                        isTruncated = ellipsisElement($e, $d, $i, o, after);
533                    } else {
534                        isTruncated = ellipsis($e, $d, $i, o, after);
535                    }
536                }
537                if (!isTruncated) {
538                    if (after) {
539                        after.detach();
540                    }
541                }
542            }
543        });
544        $d.addClass("is-truncated");
545        return isTruncated;
546    }
547    function ellipsisElement($e, $d, $i, o, after) {
548        var e = $e[0];
549        if (!e) {
550            return false;
551        }
552        var txt = getTextContent(e), space = txt.indexOf(" ") !== -1 ? " " : " ", separator = o.wrap == "letter" ? "" : space, textArr = txt.split(separator), position = -1, midPos = -1, startPos = 0, endPos = textArr.length - 1;
553        if (o.fallbackToLetter && startPos === 0 && endPos === 0) {
554            separator = "";
555            textArr = txt.split(separator);
556            endPos = textArr.length - 1;
557        }
558        if (o.maxLength) {
559            txt = addEllipsis(txt.trim().substr(0, o.maxLength), o);
560            setTextContent(e, txt);
561        } else {
562            while (startPos <= endPos && !(startPos === 0 && endPos === 0)) {
563                var m = Math.floor((startPos + endPos) / 2);
564                if (m == midPos) {
565                    break;
566                }
567                midPos = m;
568                setTextContent(e, textArr.slice(0, midPos + 1).join(separator) + o.ellipsis);
569                $i.children().each(function() {
570                    $(this).toggle().toggle();
571                });
572                if (!test($i, o)) {
573                    position = midPos;
574                    startPos = midPos;
575                } else {
576                    endPos = midPos;
577                    if (o.fallbackToLetter && startPos === 0 && endPos === 0) {
578                        separator = "";
579                        textArr = textArr[0].split(separator);
580                        position = -1;
581                        midPos = -1;
582                        startPos = 0;
583                        endPos = textArr.length - 1;
584                    }
585                }
586            }
587            if (position != -1 && !(textArr.length === 1 && textArr[0].length === 0)) {
588                txt = addEllipsis(textArr.slice(0, position + 1).join(separator), o);
589                setTextContent(e, txt);
590            } else {
591                var $w = $e.parent();
592                $e.detach();
593                var afterLength = after && after.closest($w).length ? after.length : 0;
594                if ($w.contents().length > afterLength) {
595                    e = findLastTextNode($w.contents().eq(-1 - afterLength), $d);
596                } else {
597                    e = findLastTextNode($w, $d, true);
598                    if (!afterLength) {
599                        $w.detach();
600                    }
601                }
602                if (e) {
603                    txt = addEllipsis(getTextContent(e), o);
604                    setTextContent(e, txt);
605                    if (afterLength && after) {
606                        var $parent = after.parent();
607                        $(e).parent().append(after);
608                        if (!$.trim($parent.html())) {
609                            $parent.remove();
610                        }
611                    }
612                }
613            }
614        }
615        return true;
616    }
617    function test($i, o) {
618        return $i.innerHeight() > o.maxHeight || o.maxLength && $i.text().trim().length > o.maxLength;
619    }
620    function addEllipsis(txt, o) {
621        while ($.inArray(txt.slice(-1), o.lastCharacter.remove) > -1) {
622            txt = txt.slice(0, -1);
623        }
624        if ($.inArray(txt.slice(-1), o.lastCharacter.noEllipsis) < 0) {
625            txt += o.ellipsis;
626        }
627        return txt;
628    }
629    function getSizes($d) {
630        return {
631            width: $d.innerWidth(),
632            height: $d.innerHeight()
633        };
634    }
635    function setTextContent(e, content) {
636        if (e.innerText) {
637            e.innerText = content;
638        } else if (e.nodeValue) {
639            e.nodeValue = content;
640        } else if (e.textContent) {
641            e.textContent = content;
642        }
643    }
644    function getTextContent(e) {
645        if (e.innerText) {
646            return e.innerText;
647        } else if (e.nodeValue) {
648            return e.nodeValue;
649        } else if (e.textContent) {
650            return e.textContent;
651        } else {
652            return "";
653        }
654    }
655    function getPrevNode(n) {
656        do {
657            n = n.previousSibling;
658        } while (n && n.nodeType !== 1 && n.nodeType !== 3);
659        return n;
660    }
661    function findLastTextNode($el, $top, excludeCurrent) {
662        var e = $el && $el[0], p;
663        if (e) {
664            if (!excludeCurrent) {
665                if (e.nodeType === 3) {
666                    return e;
667                }
668                if ($.trim($el.text())) {
669                    return findLastTextNode($el.contents().last(), $top);
670                }
671            }
672            p = getPrevNode(e);
673            while (!p) {
674                $el = $el.parent();
675                if ($el.is($top) || !$el.length) {
676                    return false;
677                }
678                p = getPrevNode($el[0]);
679            }
680            if (p) {
681                return findLastTextNode($(p), $top);
682            }
683        }
684        return false;
685    }
686    function getElement(e, $i) {
687        if (!e) {
688            return false;
689        }
690        if (typeof e === "string") {
691            e = $(e, $i);
692            return e.length ? e : false;
693        }
694        return !e.jquery ? false : e;
695    }
696    function getTrueInnerHeight($el) {
697        var h = $el.innerHeight(), a = [ "paddingTop", "paddingBottom" ];
698        for (var z = 0, l = a.length; z < l; z++) {
699            var m = parseInt($el.css(a[z]), 10);
700            if (isNaN(m)) {
701                m = 0;
702            }
703            h -= m;
704        }
705        return h;
706    }
707    var _orgHtml = $.fn.html;
708    $.fn.html = function(str) {
709        if (str != undef && !$.isFunction(str) && this.data("dotdotdot")) {
710            return this.trigger("update", [ str ]);
711        }
712        return _orgHtml.apply(this, arguments);
713    };
714    var _orgText = $.fn.text;
715    $.fn.text = function(str) {
716        if (str != undef && !$.isFunction(str) && this.data("dotdotdot")) {
717            str = $("<div />").text(str).html();
718            return this.trigger("update", [ str ]);
719        }
720        return _orgText.apply(this, arguments);
721    };
722})(jQuery);
723
724(function(e, t) {
725    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.Popper = t();
726})(this, function() {
727    "use strict";
728    function e(e) {
729        return e && "[object Function]" === {}.toString.call(e);
730    }
731    function t(e, t) {
732        if (1 !== e.nodeType) return [];
733        var o = window.getComputedStyle(e, null);
734        return t ? o[t] : o;
735    }
736    function o(e) {
737        return "HTML" === e.nodeName ? e : e.parentNode || e.host;
738    }
739    function n(e) {
740        if (!e || -1 !== [ "HTML", "BODY", "#document" ].indexOf(e.nodeName)) return window.document.body;
741        var i = t(e), r = i.overflow, p = i.overflowX, s = i.overflowY;
742        return /(auto|scroll)/.test(r + s + p) ? e : n(o(e));
743    }
744    function r(e) {
745        var o = e && e.offsetParent, i = o && o.nodeName;
746        return i && "BODY" !== i && "HTML" !== i ? -1 !== [ "TD", "TABLE" ].indexOf(o.nodeName) && "static" === t(o, "position") ? r(o) : o : window.document.documentElement;
747    }
748    function p(e) {
749        var t = e.nodeName;
750        return "BODY" !== t && ("HTML" === t || r(e.firstElementChild) === e);
751    }
752    function s(e) {
753        return null === e.parentNode ? e : s(e.parentNode);
754    }
755    function d(e, t) {
756        if (!e || !e.nodeType || !t || !t.nodeType) return window.document.documentElement;
757        var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, i = o ? e : t, n = o ? t : e, a = document.createRange();
758        a.setStart(i, 0), a.setEnd(n, 0);
759        var l = a.commonAncestorContainer;
760        if (e !== l && t !== l || i.contains(n)) return p(l) ? l : r(l);
761        var f = s(e);
762        return f.host ? d(f.host, t) : d(e, s(t).host);
763    }
764    function a(e) {
765        var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "top", o = "top" === t ? "scrollTop" : "scrollLeft", i = e.nodeName;
766        if ("BODY" === i || "HTML" === i) {
767            var n = window.document.documentElement, r = window.document.scrollingElement || n;
768            return r[o];
769        }
770        return e[o];
771    }
772    function l(e, t) {
773        var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], i = a(t, "top"), n = a(t, "left"), r = o ? -1 : 1;
774        return e.top += i * r, e.bottom += i * r, e.left += n * r, e.right += n * r, e;
775    }
776    function f(e, t) {
777        var o = "x" === t ? "Left" : "Top", i = "Left" == o ? "Right" : "Bottom";
778        return +e["border" + o + "Width"].split("px")[0] + +e["border" + i + "Width"].split("px")[0];
779    }
780    function m(e, t, o, i) {
781        return X(t["offset" + e], t["scroll" + e], o["client" + e], o["offset" + e], o["scroll" + e], ne() ? o["offset" + e] + i["margin" + ("Height" === e ? "Top" : "Left")] + i["margin" + ("Height" === e ? "Bottom" : "Right")] : 0);
782    }
783    function c() {
784        var e = window.document.body, t = window.document.documentElement, o = ne() && window.getComputedStyle(t);
785        return {
786            height: m("Height", e, t, o),
787            width: m("Width", e, t, o)
788        };
789    }
790    function h(e) {
791        return de({}, e, {
792            right: e.left + e.width,
793            bottom: e.top + e.height
794        });
795    }
796    function g(e) {
797        var o = {};
798        if (ne()) try {
799            o = e.getBoundingClientRect();
800            var i = a(e, "top"), n = a(e, "left");
801            o.top += i, o.left += n, o.bottom += i, o.right += n;
802        } catch (e) {} else o = e.getBoundingClientRect();
803        var r = {
804            left: o.left,
805            top: o.top,
806            width: o.right - o.left,
807            height: o.bottom - o.top
808        }
vendor: 5,049 bytes, lines 808-942
808, p = "HTML" === e.nodeName ? c() : {}, s = p.width || e.clientWidth || r.right - r.left, d = p.height || e.clientHeight || r.bottom - r.top, l = e.offsetWidth - s, m = e.offsetHeight - d;
809        if (l || m) {
810            var g = t(e);
811            l -= f(g, "x"), m -= f(g, "y"), r.width -= l, r.height -= m;
812        }
813        return h(r);
814    }
815    function u(e, o) {
816        var i = ne(), r = "HTML" === o.nodeName, p = g(e), s = g(o), d = n(e), a = t(o), f = +a.borderTopWidth.split("px")[0], m = +a.borderLeftWidth.split("px")[0], c = h({
817            top: p.top - s.top - f,
818            left: p.left - s.left - m,
819            width: p.width,
820            height: p.height
821        });
822        if (c.marginTop = 0, c.marginLeft = 0, !i && r) {
823            var u = +a.marginTop.split("px")[0], b = +a.marginLeft.split("px")[0];
824            c.top -= f - u, c.bottom -= f - u, c.left -= m - b, c.right -= m - b, c.marginTop = u, 
825            c.marginLeft = b;
826        }
827        return (i ? o.contains(d) : o === d && "BODY" !== d.nodeName) && (c = l(c, o)), 
828        c;
829    }
830    function b(e) {
831        var t = window.document.documentElement, o = u(e, t), i = X(t.clientWidth, window.innerWidth || 0), n = X(t.clientHeight, window.innerHeight || 0), r = a(t), p = a(t, "left"), s = {
832            top: r - o.top + o.marginTop,
833            left: p - o.left + o.marginLeft,
834            width: i,
835            height: n
836        };
837        return h(s);
838    }
839    function y(e) {
840        var i = e.nodeName;
841        return "BODY" === i || "HTML" === i ? !1 : "fixed" === t(e, "position") || y(o(e));
842    }
843    function w(e, t, i, r) {
844        var p = {
845            top: 0,
846            left: 0
847        }, s = d(e, t);
848        if ("viewport" === r) p = b(s); else {
849            var a;
850            "scrollParent" === r ? (a = n(o(e)), "BODY" === a.nodeName && (a = window.document.documentElement)) : "window" === r ? a = window.document.documentElement : a = r;
851            var l = u(a, s);
852            if ("HTML" === a.nodeName && !y(s)) {
853                var f = c(), m = f.height, h = f.width;
854                p.top += l.top - l.marginTop, p.bottom = m + l.top, p.left += l.left - l.marginLeft, 
855                p.right = h + l.left;
856            } else p = l;
857        }
858        return p.left += i, p.top += i, p.right -= i, p.bottom -= i, p;
859    }
860    function E(e) {
861        var t = e.width, o = e.height;
862        return t * o;
863    }
864    function v(e, t, o, i, n) {
865        var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0;
866        if (-1 === e.indexOf("auto")) return e;
867        var p = w(o, i, r, n), s = {
868            top: {
869                width: p.width,
870                height: t.top - p.top
871            },
872            right: {
873                width: p.right - t.right,
874                height: p.height
875            },
876            bottom: {
877                width: p.width,
878                height: p.bottom - t.bottom
879            },
880            left: {
881                width: t.left - p.left,
882                height: p.height
883            }
884        }, d = Object.keys(s).map(function(e) {
885            return de({
886                key: e
887            }, s[e], {
888                area: E(s[e])
889            });
890        }).sort(function(e, t) {
891            return t.area - e.area;
892        }), a = d.filter(function(e) {
893            var t = e.width, i = e.height;
894            return t >= o.clientWidth && i >= o.clientHeight;
895        }), l = 0 < a.length ? a[0].key : d[0].key, f = e.split("-")[1];
896        return l + (f ? "-" + f : "");
897    }
898    function x(e, t, o) {
899        var i = d(t, o);
900        return u(o, i);
901    }
902    function O(e) {
903        var t = window.getComputedStyle(e), o = parseFloat(t.marginTop) + parseFloat(t.marginBottom), i = parseFloat(t.marginLeft) + parseFloat(t.marginRight), n = {
904            width: e.offsetWidth + i,
905            height: e.offsetHeight + o
906        };
907        return n;
908    }
909    function L(e) {
910        var t = {
911            left: "right",
912            right: "left",
913            bottom: "top",
914            top: "bottom"
915        };
916        return e.replace(/left|right|bottom|top/g, function(e) {
917            return t[e];
918        });
919    }
920    function S(e, t, o) {
921        o = o.split("-")[0];
922        var i = O(e), n = {
923            width: i.width,
924            height: i.height
925        }, r = -1 !== [ "right", "left" ].indexOf(o), p = r ? "top" : "left", s = r ? "left" : "top", d = r ? "height" : "width", a = r ? "width" : "height";
926        return n[p] = t[p] + t[d] / 2 - i[d] / 2, n[s] = o === s ? t[s] - i[a] : t[L(s)], 
927        n;
928    }
929    function T(e, t) {
930        return Array.prototype.find ? e.find(t) : e.filter(t)[0];
931    }
932    function C(e, t, o) {
933        if (Array.prototype.findIndex) return e.findIndex(function(e) {
934            return e[t] === o;
935        });
936        var i = T(e, function(e) {
937            return e[t] === o;
938        });
939        return e.indexOf(i);
940    }
941    function N(t, o, i) {
942        var n = void 0 === i ? t : t.slice(0, C(t, "name", i));
943        return n.forEach(function(t) {
944            t.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
945            var i = t.function || t.fn;
946            t.enabled && e(i) && (o.offsets.popper = h(o.offsets.popper), o.offsets.reference = h(o.offsets.reference), 
947            o = i(o, t));
948        }), o;
949    }
950    function k() {
951        if (!this.state.isDestroyed) {
952            var e = {
953                instance: this,
954                styles: {},
955                arrowStyles: {},
956                attributes: {},
957                flipped: !1,
958                offsets: {}
959            };
960            e.offsets.reference = x(this.state, this.popper, this.reference), e.placement = v(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), 
961            e.originalPlacement = e.placement, e.offsets.popper = S(this.popper, e.offsets.reference, e.placement), 
962            e.offsets.popper.position = "absolute", e = N(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, 
963            this.options.onCreate(e));
964        }
965    }
966    function W(e, t) {
967        return e.some(function(e) {
968            var o = e.name, i = e.enabled;
969            return i && o === t;
970        });
971    }
972    function B(e) {
973        for (var t = [ !1, "ms", "Webkit", "Moz", "O" ], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length - 1; n++) {
974            var i = t[n], r = i ? "" + i + o : e;
975            if ("undefined" != typeof window.document.body.style[r]) return r;
976        }
977        return null;
978    }
979    function P() {
980        return this.state.isDestroyed = !0, W(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), 
981        this.popper.style.left = "", this.popper.style.position = "", this.popper.style.top = "", 
982        this.popper.style[B("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), 
983        this;
984    }
985    function D(e, t, o, i) {
986        var r = "BODY" === e.nodeName, p = r ? window : e;
987        p.addEventListener(t, o, {
988            passive: !0
989        }), r || D(n(p.parentNode), t, o, i), i.push(p);
990    }
991    function H(e, t, o, i) {
992        o.updateBound = i, window.addEventListener("resize", o.updateBound, {
993            passive: !0
994        });
995        var r = n(e);
996        return D(r, "scroll", o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, 
997        o;
998    }
999    function A() {
1000        this.state.eventsEnabled || (this.state = H(this.reference, this.options, this.state, this.scheduleUpdate));
1001    }
1002    function M(e, t) {
1003        return window.removeEventListener("resize", t.updateBound), t.scrollParents.forEach(function(e) {
1004            e.removeEventListener("scroll", t.updateBound);
1005        }), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, 
1006        t;
1007    }
1008    function I() {
1009        this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = M(this.reference, this.state));
1010    }
1011    function R(e) {
1012        return "" !== e && !isNaN(parseFloat(e)) && isFinite(e);
1013    }
1014    function U(e, t) {
1015        Object.keys(t).forEach(function(o) {
1016            var i = "";
1017            -1 !== [ "width", "height", "top", "right", "bottom", "left" ].indexOf(o) && R(t[o]) && (i = "px"), 
1018            e.style[o] = t[o] + i;
1019        });
1020    }
1021    function Y(e, t) {
1022        Object.keys(t).forEach(function(o) {
1023            var i = t[o];
1024            !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o]);
1025        });
1026    }
1027    function F(e, t, o) {
1028        var i = T(e, function(e) {
1029            var o = e.name;
1030            return o === t;
1031        }), n = !!i && e.some(function(e) {
1032            return e.name === o && e.enabled && e.order < i.order;
1033        });
1034        if (!n) {
1035            var r = "`" + t + "`";
1036            console.warn("`" + o + "`" + " modifier is required by " + r + " modifier in order to work, be sure to include it before " + r + "!");
1037        }
1038        return n;
1039    }
1040    function j(e) {
1041        return "end" === e ? "start" : "start" === e ? "end" : e;
1042    }
1043    function K(e) {
1044        var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], o = le.indexOf(e), i = le.slice(o + 1).concat(le.slice(0, o));
1045        return t ? i.reverse() : i;
1046    }
1047    function q(e, t, o, i) {
1048        var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), r = +n[1], p = n[2];
1049        if (!r) return e;
1050        if (0 === p.indexOf("%")) {
1051            var s;
1052            switch (p) {
1053              case "%p":
1054                s = o;
1055                break;
1056
1057              case "%":
1058              case "%r":
1059              default:
1060                s = i;
1061            }
1062            var d = h(s);
1063            return d[t] / 100 * r;
1064        }
1065        if ("vh" === p || "vw" === p) {
1066            var a;
1067            return a = "vh" === p ? X(document.documentElement.clientHeight, window.innerHeight || 0
1067) : X(document.documentElement.clientWidth, window.innerWidth || 0), 
1068            a / 100 * r;
1069        }
1070        return r;
1071    }
1072    function G(e, t, o, i) {
1073        var n = [ 0, 0 ], r = -1 !== [ "right", "left" ].indexOf(i), p = e.split(/(\+|\-)/).map(function(e) {
1074            return e.trim();
1075        }), s = p.indexOf(T(p, function(e) {
1076            return -1 !== e.search(/,|\s/);
1077        }));
1078        p[s] && -1 === p[s].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
1079        var d = /\s*,\s*|\s+/, a = -1 === s ? [ p ] : [ p.slice(0, s).concat([ p[s].split(d)[0] ]), [ p[s].split(d)[1] ].concat(p.slice(s + 1)) ];
1080        return a = a.map(function(e, i) {
1081            var n = (1 === i ? !r : r) ? "height" : "width", p = !1;
1082            return e.reduce(function(e, t) {
1083                return "" === e[e.length - 1] && -1 !== [ "+", "-" ].indexOf(t) ? (e[e.length - 1] = t, 
1084                p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t);
1085            }, []).map(function(e) {
1086                return q(e, n, t, o);
1087            });
1088        }), a.forEach(function(e, t) {
1089            e.forEach(function(o, i) {
1090                R(o) && (n[t] += o * ("-" === e[i - 1] ? -1 : 1));
1091            });
1092        }), n;
1093    }
1094    function z(e, t) {
1095        var o, i = t.offset, n = e.placement, r = e.offsets, p = r.popper, s = r.reference, d = n.split("-")[0];
1096        return o = R(+i) ? [ +i, 0 ] : G(i, p, s, d), "left" === d ? (p.top += o[0], p.left -= o[1]) : "right" === d ? (p.top += o[0], 
1097        p.left += o[1]) : "top" === d ? (p.left += o[0], p.top -= o[1]) : "bottom" === d && (p.left += o[0], 
1098        p.top += o[1]), e.popper = p, e;
1099    }
1100    for (var V = Math.min, _ = Math.floor, X = Math.max, Q = [ "native code", "[object MutationObserverConstructor]" ], J = function(e) {
1101        return Q.some(function(t) {
1102            return -1 < (e || "").toString().indexOf(t);
1103        });
1104    }, Z = "undefined" != typeof window, $ = [ "Edge", "Trident", "Firefox" ], ee = 0, te = 0; te < $.length; te += 1) if (Z && 0 <= navigator.userAgent.indexOf($[te])) {
1105        ee = 1;
1106        break;
1107    }
1108    var i, oe = Z && J(window.MutationObserver), ie = oe ? function(e) {
1109        var t = !1, o = 0, i = document.createElement("span"), n = new MutationObserver(function() {
1110            e(), t = !1;
1111        });
1112        return n.observe(i, {
1113            attributes: !0
1114        }), function() {
1115            t || (t = !0, i.setAttribute("x-index", o), ++o);
1116        };
1117    } : function(e) {
1118        var t = !1;
1119        return function() {
1120            t || (t = !0, setTimeout(function() {
1121                t = !1, e();
1122            }, ee));
1123        };
1124    }, ne = function() {
1125        return void 0 == i && (i = -1 !== navigator.appVersion.indexOf("MSIE 10")), i;
1126    }, re = function(e, t) {
1127        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
1128    }, pe = function() {
1129        function e(e, t) {
1130            for (var o, n = 0; n < t.length; n++) o = t[n], o.enumerable = o.enumerable || !1, 
1131            o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
1132        }
1133        return function(t, o, i) {
1134            return o && e(t.prototype, o), i && e(t, i), t;
1135        };
1136    }(), se = function(e, t, o) {
1137        return t in e ? Object.defineProperty(e, t, {
1138            value: o,
1139            enumerable: !0,
1140            configurable: !0,
1141            writable: !0
1142        }) : e[t] = o, e;
1143    }, de = Object.assign || function(e) {
1144        for (var t, o = 1; o < arguments.length; o++) for (var i in t = arguments[o], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
1145        return e;
1146    }, ae = [ "auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start" ], le = ae.slice(3), fe = {
1147        FLIP: "flip",
1148        CLOCKWISE: "clockwise",
1149        COUNTERCLOCKWISE: "counterclockwise"
1150    }, me = function() {
1151        function t(o, i) {
1152            var n = this, r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
1153            re(this, t), this.scheduleUpdate = function() {
1154                return requestAnimationFrame(n.update);
1155            }, this.update = ie(this.update.bind(this)), this.options = de({}, t.Defaults, r), 
1156            this.state = {
1157                isDestroyed: !1,
1158                isCreated: !1,
1159                scrollParents: []
1160            }, this.reference = o.jquery ? o[0] : o, this.popper = i.jquery ? i[0] : i, this.options.modifiers = {}, 
1161            Object.keys(de({}
1161, t.Defaults.modifiers, r.modifiers)).forEach(function(e) {
1162                n.options.modifiers[e] = de({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {});
1163            }), this.modifiers = Object.keys(this.options.modifiers).map(function(e) {
1164                return de({
1165                    name: e
1166                }, n.options.modifiers[e]);
1167            }).sort(function(e, t) {
1168                return e.order - t.order;
1169            }), this.modifiers.forEach(function(t) {
1170                t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state);
1171            }), this.update();
1172            var p = this.options.eventsEnabled;
1173            p && this.enableEventListeners(), this.state.eventsEnabled = p;
1174        }
1175        return pe(t, [ {
1176            key: "update",
1177            value: function() {
1178                return k.call(this);
1179            }
1180        }, {
1181            key: "destroy",
1182            value: function() {
1183                return P.call(this);
1184            }
1185        }, {
1186            key: "enableEventListeners",
1187            value: function() {
1188                return A.call(this);
1189            }
1190        }, {
1191            key: "disableEventListeners",
1192            value: function() {
1193                return I.call(this);
1194            }
1195        } ]), t;
1196    }();
1197    return me.Utils = ("undefined" == typeof window ? global : window).PopperUtils, 
1198    me.placements = ae, me.Defaults = {
1199        placement: "bottom",
1200        eventsEnabled: !0,
1201        removeOnDestroy: !1,
1202        onCreate: function() {},
1203        onUpdate: function() {},
1204        modifiers: {
1205            shift: {
1206                order: 100,
1207                enabled: !0,
1208                fn: function(e) {
1209                    var t = e.placement, o = t.split("-")[0], i = t.split("-")[1];
1210                    if (i) {
1211                        var n = e.offsets, r = n.reference, p = n.popper, s = -1 !== [ "bottom", "top" ].indexOf(o), d = s ? "left" : "top", a = s ? "width" : "height", l = {
1212                            start: se({}, d, r[d]),
1213                            end: se({}, d, r[d] + r[a] - p[a])
1214                        };
1215                        e.offsets.popper = de({}, p, l[i]);
1216                    }
1217                    return e;
1218                }
1219            },
1220            offset: {
1221                order: 200,
1222                enabled: !0,
1223                fn: z,
1224                offset: 0
1225            },
1226            preventOverflow: {
1227                order: 300,
1228                enabled: !0,
1229                fn: function(e, t) {
1230                    var o = t.boundariesElement || r(e.instance.popper);
1231                    e.instance.reference === o && (o = r(o));
1232                    var i = w(e.instance.popper, e.instance.reference, t.padding, o);
1233                    t.boundaries = i;
1234                    var n = t.priority, p = e.offsets.popper, s = {
1235                        primary: function(e) {
1236                            var o = p[e];
1237                            return p[e] < i[e] && !t.escapeWithReference && (o = X(p[e], i[e])), se({}, e, o);
1238                        },
1239                        secondary: function(e) {
1240                            var o = "right" === e ? "left" : "top", n = p[o];
1241                            return p[e] > i[e] && !t.escapeWithReference && (n = V(p[o], i[e] - ("right" === e ? p.width : p.height))), 
1242                            se({}, o, n);
1243                        }
1244                    };
1245                    return n.forEach(function(e) {
1246                        var t = -1 === [ "left", "top" ].indexOf(e) ? "secondary" : "primary";
1247                        p = de({}, p, s[t](e));
1248                    }), e.offsets.popper = p, e;
1249                },
1250                priority: [ "left", "right", "top", "bottom" ],
1251                padding: 5,
1252                boundariesElement: "scrollParent"
1253            },
1254            keepTogether: {
1255                order: 400,
1256                enabled: !0,
1257                fn: function(e) {
1258                    var t = e.offsets, o = t.popper, i = t.reference, n = e.placement.split("-")[0], r = _, p = -1 !== [ "top", "bottom" ].indexOf(n), s = p ? "right" : "bottom", d = p ? "left" : "top", a = p ? "width" : "height";
1259                    return o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), 
1260                    e;
1261                }
1262            },
1263            arrow: {
1264                order: 500,
1265                enabled: !0,
1266                fn: function(e, o) {
1267                    if (!F(e.instance.modifiers, "arrow", "keepTogether")) return e;
1268                    var i = o.element;
1269                    if ("string" == typeof i) {
1270                        if (i = e.instance.popper.querySelector(i), !i) return e;
1271                    } else if (!e.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), 
1272                    e;
1273                    var n = e.placement.split("-")[0], r = e.offsets, p = r.popper, s = r.reference, d = -1 !== [ "left", "right" ].indexOf(n), a = d ? "he
vendor: 6,341 bytes, lines 1273-1379
1273ight" : "width", l = d ? "Top" : "Left", f = l.toLowerCase(), m = d ? "left" : "top", c = d ? "bottom" : "right", g = O(i)[a];
1274                    s[c] - g < p[f] && (e.offsets.popper[f] -= p[f] - (s[c] - g)), s[f] + g > p[c] && (e.offsets.popper[f] += s[f] + g - p[c]);
1275                    var u = s[f] + s[a] / 2 - g / 2, b = t(e.instance.popper, "margin" + l).replace("px", ""), y = u - h(e.offsets.popper)[f] - b;
1276                    return y = X(V(p[a] - g, y), 0), e.arrowElement = i, e.offsets.arrow = {}, e.offsets.arrow[f] = Math.round(y), 
1277                    e.offsets.arrow[m] = "", e;
1278                },
1279                element: "[x-arrow]"
1280            },
1281            flip: {
1282                order: 600,
1283                enabled: !0,
1284                fn: function(e, t) {
1285                    if (W(e.instance.modifiers, "inner")) return e;
1286                    if (e.flipped && e.placement === e.originalPlacement) return e;
1287                    var o = w(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement), i = e.placement.split("-")[0], n = L(i), r = e.placement.split("-")[1] || "", p = [];
1288                    switch (t.behavior) {
1289                      case fe.FLIP:
1290                        p = [ i, n ];
1291                        break;
1292
1293                      case fe.CLOCKWISE:
1294                        p = K(i);
1295                        break;
1296
1297                      case fe.COUNTERCLOCKWISE:
1298                        p = K(i, !0);
1299                        break;
1300
1301                      default:
1302                        p = t.behavior;
1303                    }
1304                    return p.forEach(function(s, d) {
1305                        if (i !== s || p.length === d + 1) return e;
1306                        i = e.placement.split("-")[0], n = L(i);
1307                        var a = e.offsets.popper, l = e.offsets.reference, f = _, m = "left" === i && f(a.right) > f(l.left) || "right" === i && f(a.left) < f(l.right) || "top" === i && f(a.bottom) > f(l.top) || "bottom" === i && f(a.top) < f(l.bottom), c = f(a.left) < f(o.left), h = f(a.right) > f(o.right), g = f(a.top) < f(o.top), u = f(a.bottom) > f(o.bottom), b = "left" === i && c || "right" === i && h || "top" === i && g || "bottom" === i && u, y = -1 !== [ "top", "bottom" ].indexOf(i), w = !!t.flipVariations && (y && "start" === r && c || y && "end" === r && h || !y && "start" === r && g || !y && "end" === r && u);
1308                        (m || b || w) && (e.flipped = !0, (m || b) && (i = p[d + 1]), w && (r = j(r)), e.placement = i + (r ? "-" + r : ""), 
1309                        e.offsets.popper = de({}, e.offsets.popper, S(e.instance.popper, e.offsets.reference, e.placement)), 
1310                        e = N(e.instance.modifiers, e, "flip"));
1311                    }), e;
1312                },
1313                behavior: "flip",
1314                padding: 5,
1315                boundariesElement: "viewport"
1316            },
1317            inner: {
1318                order: 700,
1319                enabled: !1,
1320                fn: function(e) {
1321                    var t = e.placement, o = t.split("-")[0], i = e.offsets, n = i.popper, r = i.reference, p = -1 !== [ "left", "right" ].indexOf(o), s = -1 === [ "top", "left" ].indexOf(o);
1322                    return n[p ? "left" : "top"] = r[o] - (s ? n[p ? "width" : "height"] : 0), e.placement = L(t), 
1323                    e.offsets.popper = h(n), e;
1324                }
1325            },
1326            hide: {
1327                order: 800,
1328                enabled: !0,
1329                fn: function(e) {
1330                    if (!F(e.instance.modifiers, "hide", "preventOverflow")) return e;
1331                    var t = e.offsets.reference, o = T(e.instance.modifiers, function(e) {
1332                        return "preventOverflow" === e.name;
1333                    }).boundaries;
1334                    if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) {
1335                        if (!0 === e.hide) return e;
1336                        e.hide = !0, e.attributes["x-out-of-boundaries"] = "";
1337                    } else {
1338                        if (!1 === e.hide) return e;
1339                        e.hide = !1, e.attributes["x-out-of-boundaries"] = !1;
1340                    }
1341                    return e;
1342                }
1343            },
1344            computeStyle: {
1345                order: 850,
1346                enabled: !0,
1347                fn: function(e, t) {
1348                    var o = t.x, i = t.y, n = e.offsets.popper, p = T(e.instance.modifiers, function(e) {
1349                        return "applyStyle" === e.name;
1350                    }).gpuAcceleration;
1351                    void 0 !== p && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
1352                    var s, d, a = void 0 === p ? t.gpuAcceleration : p, l = r(e.instance.popper), f = g(l), m = {
1353                        position: n.position
1354                    }, c = {
1355                        left: _(n.left),
1356                        top: _(n.top),
1357                        bottom: _(n.bottom),
1358                        right: _(n.right)
1359                    }, h = "bottom" === o ? "top" : "bottom", u = "right" === i ? "left" : "right", b = B("transform");
1360                    if (d = "bottom" == h ? -f.height + c.bottom : c.top, s = "right" == u ? -f.width + c.right : c.left, 
1361                    a && b) m[b] = "translate3d(" + s + "px, " + d + "px, 0)", m[h] = 0, m[u] = 0, m.willChange = "transform"; else {
1362                        var y = "bottom" == h ? -1 : 1, w = "right" == u ? -1 : 1;
1363                        m[h] = d * y, m[u] = s * w, m.willChange = h + ", " + u;
1364                    }
1365                    var E = {
1366                        "x-placement": e.placement
1367                    };
1368                    return e.attributes = de({}, E, e.attributes), e.styles = de({}, m, e.styles), e.arrowStyles = de({}, e.offsets.arrow, e.arrowStyles), 
1369                    e;
1370                },
1371                gpuAcceleration: !0,
1372                x: "bottom",
1373                y: "right"
1374            },
1375            applyStyle: {
1376                order: 900,
1377                enabled: !0,
1378                fn: function(e) {
1379                    return U(e.instance.popper, e.styles), Y(e.instance.popper, e.attributes), e.arrowElement && Ob
1379ject.keys(e.arrowStyles).length && U(e.arrowElement, e.arrowStyles), 
1380                    e;
1381                },
1382                onLoad: function(e, t, o, i, n) {
1383                    var r = x(n, t, e), p = v(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding);
1384                    return t.setAttribute("x-placement", p), U(t, {
1385                        position: "absolute"
1386                    }), o;
1387                },
1388                gpuAcceleration: void 0
1389            }
1390        }
1391    }, me;
1392});
1393
1394var Util = function($) {
1395    var transition = false;
1396    var MAX_UID = 1e6;
1397    function toType(obj) {
1398        return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
1399    }
1400    function getSpecialTransitionEndEvent() {
1401        return {
1402            bindType: transition.end,
1403            delegateType: transition.end,
1404            handle: function handle(event) {
1405                if ($(event.target).is(this)) {
1406                    return event.handleObj.handler.apply(this, arguments);
1407                }
1408                return undefined;
1409            }
1410        };
1411    }
1412    function transitionEndTest() {
1413        if (typeof window !== "undefined" && window.QUnit) {
1414            return false;
1415        }
1416        return {
1417            end: "transitionend"
1418        };
1419    }
1420    function transitionEndEmulator(duration) {
1421        var _this = this;
1422        var called = false;
1423        $(this).one(Util.TRANSITION_END, function() {
1424            called = true;
1425        });
1426        setTimeout(function() {
1427            if (!called) {
1428                Util.triggerTransitionEnd(_this);
1429            }
1430        }, duration);
1431        return this;
1432    }
1433    function setTransitionEndSupport() {
1434        transition = transitionEndTest();
1435        $.fn.emulateTransitionEnd = transitionEndEmulator;
1436        if (Util.supportsTransitionEnd()) {
1437            $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
1438        }
1439    }
1440    function escapeId(selector) {
1441        selector = typeof $.escapeSelector === "function" ? $.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, "\\$1");
1442        return selector;
1443    }
1444    var Util = {
1445        TRANSITION_END: "bsTransitionEnd",
1446        getUID: function getUID(prefix) {
1447            do {
1448                prefix += ~~(Math.random() * MAX_UID);
1449            } while (document.getElementById(prefix));
1450            return prefix;
1451        },
1452        getSelectorFromElement: function getSelectorFromElement(element) {
1453            var selector = element.getAttribute("data-target");
1454            if (!selector || selector === "#") {
1455                selector = element.getAttribute("href") || "";
1456            }
1457            if (selector.charAt(0) === "#") {
1458                selector = escapeId(selector);
1459            }
1460            try {
1461                var $selector = $(document).find(selector);
1462                return $selector.length > 0 ? selector : null;
1463            } catch (err) {
1464                return null;
1465            }
1466        },
1467        reflow: function reflow(element) {
1468            return element.offsetHeight;
1469        },
1470        triggerTransitionEnd: function triggerTransitionEnd(element) {
1471            $(element).trigger(transition.end);
1472        },
1473        supportsTransitionEnd: function supportsTransitionEnd() {
1474            return Boolean(transition);
1475        },
1476        isElement: function isElement(obj) {
1477            return (obj[0] || obj).nodeType;
1478        },
1479        typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
1480            for (var property in configTypes) {
1481                if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
1482                    var expectedTypes = configTypes[property];
1483                    var value = config[property];
1484                    var valueType = value && Util.isElement(value) ? "element" : toType(value);
1485                    if (!new RegExp(expectedTypes).test(valueType)) {
1486                        throw new Error(componentName.toUpperCase() + ": " + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
1487                    }
1488                }
1489            }
1490        }
1491    };
1492    setTransitionEndSupport();
1493    return Util;
1494}($);
1495
1496function _extends() {
1497    _extends = Object.assign || function(target) {
1498        for (var i = 1; i < arguments.length; i++) {
1499            var source = arguments[i];
1500            for (var key in source) {
1501                if (Object.prototype.hasOwnProperty.call(source, key)) {
1502                    target[key] = source[key];
1503                }
1504            }
1505        }
1506        return target;
1507    };
1508    return _extends.apply(this, arguments);
1509}
1510
1511function _defineProperties(target, props) {
1512    for (var i = 0; i < props.length; i++) {
1513        var descriptor = props[i];
1514        descriptor.enumerable = descriptor.enumerable || false;
1515        descriptor.configurable = true;
1516        if ("value" in descriptor) descriptor.writable = true;
1517        Object.defineProperty(target, descriptor.key, descriptor);
1518    }
1519}
1520
1521function _createClass(Constructor, protoProps, staticProps) {
1522    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
1523    if (staticProps) _defineProperties(Constructor, staticProps);
1524    return Constructor;
1525}
1526
1527var Collapse = function($) {
1528    var NAME = "collapse";
1529    var VERSION = "4.0.0";
1530    var DATA_KEY = "bs.collapse";
1531    var EVENT_KEY = "." + DATA_KEY;
1532    var DATA_API_KEY = ".data-api";
1533    var JQUERY_NO_CONFLICT = $.fn[NAME];
1534    var TRANSITION_DURATION = 600;
1535    var Default = {
1536        toggle: true,
1537        parent: ""
1538    };
1539    var DefaultType = {
1540        toggle: "boolean",
1541        parent: "(string|element)"
1542    };
1543    var Event = {
1544        SHOW: "show" + EVENT_KEY,
1545        SHOWN: "shown" + EVENT_KEY,
1546        HIDE: "hide" + EVENT_KEY,
1547        HIDDEN: "hidden" + EVENT_KEY,
1548        CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1549    };
1550    var ClassName = {
1551        SHOW: "show",
1552        COLLAPSE: "collapse",
1553        COLLAPSING: "collapsing",
1554        COLLAPSED: "collapsed"
1555    };
1556    var Dimension = {
1557        WIDTH: "width",
1558        HEIGHT: "height"
1559    };
1560    var Selector = {
1561        ACTIVES: ".show, .collapsing",
1562        DATA_TOGGLE: '[data-toggle="collapse"]'
1563    };
1564    var Collapse = function() {
1565        function Collapse(element, config) {
1566            this._isTransitioning = false;
1567            this._element = element;
1568            this._config = this._getConfig(config);
1569            this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
1570            var tabToggles = $(Selector.DATA_TOGGLE);
1571            for (var i = 0; i < tabToggles.length; i++) {
1572                var elem = tabToggles[i];
1573                var selector = Util.getSelectorFromElement(elem);
1574                if (selector !== null && $(selector).filter(element).length > 0) {
1575                    this._selector = selector;
1576                    this._triggerArray.push(elem);
1577                }
1578            }
1579            this._parent = this._config.parent ? this._getParent() : null;
1580            if (!this._config.parent) {
1581                this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1582            }
1583            if (this._config.toggle) {
1584                this.toggle();
1585            }
1586        }
1587        var _proto = Collapse.prototype;
1588        _proto.toggle = function toggle() {
1589            if ($(this._element).hasClass(ClassName.SHOW)) {
1590                this.hide();
1591            } else {
1592                this.show();
1593            }
1594        };
1595        _proto.show = function show() {
1596            var _this = this;
1597            if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {
1598                return;
1599            }
1600            var actives;
1601            var activesData;
1602            if (this._parent) {
1603                actives = $.makeArray($(this._parent).find(Selector.ACTIVES).filter('[data-parent="' + this._config.parent + '"]'));
1604                if (actives.length === 0) {
1605                    actives = null;
1606                }
1607            }
1608            if (actives) {
1609                activesData = $(actives).not(this._selector).data(DATA_KEY);
1610                if (activesData && activesData._isTransitioning) {
1611                    return;
1612                }
1613            }
1614            var startEvent = $.Event(Event.SHOW);
1615            $(this._element).trigger(startEvent);
1616            if (startEvent.isDefaultPrevented()) {
1617                return;
1618            }
1619            if (actives) {
1620                Collapse._jQueryInterface.call($(actives).not(this._selector), "hide");
1621                if (!activesData) {
1622                    $(actives).data(DATA_KEY, null);
1623                }
1624            }
1625            var dimension = this._getDimension();
1626            $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
1627            this._element.style[dimension] = 0;
1628            if (this._triggerArray.length > 0) {
1629                $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr("aria-expanded", true);
1630            }
1631            this.setTransitioning(true);
1632            var complete = function complete() {
1633                $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
1634                _this._element.style[dimension] = "";
1635                _this.setTransitioning(false);
1636                $(_this._element).trigger(Event.SHOWN);
1637            };
1638            if (!Util.supportsTransitionEnd()) {
1639                complete();
1640                return;
1641            }
1642            var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1643            var scrollSize = "scroll" + capitalizedDimension;
1644            $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1645            this._element.style[dimension] = this._element[scrollSize] + "px";
1646        };
1647        _proto.hide = function hide() {
1648            var _this2 = this;
1649            if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) {
1650                return;
1651            }
1652            var startEvent = $.Event(Event.HIDE);
1653            $(this._element).trigger(startEvent);
1654            if (startEvent.isDefaultPrevented()) {
1655                return;
1656            }
1657            var dimension = this._getDimension();
1658            this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1659            Util.reflow(this._element);
1660            $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
1661            if (this._triggerArray.length > 0) {
1662                for (var i = 0; i < this._triggerArray.length; i++) {
1663                    var trigger = this._triggerArray[i];
1664                    var selector = Util.getSelectorFromElement(trigger);
1665                    if (selector !== null) {
1666                        var $elem = $(selector);
1667                        if (!$elem.hasClass(ClassName.SHOW)) {
1668                            $(trigger).addClass(ClassName.COLLAPSED).attr("aria-expanded", false);
1669                        }
1670                    }
1671                }
1672            }
1673            this.setTransitioning(true);
1674            var complete = function complete() {
1675                _this2.setTransitioning(false);
1676                $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
1677            };
1678            this._element.style[dimension] = "";
1679            if (!Util.supportsTransitionEnd()) {
1680                complete();
1681                return;
1682            }
1683            $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1684        };
1685        _proto.setTransitioning = function setTransitioning(isTransitioning) {
1686            this._isTransitioning = isTransitioning;
1687        };
1688        _proto.dispose = function dispose() {
1689            $.removeData(this._element, DATA_KEY);
1690            this._config = null;
1691            this._parent = null;
1692            this._element = null;
1693            this._triggerArray = null;
1694            this._isTransitioning = null;
1695        };
1696        _proto._getConfig = function _getConfig(config) {
1697            config = _extends({}, Default, config);
1698            config.toggle = Boolean(config.toggle);
1699            Util.typeCheckConfig(NAME, config, DefaultType);
1700            return config;
1701        };
1702        _proto._getDimension = function _getDimension() {
1703            var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1704            return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1705        };
1706        _proto._getParent = function _getParent() {
1707            var _this3 = this;
1708            var parent = null;
1709            if (Util.isElement(this._config.parent)) {
1710                parent = this._config.parent;
1711                if (typeof this._config.parent.jquery !== "undefined") {
1712                    parent = this._config.parent[0];
1713                }
1714            } else {
1715                parent = $(this._config.parent)[0];
1716            }
1717            var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';
1718            $(parent).find(selector).each(function(i, element) {
1719                _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [ element ]);
1720            });
1721            return parent;
1722        };
1723        _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1724            if (element) {
1725                var isOpen = $(element).hasClass(ClassName.SHOW);
1726                if (triggerArray.length > 0) {
1727                    $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr("aria-expanded", isOpen);
1728                }
1729            }
1730        };
1731        Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1732            var selector = Util.getSelectorFromElement(element);
1733            return selector ? $(selector)[0] : null;
1734        };
1735        Collapse._jQueryInterface = function _jQueryInterface(config) {
1736            return this.each(function() {
1737                var $this = $(this);
1738                var data = $this.data(DATA_KEY);
1739                var _config = _extends({}, Default, $this.data(), typeof config === "object" && config);
1740                if (!data && _config.toggle && /show|hide/.test(config)) {
1741                    _config.toggle = false;
1742                }
1743                if (!data) {
1744                    data = new Collapse(this, _config);
1745                    $this.data(DATA_KEY, data);
1746                }
1747                if (typeof config === "string") {
1748                    if (typeof data[config] === "undefined") {
1749                        throw new TypeError('No method named "' + config + '"');
1750                    }
1751                    data[config]();
1752                }
1753            });
1754        };
1755        _createClass(Collapse, null, [ {
1756            key: "VERSION",
1757            get: function get() {
1758                return VERSION;
1759            }
1760        }, {
1761            key: "Default",
1762            get: function get() {
1763                return Default;
1764            }
1765        } ]);
1766        return Collapse;
1767    }();
1768    $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) {
1769        if (event.currentTarget.tagName === "A") {
1770            event.preventDefault();
1771        }
1772        var $trigger = $(this);
1773        var selector = Util.getSelectorFromElement(this);
1774        $(selector).each(function() {
1775            var $target = $(this);
1776            var data = $target.data(DATA_KEY);
1777            var config = data ? "toggle" : $trigger.data();
1778            Collapse._jQueryInterface.call($target, config);
1779        });
1780    });
1781    $.fn[NAME] = Collapse._jQueryInterface;
1782    $.fn[NAME].Constructor = Collapse;
1783    $.fn[NAME].noConflict = function() {
1784        $.fn[NAME] = JQUERY_NO_CONFLICT;
1785        return Collapse._jQueryInterface;
1786    };
1787    return Collapse;
1788}($);
1789
1790function _defineProperties(target, props) {
1791    for (var i = 0; i < props.length; i++) {
1792        var descriptor = props[i];
1793        descriptor.enumerable = descriptor.enumerable || false;
1794        descriptor.configurable = true;
1795        if ("value" in descriptor) descriptor.writable = true;
1796        Object.defineProperty(target, descriptor.key, descriptor);
1797    }
1798}
1799
1800function _createClass(Constructor, protoProps, staticProps) {
1801    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
1802    if (staticProps) _defineProperties(Constructor, staticProps);
1803    return Constructor;
1804}
1805
1806var Tab = function($) {
1807    var NAME = "tab";
1808    var VERSION = "4.0.0";
1809    var DATA_KEY = "bs.tab";
1810    var EVENT_KEY = "." + DATA_KEY;
1811    var DATA_API_KEY = ".data-api";
1812    var JQUERY_NO_CONFLICT = $.fn[NAME];
1813    var TRANSITION_DURATION = 150;
1814    var Event = {
1815        HIDE: "hide" + EVENT_KEY,
1816        HIDDEN: "hidden" + EVENT_KEY,
1817        SHOW: "show" + EVENT_KEY,
1818        SHOWN: "shown" + EVENT_KEY,
1819        CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1820    };
1821    var ClassName = {
1822        DROPDOWN_MENU: "dropdown-menu",
1823        ACTIVE: "active",
1824        DISABLED: "disabled",
1825        FADE: "fade",
1826        SHOW: "show"
1827    };
1828    var Selector = {
1829        DROPDOWN: ".dropdown",
1830        NAV_LIST_GROUP: ".nav, .list-group",
1831        ACTIVE: ".active",
1832        ACTIVE_UL: "> li > .active",
1833        DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
1834        DROPDOWN_TOGGLE: ".dropdown-toggle",
1835        DROPDOWN_ACTIVE_CHILD: "> .dropdown-menu .active"
1836    };
1837    var Tab = function() {
1838        function Tab(element) {
1839            this._element = element;
1840        }
1841        var _proto = Tab.prototype;
1842        _proto.show = function show() {
1843            var _this = this;
1844            if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
1845                return;
1846            }
1847            var target;
1848            var previous;
1849            var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0];
1850            var selector = Util.getSelectorFromElement(this._element);
1851            if (listElement) {
1852                var itemSelector = listElement.nodeName === "UL" ? Selector.ACTIVE_UL : Selector.ACTIVE;
1853                previous = $.makeArray($(listElement).find(itemSelector));
1854                previous = previous[previous.length - 1];
1855            }
1856            var hideEvent = $.Event(Event.HIDE, {
1857                relatedTarget: this._element
1858            });
1859            var showEvent = $.Event(Event.SHOW, {
1860                relatedTarget: previous
1861            });
1862            if (previous) {
1863                $(previous).trigger(hideEvent);
1864            }
1865            $(this._element).trigger(showEvent);
1866            if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
1867                return;
1868            }
1869            if (selector) {
1870                target = $(selector)[0];
1871            }
1872            this._activate(this._element, listElement);
1873            var complete = function complete() {
1874                var hiddenEvent = $.Event(Event.HIDDEN, {
1875                    relatedTarget: _this._element
1876                });
1877                var shownEvent = $.Event(Event.SHOWN, {
1878                    relatedTarget: previous
1879                });
1880                $(previous).trigger(hiddenEvent);
1881                $(_this._element).trigger(shownEvent);
1882            };
1883            if (target) {
1884                this._activate(target, target.parentNode, complete);
1885            } else {
1886                complete();
1887            }
1888        };
1889        _proto.dispose = function dispose() {
1890            $.removeData(this._element, DATA_KEY);
1891            this._element = null;
1892        };
1893        _proto._activate = function _activate(element, container, callback) {
1894            var _this2 = this;
1895            var activeElements;
1896            if (container.nodeName === "UL") {
1897                activeElements = $(container).find(Selector.ACTIVE_UL);
1898            } else {
1899                activeElements = $(container).children(Selector.ACTIVE);
1900            }
1901            var active = activeElements[0];
1902            var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE);
1903            var complete = function complete() {
1904                return _this2._transitionComplete(element, active, callback);
1905            };
1906            if (active && isTransitioning) {
1907                $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1908            } else {
1909                complete();
1910            }
1911        };
1912        _proto._transitionComplete = function _transitionComplete(element, active, callback) {
1913            if (active) {
1914                $(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
1915                var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
1916                if (dropdownChild) {
1917                    $(dropdownChild).removeClass(ClassName.ACTIVE);
1918                }
1919                if (active.getAttribute("role") === "tab") {
1920                    active.setAttribute("aria-selected", false);
1921                }
1922            }
1923            $(element).addClass(ClassName.ACTIVE);
1924            if (element.getAttribute("role") === "tab") {
1925                element.setAttribute("aria-selected", true);
1926            }
1927            Util.reflow(element);
1928            $(element).addClass(ClassName.SHOW);
1929            if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
1930                var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
1931                if (dropdownElement) {
1932                    $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
1933                }
1934                element.setAttribute("aria-expanded", true);
1935            }
1936            if (callback) {
1937                callback();
1938            }
1939        };
1940        Tab._jQueryInterface = function _jQueryInterface(config) {
1941            return this.each(function() {
1942                var $this = $(this);
1943                var data = $this.data(DATA_KEY);
1944                if (!data) {
1945                    data = new Tab(this);
1946                    $this.data(DATA_KEY, data);
1947                }
1948                if (typeof config === "string") {
1949                    if (typeof data[config] === "undefined") {
1950                        throw new TypeError('No method named "' + config + '"');
1951                    }
1952                    data[config]();
1953                }
1954            });
1955        };
1956        _createClass(Tab, null, [ {
1957            key: "VERSION",
1958            get: function get() {
1959                return VERSION;
1960            }
1961        } ]);
1962        return Tab;
1963    }();
1964    $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) {
1965        event.preventDefault();
1966        Tab._jQueryInterface.call($(this), "show");
1967    });
1968    $.fn[NAME] = Tab._jQueryInterface;
1969    $.fn[NAME].Constructor = Tab;
1970    $.fn[NAME].noConflict = function() {
1971        $.fn[NAME] = JQUERY_NO_CONFLICT;
1972        return Tab._jQueryInterface;
1973    };
1974    return Tab;
1975}($);
1976
1977function _extends() {
1978    _extends = Object.assign || function(target) {
1979        for (var i = 1; i < arguments.length; i++) {
1980            var source = arguments[i];
1981            for (var key in source) {
1982                if (Object.prototype.hasOwnProperty.call(source, key)) {
1983                    target[key] = source[key];
1984                }
1985            }
1986        }
1987        return target;
1988    };
1989    return _extends.apply(this, arguments);
1990}
1991
1992function _defineProperties(target, props) {
1993    for (var i = 0; i < props.length; i++) {
1994        var descriptor = props[i];
1995        descriptor.enumerable = descriptor.enumerable || false;
1996        descriptor.configurable = true;
1997        if ("value" in descriptor) descriptor.writable = true;
1998        Object.defineProperty(target, descriptor.key, descriptor);
1999    }
2000}
2001
2002function _createClass(Constructor, protoProps, staticProps) {
2003    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
2004    if (staticProps) _defineProperties(Constructor, staticProps);
2005    return Constructor;
2006}
2007
2008var Modal = function($) {
2009    var NAME = "modal";
2010    var VERSION = "4.0.0";
2011    var DATA_KEY = "bs.modal";
2012    var EVENT_KEY = "." + DATA_KEY;
2013    var DATA_API_KEY = ".data-api";
2014    var JQUERY_NO_CONFLICT = $.fn[NAME];
2015    var TRANSITION_DURATION = 300;
2016    var BACKDROP_TRANSITION_DURATION = 150;
2017    var ESCAPE_KEYCODE = 27;
2018    var Default = {
2019        backdrop: true,
2020        keyboard: true,
2021        focus: true,
2022        show: true
2023    };
2024    var DefaultType = {
2025        backdrop: "(boolean|string)",
2026        keyboard: "boolean",
2027        focus: "boolean",
2028        show: "boolean"
2029    };
2030    var Event = {
2031        HIDE: "hide" + EVENT_KEY,
2032        HIDDEN: "hidden" + EVENT_KEY,
2033        SHOW: "show" + EVENT_KEY,
2034        SHOWN: "shown" + EVENT_KEY,
2035        FOCUSIN: "focusin" + EVENT_KEY,
2036        RESIZE: "resize" + EVENT_KEY,
2037        CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
2038        KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
2039        MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
2040        MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
2041        CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
2042    };
2043    var ClassName = {
2044        SCROLLBAR_MEASURER: "modal-scrollbar-measure",
2045        BACKDROP: "modal-backdrop",
2046        OPEN: "modal-open",
2047        FADE: "fade",
2048        SHOW: "show"
2049    };
2050    var Selector = {
2051        DIALOG: ".modal-dialog",
2052        DATA_TOGGLE: '[data-toggle="modal"]',
2053        DATA_DISMISS: '[data-dismiss="modal"]',
2054        FIXED_CONTENT: ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",
2055        STICKY_CONTENT: ".sticky-top",
2056        NAVBAR_TOGGLER: ".navbar-toggler"
2057    };
2058    var Modal = function() {
2059        function Modal(element, config) {
2060            this._config = this._getConfig(config);
2061            this._element = element;
2062            this._dialog = $(element).find(Selector.DIALOG)[0];
2063            this._backdrop = null;
2064            this._isShown = false;
2065            this._isBodyOverflowing = false;
2066            this._ignoreBackdropClick = false;
2067            this._originalBodyPadding = 0;
2068            this._scrollbarWidth = 0;
2069        }
2070        var _proto = Modal.prototype;
2071        _proto.toggle = function toggle(relatedTarget) {
2072            return this._isShown ? this.hide() : this.show(relatedTarget);
2073        };
2074        _proto.show = function show(relatedTarget) {
2075            var _this = this;
2076            if (this._isTransitioning || this._isShown) {
2077                return;
2078            }
2079            if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
2080                this._isTransitioning = true;
2081            }
2082            var showEvent = $.Event(Event.SHOW, {
2083                relatedTarget: relatedTarget
2084            });
2085            $(this._element).trigger(showEvent);
2086            if (this._isShown || showEvent.isDefaultPrevented()) {
2087                return;
2088            }
2089            this._isShown = true;
2090            this._checkScrollbar();
2091            this._setScrollbar();
2092            this._adjustDialog();
2093            $(document.body).addClass(ClassName.OPEN);
2094            this._setEscapeEvent();
2095            this._setResizeEvent();
2096            $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function(event) {
2097                return _this.hide(event);
2098            });
2099            $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function() {
2100                $(_this._element).one(Event.MOUSEUP_DISMISS, function(event) {
2101                    if ($(event.target).is(_this._element)) {
2102                        _this._ignoreBackdropClick = true;
2103                    }
2104                });
2105            });
2106            this._showBackdrop(function() {
2107                return _this._showElement(relatedTarget);
2108            });
2109        };
2110        _proto.hide = function hide(event) {
2111            var _this2 = this;
2112            if (event) {
2113                event.preventDefault();
2114            }
2115            if (this._isTransitioning || !this._isShown) {
2116                return;
2117            }
2118            var hideEvent = $.Event(Event.HIDE);
2119            $(this._element).trigger(hideEvent);
2120            if (!this._isShown || hideEvent.isDefaultPrevented()) {
2121                return;
2122            }
2123            this._isShown = false;
2124            var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
2125            if (transition) {
2126                this._isTransitioning = true;
2127            }
2128            this._setEscapeEvent();
2129            this._setResizeEvent();
2130            $(document).off(Event.FOCUSIN);
2131            $(this._element).removeClass(ClassName.SHOW);
2132            $(this._element).off(Event.CLICK_DISMISS);
2133            $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
2134            if (transition) {
2135                $(this._element).one(Util.TRANSITION_END, function(event) {
2136                    return _this2._hideModal(event);
2137                }).emulateTransitionEnd(TRANSITION_DURATION);
2138            } else {
2139                this._hideModal();
2140            }
2141        };
2142        _proto.dispose = function dispose() {
2143            $.removeData(this._element, DATA_KEY);
2144            $(window, document, this._element, this._backdrop).off(EVENT_KEY);
2145            this._config = null;
2146            this._element = null;
2147            this._dialog = null;
2148            this._backdrop = null;
2149            this._isShown = null;
2150            this._isBodyOverflowing = null;
2151            this._ignoreBackdropClick = null;
2152            this._scrollbarWidth = null;
2153        };
2154        _proto.handleUpdate = function handleUpdate() {
2155            this._adjustDialog();
2156        };
2157        _proto._getConfig = function _getConfig(config) {
2158            config = _extends({}, Default, config);
2159            Util.typeCheckConfig(NAME, config, DefaultType);
2160            return config;
2161        };
2162        _proto._showElement = function _showElement(relatedTarget) {
2163            var _this3 = this;
2164            var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
2165            if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2166                document.body.appendChild(this._element);
2167            }
2168            this._element.style.display = "block";
2169            this._element.removeAttribute("aria-hidden");
2170            this._element.scrollTop = 0;
2171            if (transition) {
2172                Util.reflow(this._element);
2173            }
2174            $(this._element).addClass(ClassName.SHOW);
2175            if (this._config.focus) {
2176                this._enforceFocus();
2177            }
2178            var shownEvent = $.Event(Event.SHOWN, {
2179                relatedTarget: relatedTarget
2180            });
2181            var transitionComplete = function transitionComplete() {
2182                if (_this3._config.focus) {
2183                    _this3._element.focus();
2184                }
2185                _this3._isTransitioning = false;
2186                $(_this3._element).trigger(shownEvent);
2187            };
2188            if (transition) {
2189                $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
2190            } else {
2191                transitionComplete();
2192            }
2193        };
2194        _proto._enforceFocus = function _enforceFocus() {
2195            var _this4 = this;
2196            $(document).off(Event.FOCUSIN).on(Event.FOCUSIN, function(event) {
2197                if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2198                    _this4._element.focus();
2199                }
2200            });
2201        };
2202        _proto._setEscapeEvent = function _setEscapeEvent() {
2203            var _this5 = this;
2204            if (this._isShown && this._config.keyboard) {
2205                $(this._element).on(Event.KEYDOWN_DISMISS, function(event) {
2206                    if (event.which === ESCAPE_KEYCODE) {
2207                        event.preventDefault();
2208                        _this5.hide();
2209                    }
2210                });
2211            } else if (!this._isShown) {
2212                $(this._element).off(Event.KEYDOWN_DISMISS);
2213            }
2214        };
2215        _proto._setResizeEvent = function _setResizeEvent() {
2216            var _this6 = this;
2217            if (this._isShown) {
2218                $(window).on(Event.RESIZE, function(event) {
2219                    return _this6.handleUpdate(event);
2220                });
2221            } else {
2222                $(window).off(Event.RESIZE);
2223            }
2224        };
2225        _proto._hideModal = function _hideModal() {
2226            var _this7 = this;
2227            this._element.style.display = "none";
2228            this._element.setAttribute("aria-hidden", true);
2229            this._isTransitioning = false;
2230            this._showBackdrop(function() {
2231                $(document.body).removeClass(ClassName.OPEN);
2232                _this7._resetAdjustments();
2233                _this7._resetScrollbar();
2234                $(_this7._element).trigger(Event.HIDDEN);
2235            });
2236        };
2237        _proto._removeBackdrop = function _removeBackdrop() {
2238            if (this._backdrop) {
2239                $(this._backdrop).remove();
2240                this._backdrop = null;
2241            }
2242        };
2243        _proto._showBackdrop = function _showBackdrop(callback) {
2244            var _this8 = this;
2245            var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : "";
2246            if (this._isShown && this._config.backdrop) {
2247                var doAnimate = Util.supportsTransitionEnd() && animate;
2248                this._backdrop = document.createElement("div");
2249                this._backdrop.className = ClassName.BACKDROP;
2250                if (animate) {
2251                    $(this._backdrop).addClass(animate);
2252                }
2253                $(this._backdrop).appendTo(document.body);
2254                $(this._element).on(Event.CLICK_DISMISS, function(event) {
2255                    if (_this8._ignoreBackdropClick) {
2256                        _this8._ignoreBackdropClick = false;
2257                        return;
2258                    }
2259                    if (event.target !== event.currentTarget) {
2260                        return;
2261                    }
2262                    if (_this8._config.backdrop === "static") {
2263                        _this8._element.focus();
2264                    } else {
2265                        _this8.hide();
2266                    }
2267                });
2268                if (doAnimate) {
2269                    Util.reflow(this._backdrop);
2270                }
2271                $(this._backdrop).addClass(ClassName.SHOW);
2272                if (!callback) {
2273                    return;
2274                }
2275                if (!doAnimate) {
2276                    callback();
2277                    return;
2278                }
2279                $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2280            } else if (!this._isShown && this._backdrop) {
2281                $(this._backdrop).removeClass(ClassName.SHOW);
2282                var callbackRemove = function callbackRemove() {
2283                    _this8._removeBackdrop();
2284                    if (callback) {
2285                        callback();
2286                    }
2287                };
2288                if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
2289                    $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2290                } else {
2291                    callbackRemove();
2292                }
2293            } else if (callback) {
2294                callback();
2295            }
2296        };
2297        _proto._adjustDialog = function _adjustDialog() {
2298            var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2299            if (!this._isBodyOverflowing && isModalOverflowing) {
2300                this._element.style.paddingLeft = this._scrollbarWidth + "px";
2301            }
2302            if (this._isBodyOverflowing && !isModalOverflowing) {
2303                this._element.style.paddingRight = this._scrollbarWidth + "px";
2304            }
2305        };
2306        _proto._resetAdjustments = function _resetAdjustments() {
2307            this._element.style.paddingLeft = "";
2308            this._element.style.paddingRight = "";
2309        };
2310        _proto._checkScrollbar = function _checkScrollbar() {
2311            var rect = document.body.getBoundingClientRect();
2312            this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2313            this._scrollbarWidth = this._getScrollbarWidth();
2314        };
2315        _proto._setScrollbar = function _setScrollbar() {
2316            var _this9 = this;
2317            if (this._isBodyOverflowing) {
2318                $(Selector.FIXED_CONTENT).each(function(index, element) {
2319                    var actualPadding = $(element)[0].style.paddingRight;
2320                    var calculatedPadding = $(element).css("padding-right");
2321                    $(element).data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2322                });
2323                $(Selector.STICKY_CONTENT).each(function(index, element) {
2324                    var actualMargin = $(element)[0].style.marginRight;
2325                    var calculatedMargin = $(element).css("margin-right");
2326                    $(element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2327                });
2328                $(Selector.NAVBAR_TOGGLER).each(function(index, element) {
2329                    var actualMargin = $(element)[0].style.marginRight;
2330                    var calculatedMargin = $(element).css("margin-right");
2331                    $(element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
2332                });
2333                var actualPadding = document.body.style.paddingRight;
2334                var calculatedPadding = $("body").css("padding-right");
2335                $("body").data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2336            }
2337        };
2338        _proto._resetScrollbar = function _resetScrollbar() {
2339            $(Selector.FIXED_CONTENT).each(function(index, element) {
2340                var padding = $(element).data("padding-right");
2341                if (typeof padding !== "undefined") {
2342                    $(element).css("padding-right", padding).removeData("padding-right");
2343                }
2344            });
2345            $(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function(index, element) {
2346                var margin = $(element).data("margin-right");
2347                if (typeof margin !== "undefined") {
2348                    $(element).css("margin-right", margin).removeData("margin-right");
2349                }
2350            });
2351            var padding = $("body").data("padding-right");
2352            if (typeof padding !== "undefined") {
2353                $("body").css("padding-right", padding).removeData("padding-right");
2354            }
2355        };
2356        _proto._getScrollbarWidth = function _getScrollbarWidth() {
2357            var scrollDiv = document.createElement("div");
2358            scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
2359            document.body.appendChild(scrollDiv);
2360            var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2361            document.body.removeChild(scrollDiv);
2362            return scrollbarWidth;
2363        };
2364        Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2365            return this.each(function() {
2366                var data = $(this).data(DATA_KEY);
2367                var _config = _extends({}, Modal.Default, $(this).data(), typeof config === "object" && config);
2368                if (!data) {
2369                    data = new Modal(this, _config);
2370                    $(this).data(DATA_KEY, data);
2371                }
2372                if (typeof config === "string") {
2373                    if (typeof data[config] === "undefined") {
2374                        throw new TypeError('No method named "' + config + '"');
2375                    }
2376                    data[config](relatedTarget);
2377                } else if (_config.show) {
2378                    data.show(relatedTarget);
2379                }
2380            });
2381        };
2382        _createClass(Modal, null, [ {
2383            key: "VERSION",
2384            get: function get() {
2385                return VERSION;
2386            }
2387        }, {
2388            key: "Default",
2389            get: function get() {
2390                return Default;
2391            }
2392        } ]);
2393        return Modal;
2394    }();
2395    $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) {
2396        var _this10 = this;
2397        var target;
2398        var selector = Util.getSelectorFromElement(this);
2399        if (selector) {
2400            target = $(selector)[0];
2401        }
2402        var config = $(target).data(DATA_KEY) ? "toggle" : _extends({}, $(target).data(), $(this).data());
2403        if (this.tagName === "A" || this.tagName === "AREA") {
2404            event.preventDefault();
2405        }
2406        var $target = $(target).one(Event.SHOW, function(showEvent) {
2407            if (showEvent.isDefaultPrevented()) {
2408                return;
2409            }
2410            $target.one(Event.HIDDEN, function() {
2411                if ($(_this10).is(":visible")) {
2412                    _this10.focus();
2413                }
2414            });
2415        });
2416        Modal._jQueryInterface.call($(target), config, this);
2417    });
2418    $.fn[NAME] = Modal._jQueryInterface;
2419    $.fn[NAME].Constructor = Modal;
2420    $.fn[NAME].noConflict = function() {
2421        $.fn[NAME] = JQUERY_NO_CONFLICT;
2422        return Modal._jQueryInterface;
2423    };
2424    return Modal;
2425}($);
2426
2427function _extends() {
2428    _extends = Object.assign || function(target) {
2429        for (var i = 1; i < arguments.length; i++) {
2430            var source = arguments[i];
2431            for (var key in source) {
2432                if (Object.prototype.hasOwnProperty.call(source, key)) {
2433                    target[key] = source[key];
2434                }
2435            }
2436        }
2437        return target;
2438    };
2439    return _extends.apply(this, arguments);
2440}
2441
2442function _defineProperties(target, props) {
2443    for (var i = 0; i < props.length; i++) {
2444        var descriptor = props[i];
2445        descriptor.enumerable = descriptor.enumerable || false;
2446        descriptor.configurable = true;
2447        if ("value" in descriptor) descriptor.writable = true;
2448        Object.defineProperty(target, descriptor.key, descriptor);
2449    }
2450}
2451
2452function _createClass(Constructor, protoProps, staticProps) {
2453    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
2454    if (staticProps) _defineProperties(Constructor, staticProps);
2455    return Constructor;
2456}
2457
2458var Dropdown = function($) {
2459    var NAME = "dropdown";
2460    var VERSION = "4.0.0";
2461    var DATA_KEY = "bs.dropdown";
2462    var EVENT_KEY = "." + DATA_KEY;
2463    var DATA_API_KEY = ".data-api";
2464    var JQUERY_NO_CONFLICT = $.fn[NAME];
2465    var ESCAPE_KEYCODE = 27;
2466    var SPACE_KEYCODE = 32;
2467    var TAB_KEYCODE = 9;
2468    var ARROW_UP_KEYCODE = 38;
2469    var ARROW_DOWN_KEYCODE = 40;
2470    var RIGHT_MOUSE_BUTTON_WHICH = 3;
2471    var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
2472    var Event = {
2473        HIDE: "hide" + EVENT_KEY,
2474        HIDDEN: "hidden" + EVENT_KEY,
2475        SHOW: "show" + EVENT_KEY,
2476        SHOWN: "shown" + EVENT_KEY,
2477        CLICK: "click" + EVENT_KEY,
2478        CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
2479        KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
2480        KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
2481    };
2482    var ClassName = {
2483        DISABLED: "disabled",
2484        SHOW: "show",
2485        DROPUP: "dropup",
2486        DROPRIGHT: "dropright",
2487        DROPLEFT: "dropleft",
2488        MENURIGHT: "dropdown-menu-right",
2489        MENULEFT: "dropdown-menu-left",
2490        POSITION_STATIC: "position-static"
2491    };
2492    var Selector = {
2493        DATA_TOGGLE: '[data-toggle="dropdown"]',
2494        FORM_CHILD: ".dropdown form",
2495        MENU: ".dropdown-menu",
2496        NAVBAR_NAV: ".navbar-nav",
2497        VISIBLE_ITEMS: ".dropdown-menu .dropdown-item:not(.disabled)"
2498    };
2499    var AttachmentMap = {
2500        TOP: "top-start",
2501        TOPEND: "top-end",
2502        BOTTOM: "bottom-start",
2503        BOTTOMEND: "bottom-end",
2504        RIGHT: "right-start",
2505        RIGHTEND: "right-end",
2506        LEFT: "left-start",
2507        LEFTEND: "left-end"
2508    };
2509    var Default = {
2510        offset: 0,
2511        flip: true,
2512        boundary: "scrollParent"
2513    };
2514    var DefaultType = {
2515        offset: "(number|string|function)",
2516        flip: "boolean",
2517        boundary: "(string|element)"
2518    };
2519    var Dropdown = function() {
2520        function Dropdown(element, config) {
2521            this._element = element;
2522            this._popper = null;
2523            this._config = this._getConfig(config);
2524            this._menu = this._getMenuElement();
2525            this._inNavbar = this._detectNavbar();
2526            this._addEventListeners();
2527        }
2528        var _proto = Dropdown.prototype;
2529        _proto.toggle = function toggle() {
2530            if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
2531                return;
2532            }
2533            var parent = Dropdown._getParentFromElement(this._element);
2534            var isActive = $(this._menu).hasClass(ClassName.SHOW);
2535            Dropdown._clearMenus();
2536            if (isActive) {
2537                return;
2538            }
2539            var relatedTarget = {
2540                relatedTarget: this._element
2541            };
2542            var showEvent = $.Event(Event.SHOW, relatedTarget);
2543            $(parent).trigger(showEvent);
2544            if (showEvent.isDefaultPrevented()) {
2545                return;
2546            }
2547            if (!this._inNavbar) {
2548                if (typeof Popper === "undefined") {
2549                    throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");
2550                }
2551                var element = this._element;
2552                if ($(parent).hasClass(ClassName.DROPUP)) {
2553                    if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {
2554                        element = parent;
2555                    }
2556                }
2557                if (this._config.boundary !== "scrollParent") {
2558                    $(parent).addClass(ClassName.POSITION_STATIC);
2559                }
2560                this._popper = new Popper(element, this._menu, this._getPopperConfig());
2561            }
2562            if ("ontouchstart" in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) {
2563                $("body").children().on("mouseover", null, $.noop);
2564            }
2565            this._element.focus();
2566            this._element.setAttribute("aria-expanded", true);
2567            $(this._menu).toggleClass(ClassName.SHOW);
2568            $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
2569        };
2570        _proto.dispose = function dispose() {
2571            $.removeData(this._element, DATA_KEY);
2572            $(this._element).off(EVENT_KEY);
2573            this._element = null;
2574            this._menu = null;
2575            if (this._popper !== null) {
2576                this._popper.destroy();
2577                this._popper = null;
2578            }
2579        };
2580        _proto.update = function update() {
2581            this._inNavbar = this._detectNavbar();
2582            if (this._popper !== null) {
2583                this._popper.scheduleUpdate();
2584            }
2585        };
2586        _proto._addEventListeners = function _addEventListeners() {
2587            var _this = this;
2588            $(this._element).on(Event.CLICK, function(event) {
2589                event.preventDefault();
2590                event.stopPropagation();
2591                _this.toggle();
2592            });
2593        };
2594        _proto._getConfig = function _getConfig(config) {
2595            config = _extends({}, this.constructor.Default, $(this._element).data(), config);
2596            Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
2597            return config;
2598        };
2599        _proto._getMenuElement = function _getMenuElement() {
2600            if (!this._menu) {
2601                var parent = Dropdown._getParentFromElement(this._element);
2602                this._menu = $(parent).find(Selector.MENU)[0];
2603            }
2604            return this._menu;
2605        };
2606        _proto._getPlacement = function _getPlacement() {
2607            var $parentDropdown = $(this._element).parent();
2608            var placement = AttachmentMap.BOTTOM;
2609            if ($parentDropdown.hasClass(ClassName.DROPUP)) {
2610                placement = AttachmentMap.TOP;
2611                if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
2612                    placement = AttachmentMap.TOPEND;
2613                }
2614            } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
2615                placement = AttachmentMap.RIGHT;
2616            } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
2617                placement = AttachmentMap.LEFT;
2618            } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
2619                placement = AttachmentMap.BOTTOMEND;
2620            }
2621            return placement;
2622        };
2623        _proto._detectNavbar = function _detectNavbar() {
2624            return $(this._element).closest(".navbar").length > 0;
2625        };
2626        _proto._getPopperConfig = function _getPopperConfig() {
2627            var _this2 = this;
2628            var offsetConf = {};
2629            if (typeof this._config.offset === "function") {
2630                offsetConf.fn = function(data) {
2631                    data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
2632                    return data;
2633                };
2634            } else {
2635                offsetConf.offset = this._config.offset;
2636            }
2637            var popperConfig = {
2638                placement: this._getPlacement(),
2639                modifiers: {
2640                    offset: offsetConf,
2641                    flip: {
2642                        enabled: this._config.flip
2643                    },
2644                    preventOverflow: {
2645                        boundariesElement: this._config.boundary
2646                    }
2647                }
2648            };
2649            return popperConfig;
2650        };
2651        Dropdown._jQueryInterface = function _jQueryInterface(config) {
2652            return this.each(function() {
2653                var data = $(this).data(DATA_KEY);
2654                var _config = typeof config === "object" ? config : null;
2655                if (!data) {
2656                    data = new Dropdown(this, _config);
2657                    $(this).data(DATA_KEY, data);
2658                }
2659                if (typeof config === "string") {
2660                    if (typeof data[config] === "undefined") {
2661                        throw new TypeError('No method named "' + config + '"');
2662                    }
2663                    data[config]();
2664                }
2665            });
2666        };
2667        Dropdown._clearMenus = function _clearMenus(event) {
2668            if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === "keyup" && event.which !== TAB_KEYCODE)) {
2669                return;
2670            }
2671            var toggles = $.makeArray($(Selector.DATA_TOGGLE));
2672            for (var i = 0; i < toggles.length; i++) {
2673                var parent = Dropdown._getParentFromElement(toggles[i]);
2674                var context = $(toggles[i]).data(DATA_KEY);
2675                var relatedTarget = {
2676                    relatedTarget: toggles[i]
2677                };
2678                if (!context) {
2679                    continue;
2680                }
2681                var dropdownMenu = context._menu;
2682                if (!$(parent).hasClass(ClassName.SHOW)) {
2683                    continue;
2684                }
2685                if (event && (event.type === "click" && /input|textarea/i.test(event.target.tagName) || event.type === "keyup" && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
2686                    continue;
2687                }
2688                var hideEvent = $.Event(Event.HIDE, relatedTarget);
2689                $(parent).trigger(hideEvent);
2690                if (hideEvent.isDefaultPrevented()) {
2691                    continue;
2692                }
2693                if ("ontouchstart" in document.documentElement) {
2694                    $("body").children().off("mouseover", null, $.noop);
2695                }
2696                toggles[i].setAttribute("aria-expanded", "false");
2697                $(dropdownMenu).removeClass(ClassName.SHOW);
2698                $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
2699            }
2700        };
2701        Dropdown._getParentFromElement = function _getParentFromElement(element) {
2702            var parent;
2703            var selector = Util.getSelectorFromElement(element);
2704            if (selector) {
2705                parent = $(selector)[0];
2706            }
2707            return parent || element.parentNode;
2708        };
2709        Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
2710            if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
2711                return;
2712            }
2713            event.preventDefault();
2714            event.stopPropagation();
2715            if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
2716                return;
2717            }
2718            var parent = Dropdown._getParentFromElement(this);
2719            var isActive = $(parent).hasClass(ClassName.SHOW);
2720            if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
2721                if (event.which === ESCAPE_KEYCODE) {
2722                    var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
2723                    $(toggle).trigger("focus");
2724                }
2725                $(this).trigger("click");
2726                return;
2727            }
2728            var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
2729            if (items.length === 0) {
2730                return;
2731            }
2732            var index = items.indexOf(event.target);
2733            if (event.which === ARROW_UP_KEYCODE && index > 0) {
2734                index--;
2735            }
2736            if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
2737                index++;
2738            }
2739            if (index < 0) {
2740                index = 0;
2741            }
2742            items[index].focus();
2743        };
2744        _createClass(Dropdown, null, [ {
2745            key: "VERSION",
2746            get: function get() {
2747                return VERSION;
2748            }
2749        }, {
2750            key: "Default",
2751            get: function get() {
2752                return Default;
2753            }
2754        }, {
2755            key: "DefaultType",
2756            get: function get() {
2757                return DefaultType;
2758            }
2759        } ]);
2760        return Dropdown;
2761    }();
2762    $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function(event) {
2763        event.preventDefault();
2764        event.stopPropagation();
2765        Dropdown._jQueryInterface.call($(this), "toggle");
2766    }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function(e) {
2767        e.stopPropagation();
2768    });
2769    $.fn[NAME] = Dropdown._jQueryInterface;
2770    $.fn[NAME].Constructor = Dropdown;
2771    $.fn[NAME].noConflict = function() {
2772        $.fn[NAME] = JQUERY_NO_CONFLICT;
2773        return Dropdown._jQueryInterface;
2774    };
2775    return Dropdown;
2776}($, Popper);

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.