Code Duplication    Length = 3888-3888 lines in 2 locations

public/js/utils/bootstrap.js 1 location

@@ 6-3893 (lines=3888) @@
3
  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
  */
6
(function (global, factory) {
7
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8
	typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9
	(factory((global.bootstrap = {}),global.jQuery,global.Popper));
10
}(this, (function (exports,$,Popper) { 'use strict';
11
12
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
15
function _defineProperties(target, props) {
16
  for (var i = 0; i < props.length; i++) {
17
    var descriptor = props[i];
18
    descriptor.enumerable = descriptor.enumerable || false;
19
    descriptor.configurable = true;
20
    if ("value" in descriptor) descriptor.writable = true;
21
    Object.defineProperty(target, descriptor.key, descriptor);
22
  }
23
}
24
25
function _createClass(Constructor, protoProps, staticProps) {
26
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
  if (staticProps) _defineProperties(Constructor, staticProps);
28
  return Constructor;
29
}
30
31
function _extends() {
32
  _extends = Object.assign || function (target) {
33
    for (var i = 1; i < arguments.length; i++) {
34
      var source = arguments[i];
35
36
      for (var key in source) {
37
        if (Object.prototype.hasOwnProperty.call(source, key)) {
38
          target[key] = source[key];
39
        }
40
      }
41
    }
42
43
    return target;
44
  };
45
46
  return _extends.apply(this, arguments);
47
}
48
49
function _inheritsLoose(subClass, superClass) {
50
  subClass.prototype = Object.create(superClass.prototype);
51
  subClass.prototype.constructor = subClass;
52
  subClass.__proto__ = superClass;
53
}
54
55
/**
56
 * --------------------------------------------------------------------------
57
 * Bootstrap (v4.0.0): util.js
58
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
59
 * --------------------------------------------------------------------------
60
 */
61
62
var Util = function ($$$1) {
63
  /**
64
   * ------------------------------------------------------------------------
65
   * Private TransitionEnd Helpers
66
   * ------------------------------------------------------------------------
67
   */
68
  var transition = false;
69
  var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
70
71
  function toType(obj) {
72
    return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
73
  }
74
75
  function getSpecialTransitionEndEvent() {
76
    return {
77
      bindType: transition.end,
78
      delegateType: transition.end,
79
      handle: function handle(event) {
80
        if ($$$1(event.target).is(this)) {
81
          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
82
        }
83
84
        return undefined; // eslint-disable-line no-undefined
85
      }
86
    };
87
  }
88
89
  function transitionEndTest() {
90
    if (typeof window !== 'undefined' && window.QUnit) {
91
      return false;
92
    }
93
94
    return {
95
      end: 'transitionend'
96
    };
97
  }
98
99
  function transitionEndEmulator(duration) {
100
    var _this = this;
101
102
    var called = false;
103
    $$$1(this).one(Util.TRANSITION_END, function () {
104
      called = true;
105
    });
106
    setTimeout(function () {
107
      if (!called) {
108
        Util.triggerTransitionEnd(_this);
109
      }
110
    }, duration);
111
    return this;
112
  }
113
114
  function setTransitionEndSupport() {
115
    transition = transitionEndTest();
116
    $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
117
118
    if (Util.supportsTransitionEnd()) {
119
      $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
120
    }
121
  }
122
123
  function escapeId(selector) {
124
    // We escape IDs in case of special selectors (selector = '#myId:something')
125
    // $.escapeSelector does not exist in jQuery < 3
126
    selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
127
    return selector;
128
  }
129
  /**
130
   * --------------------------------------------------------------------------
131
   * Public Util Api
132
   * --------------------------------------------------------------------------
133
   */
134
135
136
  var Util = {
137
    TRANSITION_END: 'bsTransitionEnd',
138
    getUID: function getUID(prefix) {
139
      do {
140
        // eslint-disable-next-line no-bitwise
141
        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
142
      } while (document.getElementById(prefix));
143
144
      return prefix;
145
    },
146
    getSelectorFromElement: function getSelectorFromElement(element) {
147
      var selector = element.getAttribute('data-target');
148
149
      if (!selector || selector === '#') {
150
        selector = element.getAttribute('href') || '';
151
      } // If it's an ID
152
153
154
      if (selector.charAt(0) === '#') {
155
        selector = escapeId(selector);
156
      }
157
158
      try {
159
        var $selector = $$$1(document).find(selector);
160
        return $selector.length > 0 ? selector : null;
161
      } catch (err) {
162
        return null;
163
      }
164
    },
165
    reflow: function reflow(element) {
166
      return element.offsetHeight;
167
    },
168
    triggerTransitionEnd: function triggerTransitionEnd(element) {
169
      $$$1(element).trigger(transition.end);
170
    },
171
    supportsTransitionEnd: function supportsTransitionEnd() {
172
      return Boolean(transition);
173
    },
174
    isElement: function isElement(obj) {
175
      return (obj[0] || obj).nodeType;
176
    },
177
    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
178
      for (var property in configTypes) {
179
        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
180
          var expectedTypes = configTypes[property];
181
          var value = config[property];
182
          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
183
184
          if (!new RegExp(expectedTypes).test(valueType)) {
185
            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
186
          }
187
        }
188
      }
189
    }
190
  };
191
  setTransitionEndSupport();
192
  return Util;
193
}($);
194
195
/**
196
 * --------------------------------------------------------------------------
197
 * Bootstrap (v4.0.0): alert.js
198
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
199
 * --------------------------------------------------------------------------
200
 */
201
202
var Alert = function ($$$1) {
203
  /**
204
   * ------------------------------------------------------------------------
205
   * Constants
206
   * ------------------------------------------------------------------------
207
   */
208
  var NAME = 'alert';
209
  var VERSION = '4.0.0';
210
  var DATA_KEY = 'bs.alert';
211
  var EVENT_KEY = "." + DATA_KEY;
212
  var DATA_API_KEY = '.data-api';
213
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
214
  var TRANSITION_DURATION = 150;
215
  var Selector = {
216
    DISMISS: '[data-dismiss="alert"]'
217
  };
218
  var Event = {
219
    CLOSE: "close" + EVENT_KEY,
220
    CLOSED: "closed" + EVENT_KEY,
221
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
222
  };
223
  var ClassName = {
224
    ALERT: 'alert',
225
    FADE: 'fade',
226
    SHOW: 'show'
227
    /**
228
     * ------------------------------------------------------------------------
229
     * Class Definition
230
     * ------------------------------------------------------------------------
231
     */
232
233
  };
234
235
  var Alert =
236
  /*#__PURE__*/
237
  function () {
238
    function Alert(element) {
239
      this._element = element;
240
    } // Getters
241
242
243
    var _proto = Alert.prototype;
244
245
    // Public
246
    _proto.close = function close(element) {
247
      element = element || this._element;
248
249
      var rootElement = this._getRootElement(element);
250
251
      var customEvent = this._triggerCloseEvent(rootElement);
252
253
      if (customEvent.isDefaultPrevented()) {
254
        return;
255
      }
256
257
      this._removeElement(rootElement);
258
    };
259
260
    _proto.dispose = function dispose() {
261
      $$$1.removeData(this._element, DATA_KEY);
262
      this._element = null;
263
    }; // Private
264
265
266
    _proto._getRootElement = function _getRootElement(element) {
267
      var selector = Util.getSelectorFromElement(element);
268
      var parent = false;
269
270
      if (selector) {
271
        parent = $$$1(selector)[0];
272
      }
273
274
      if (!parent) {
275
        parent = $$$1(element).closest("." + ClassName.ALERT)[0];
276
      }
277
278
      return parent;
279
    };
280
281
    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
282
      var closeEvent = $$$1.Event(Event.CLOSE);
283
      $$$1(element).trigger(closeEvent);
284
      return closeEvent;
285
    };
286
287
    _proto._removeElement = function _removeElement(element) {
288
      var _this = this;
289
290
      $$$1(element).removeClass(ClassName.SHOW);
291
292
      if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) {
293
        this._destroyElement(element);
294
295
        return;
296
      }
297
298
      $$$1(element).one(Util.TRANSITION_END, function (event) {
299
        return _this._destroyElement(element, event);
300
      }).emulateTransitionEnd(TRANSITION_DURATION);
301
    };
302
303
    _proto._destroyElement = function _destroyElement(element) {
304
      $$$1(element).detach().trigger(Event.CLOSED).remove();
305
    }; // Static
306
307
308
    Alert._jQueryInterface = function _jQueryInterface(config) {
309
      return this.each(function () {
310
        var $element = $$$1(this);
311
        var data = $element.data(DATA_KEY);
312
313
        if (!data) {
314
          data = new Alert(this);
315
          $element.data(DATA_KEY, data);
316
        }
317
318
        if (config === 'close') {
319
          data[config](this);
320
        }
321
      });
322
    };
323
324
    Alert._handleDismiss = function _handleDismiss(alertInstance) {
325
      return function (event) {
326
        if (event) {
327
          event.preventDefault();
328
        }
329
330
        alertInstance.close(this);
331
      };
332
    };
333
334
    _createClass(Alert, null, [{
335
      key: "VERSION",
336
      get: function get() {
337
        return VERSION;
338
      }
339
    }]);
340
    return Alert;
341
  }();
342
  /**
343
   * ------------------------------------------------------------------------
344
   * Data Api implementation
345
   * ------------------------------------------------------------------------
346
   */
347
348
349
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
350
  /**
351
   * ------------------------------------------------------------------------
352
   * jQuery
353
   * ------------------------------------------------------------------------
354
   */
355
356
  $$$1.fn[NAME] = Alert._jQueryInterface;
357
  $$$1.fn[NAME].Constructor = Alert;
358
359
  $$$1.fn[NAME].noConflict = function () {
360
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
361
    return Alert._jQueryInterface;
362
  };
363
364
  return Alert;
365
}($);
366
367
/**
368
 * --------------------------------------------------------------------------
369
 * Bootstrap (v4.0.0): button.js
370
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
371
 * --------------------------------------------------------------------------
372
 */
373
374
var Button = function ($$$1) {
375
  /**
376
   * ------------------------------------------------------------------------
377
   * Constants
378
   * ------------------------------------------------------------------------
379
   */
380
  var NAME = 'button';
381
  var VERSION = '4.0.0';
382
  var DATA_KEY = 'bs.button';
383
  var EVENT_KEY = "." + DATA_KEY;
384
  var DATA_API_KEY = '.data-api';
385
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
386
  var ClassName = {
387
    ACTIVE: 'active',
388
    BUTTON: 'btn',
389
    FOCUS: 'focus'
390
  };
391
  var Selector = {
392
    DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
393
    DATA_TOGGLE: '[data-toggle="buttons"]',
394
    INPUT: 'input',
395
    ACTIVE: '.active',
396
    BUTTON: '.btn'
397
  };
398
  var Event = {
399
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
400
    FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
401
    /**
402
     * ------------------------------------------------------------------------
403
     * Class Definition
404
     * ------------------------------------------------------------------------
405
     */
406
407
  };
408
409
  var Button =
410
  /*#__PURE__*/
411
  function () {
412
    function Button(element) {
413
      this._element = element;
414
    } // Getters
415
416
417
    var _proto = Button.prototype;
418
419
    // Public
420
    _proto.toggle = function toggle() {
421
      var triggerChangeEvent = true;
422
      var addAriaPressed = true;
423
      var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
424
425
      if (rootElement) {
426
        var input = $$$1(this._element).find(Selector.INPUT)[0];
427
428
        if (input) {
429
          if (input.type === 'radio') {
430
            if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
431
              triggerChangeEvent = false;
432
            } else {
433
              var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
434
435
              if (activeElement) {
436
                $$$1(activeElement).removeClass(ClassName.ACTIVE);
437
              }
438
            }
439
          }
440
441
          if (triggerChangeEvent) {
442
            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
443
              return;
444
            }
445
446
            input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
447
            $$$1(input).trigger('change');
448
          }
449
450
          input.focus();
451
          addAriaPressed = false;
452
        }
453
      }
454
455
      if (addAriaPressed) {
456
        this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
457
      }
458
459
      if (triggerChangeEvent) {
460
        $$$1(this._element).toggleClass(ClassName.ACTIVE);
461
      }
462
    };
463
464
    _proto.dispose = function dispose() {
465
      $$$1.removeData(this._element, DATA_KEY);
466
      this._element = null;
467
    }; // Static
468
469
470
    Button._jQueryInterface = function _jQueryInterface(config) {
471
      return this.each(function () {
472
        var data = $$$1(this).data(DATA_KEY);
473
474
        if (!data) {
475
          data = new Button(this);
476
          $$$1(this).data(DATA_KEY, data);
477
        }
478
479
        if (config === 'toggle') {
480
          data[config]();
481
        }
482
      });
483
    };
484
485
    _createClass(Button, null, [{
486
      key: "VERSION",
487
      get: function get() {
488
        return VERSION;
489
      }
490
    }]);
491
    return Button;
492
  }();
493
  /**
494
   * ------------------------------------------------------------------------
495
   * Data Api implementation
496
   * ------------------------------------------------------------------------
497
   */
498
499
500
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
501
    event.preventDefault();
502
    var button = event.target;
503
504
    if (!$$$1(button).hasClass(ClassName.BUTTON)) {
505
      button = $$$1(button).closest(Selector.BUTTON);
506
    }
507
508
    Button._jQueryInterface.call($$$1(button), 'toggle');
509
  }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
510
    var button = $$$1(event.target).closest(Selector.BUTTON)[0];
511
    $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
512
  });
513
  /**
514
   * ------------------------------------------------------------------------
515
   * jQuery
516
   * ------------------------------------------------------------------------
517
   */
518
519
  $$$1.fn[NAME] = Button._jQueryInterface;
520
  $$$1.fn[NAME].Constructor = Button;
521
522
  $$$1.fn[NAME].noConflict = function () {
523
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
524
    return Button._jQueryInterface;
525
  };
526
527
  return Button;
528
}($);
529
530
/**
531
 * --------------------------------------------------------------------------
532
 * Bootstrap (v4.0.0): carousel.js
533
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
534
 * --------------------------------------------------------------------------
535
 */
536
537
var Carousel = function ($$$1) {
538
  /**
539
   * ------------------------------------------------------------------------
540
   * Constants
541
   * ------------------------------------------------------------------------
542
   */
543
  var NAME = 'carousel';
544
  var VERSION = '4.0.0';
545
  var DATA_KEY = 'bs.carousel';
546
  var EVENT_KEY = "." + DATA_KEY;
547
  var DATA_API_KEY = '.data-api';
548
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
549
  var TRANSITION_DURATION = 600;
550
  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
551
552
  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
553
554
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
555
556
  var Default = {
557
    interval: 5000,
558
    keyboard: true,
559
    slide: false,
560
    pause: 'hover',
561
    wrap: true
562
  };
563
  var DefaultType = {
564
    interval: '(number|boolean)',
565
    keyboard: 'boolean',
566
    slide: '(boolean|string)',
567
    pause: '(string|boolean)',
568
    wrap: 'boolean'
569
  };
570
  var Direction = {
571
    NEXT: 'next',
572
    PREV: 'prev',
573
    LEFT: 'left',
574
    RIGHT: 'right'
575
  };
576
  var Event = {
577
    SLIDE: "slide" + EVENT_KEY,
578
    SLID: "slid" + EVENT_KEY,
579
    KEYDOWN: "keydown" + EVENT_KEY,
580
    MOUSEENTER: "mouseenter" + EVENT_KEY,
581
    MOUSELEAVE: "mouseleave" + EVENT_KEY,
582
    TOUCHEND: "touchend" + EVENT_KEY,
583
    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
584
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
585
  };
586
  var ClassName = {
587
    CAROUSEL: 'carousel',
588
    ACTIVE: 'active',
589
    SLIDE: 'slide',
590
    RIGHT: 'carousel-item-right',
591
    LEFT: 'carousel-item-left',
592
    NEXT: 'carousel-item-next',
593
    PREV: 'carousel-item-prev',
594
    ITEM: 'carousel-item'
595
  };
596
  var Selector = {
597
    ACTIVE: '.active',
598
    ACTIVE_ITEM: '.active.carousel-item',
599
    ITEM: '.carousel-item',
600
    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
601
    INDICATORS: '.carousel-indicators',
602
    DATA_SLIDE: '[data-slide], [data-slide-to]',
603
    DATA_RIDE: '[data-ride="carousel"]'
604
    /**
605
     * ------------------------------------------------------------------------
606
     * Class Definition
607
     * ------------------------------------------------------------------------
608
     */
609
610
  };
611
612
  var Carousel =
613
  /*#__PURE__*/
614
  function () {
615
    function Carousel(element, config) {
616
      this._items = null;
617
      this._interval = null;
618
      this._activeElement = null;
619
      this._isPaused = false;
620
      this._isSliding = false;
621
      this.touchTimeout = null;
622
      this._config = this._getConfig(config);
623
      this._element = $$$1(element)[0];
624
      this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
625
626
      this._addEventListeners();
627
    } // Getters
628
629
630
    var _proto = Carousel.prototype;
631
632
    // Public
633
    _proto.next = function next() {
634
      if (!this._isSliding) {
635
        this._slide(Direction.NEXT);
636
      }
637
    };
638
639
    _proto.nextWhenVisible = function nextWhenVisible() {
640
      // Don't call next when the page isn't visible
641
      // or the carousel or its parent isn't visible
642
      if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
643
        this.next();
644
      }
645
    };
646
647
    _proto.prev = function prev() {
648
      if (!this._isSliding) {
649
        this._slide(Direction.PREV);
650
      }
651
    };
652
653
    _proto.pause = function pause(event) {
654
      if (!event) {
655
        this._isPaused = true;
656
      }
657
658
      if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
659
        Util.triggerTransitionEnd(this._element);
660
        this.cycle(true);
661
      }
662
663
      clearInterval(this._interval);
664
      this._interval = null;
665
    };
666
667
    _proto.cycle = function cycle(event) {
668
      if (!event) {
669
        this._isPaused = false;
670
      }
671
672
      if (this._interval) {
673
        clearInterval(this._interval);
674
        this._interval = null;
675
      }
676
677
      if (this._config.interval && !this._isPaused) {
678
        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
679
      }
680
    };
681
682
    _proto.to = function to(index) {
683
      var _this = this;
684
685
      this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
686
687
      var activeIndex = this._getItemIndex(this._activeElement);
688
689
      if (index > this._items.length - 1 || index < 0) {
690
        return;
691
      }
692
693
      if (this._isSliding) {
694
        $$$1(this._element).one(Event.SLID, function () {
695
          return _this.to(index);
696
        });
697
        return;
698
      }
699
700
      if (activeIndex === index) {
701
        this.pause();
702
        this.cycle();
703
        return;
704
      }
705
706
      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
707
708
      this._slide(direction, this._items[index]);
709
    };
710
711
    _proto.dispose = function dispose() {
712
      $$$1(this._element).off(EVENT_KEY);
713
      $$$1.removeData(this._element, DATA_KEY);
714
      this._items = null;
715
      this._config = null;
716
      this._element = null;
717
      this._interval = null;
718
      this._isPaused = null;
719
      this._isSliding = null;
720
      this._activeElement = null;
721
      this._indicatorsElement = null;
722
    }; // Private
723
724
725
    _proto._getConfig = function _getConfig(config) {
726
      config = _extends({}, Default, config);
727
      Util.typeCheckConfig(NAME, config, DefaultType);
728
      return config;
729
    };
730
731
    _proto._addEventListeners = function _addEventListeners() {
732
      var _this2 = this;
733
734
      if (this._config.keyboard) {
735
        $$$1(this._element).on(Event.KEYDOWN, function (event) {
736
          return _this2._keydown(event);
737
        });
738
      }
739
740
      if (this._config.pause === 'hover') {
741
        $$$1(this._element).on(Event.MOUSEENTER, function (event) {
742
          return _this2.pause(event);
743
        }).on(Event.MOUSELEAVE, function (event) {
744
          return _this2.cycle(event);
745
        });
746
747
        if ('ontouchstart' in document.documentElement) {
748
          // If it's a touch-enabled device, mouseenter/leave are fired as
749
          // part of the mouse compatibility events on first tap - the carousel
750
          // would stop cycling until user tapped out of it;
751
          // here, we listen for touchend, explicitly pause the carousel
752
          // (as if it's the second time we tap on it, mouseenter compat event
753
          // is NOT fired) and after a timeout (to allow for mouse compatibility
754
          // events to fire) we explicitly restart cycling
755
          $$$1(this._element).on(Event.TOUCHEND, function () {
756
            _this2.pause();
757
758
            if (_this2.touchTimeout) {
759
              clearTimeout(_this2.touchTimeout);
760
            }
761
762
            _this2.touchTimeout = setTimeout(function (event) {
763
              return _this2.cycle(event);
764
            }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
765
          });
766
        }
767
      }
768
    };
769
770
    _proto._keydown = function _keydown(event) {
771
      if (/input|textarea/i.test(event.target.tagName)) {
772
        return;
773
      }
774
775
      switch (event.which) {
776
        case ARROW_LEFT_KEYCODE:
777
          event.preventDefault();
778
          this.prev();
779
          break;
780
781
        case ARROW_RIGHT_KEYCODE:
782
          event.preventDefault();
783
          this.next();
784
          break;
785
786
        default:
787
      }
788
    };
789
790
    _proto._getItemIndex = function _getItemIndex(element) {
791
      this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
792
      return this._items.indexOf(element);
793
    };
794
795
    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
796
      var isNextDirection = direction === Direction.NEXT;
797
      var isPrevDirection = direction === Direction.PREV;
798
799
      var activeIndex = this._getItemIndex(activeElement);
800
801
      var lastItemIndex = this._items.length - 1;
802
      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
803
804
      if (isGoingToWrap && !this._config.wrap) {
805
        return activeElement;
806
      }
807
808
      var delta = direction === Direction.PREV ? -1 : 1;
809
      var itemIndex = (activeIndex + delta) % this._items.length;
810
      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
811
    };
812
813
    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
814
      var targetIndex = this._getItemIndex(relatedTarget);
815
816
      var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
817
818
      var slideEvent = $$$1.Event(Event.SLIDE, {
819
        relatedTarget: relatedTarget,
820
        direction: eventDirectionName,
821
        from: fromIndex,
822
        to: targetIndex
823
      });
824
      $$$1(this._element).trigger(slideEvent);
825
      return slideEvent;
826
    };
827
828
    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
829
      if (this._indicatorsElement) {
830
        $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
831
832
        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
833
834
        if (nextIndicator) {
835
          $$$1(nextIndicator).addClass(ClassName.ACTIVE);
836
        }
837
      }
838
    };
839
840
    _proto._slide = function _slide(direction, element) {
841
      var _this3 = this;
842
843
      var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
844
845
      var activeElementIndex = this._getItemIndex(activeElement);
846
847
      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
848
849
      var nextElementIndex = this._getItemIndex(nextElement);
850
851
      var isCycling = Boolean(this._interval);
852
      var directionalClassName;
853
      var orderClassName;
854
      var eventDirectionName;
855
856
      if (direction === Direction.NEXT) {
857
        directionalClassName = ClassName.LEFT;
858
        orderClassName = ClassName.NEXT;
859
        eventDirectionName = Direction.LEFT;
860
      } else {
861
        directionalClassName = ClassName.RIGHT;
862
        orderClassName = ClassName.PREV;
863
        eventDirectionName = Direction.RIGHT;
864
      }
865
866
      if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
867
        this._isSliding = false;
868
        return;
869
      }
870
871
      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
872
873
      if (slideEvent.isDefaultPrevented()) {
874
        return;
875
      }
876
877
      if (!activeElement || !nextElement) {
878
        // Some weirdness is happening, so we bail
879
        return;
880
      }
881
882
      this._isSliding = true;
883
884
      if (isCycling) {
885
        this.pause();
886
      }
887
888
      this._setActiveIndicatorElement(nextElement);
889
890
      var slidEvent = $$$1.Event(Event.SLID, {
891
        relatedTarget: nextElement,
892
        direction: eventDirectionName,
893
        from: activeElementIndex,
894
        to: nextElementIndex
895
      });
896
897
      if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) {
898
        $$$1(nextElement).addClass(orderClassName);
899
        Util.reflow(nextElement);
900
        $$$1(activeElement).addClass(directionalClassName);
901
        $$$1(nextElement).addClass(directionalClassName);
902
        $$$1(activeElement).one(Util.TRANSITION_END, function () {
903
          $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
904
          $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
905
          _this3._isSliding = false;
906
          setTimeout(function () {
907
            return $$$1(_this3._element).trigger(slidEvent);
908
          }, 0);
909
        }).emulateTransitionEnd(TRANSITION_DURATION);
910
      } else {
911
        $$$1(activeElement).removeClass(ClassName.ACTIVE);
912
        $$$1(nextElement).addClass(ClassName.ACTIVE);
913
        this._isSliding = false;
914
        $$$1(this._element).trigger(slidEvent);
915
      }
916
917
      if (isCycling) {
918
        this.cycle();
919
      }
920
    }; // Static
921
922
923
    Carousel._jQueryInterface = function _jQueryInterface(config) {
924
      return this.each(function () {
925
        var data = $$$1(this).data(DATA_KEY);
926
927
        var _config = _extends({}, Default, $$$1(this).data());
928
929
        if (typeof config === 'object') {
930
          _config = _extends({}, _config, config);
931
        }
932
933
        var action = typeof config === 'string' ? config : _config.slide;
934
935
        if (!data) {
936
          data = new Carousel(this, _config);
937
          $$$1(this).data(DATA_KEY, data);
938
        }
939
940
        if (typeof config === 'number') {
941
          data.to(config);
942
        } else if (typeof action === 'string') {
943
          if (typeof data[action] === 'undefined') {
944
            throw new TypeError("No method named \"" + action + "\"");
945
          }
946
947
          data[action]();
948
        } else if (_config.interval) {
949
          data.pause();
950
          data.cycle();
951
        }
952
      });
953
    };
954
955
    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
956
      var selector = Util.getSelectorFromElement(this);
957
958
      if (!selector) {
959
        return;
960
      }
961
962
      var target = $$$1(selector)[0];
963
964
      if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
965
        return;
966
      }
967
968
      var config = _extends({}, $$$1(target).data(), $$$1(this).data());
969
      var slideIndex = this.getAttribute('data-slide-to');
970
971
      if (slideIndex) {
972
        config.interval = false;
973
      }
974
975
      Carousel._jQueryInterface.call($$$1(target), config);
976
977
      if (slideIndex) {
978
        $$$1(target).data(DATA_KEY).to(slideIndex);
979
      }
980
981
      event.preventDefault();
982
    };
983
984
    _createClass(Carousel, null, [{
985
      key: "VERSION",
986
      get: function get() {
987
        return VERSION;
988
      }
989
    }, {
990
      key: "Default",
991
      get: function get() {
992
        return Default;
993
      }
994
    }]);
995
    return Carousel;
996
  }();
997
  /**
998
   * ------------------------------------------------------------------------
999
   * Data Api implementation
1000
   * ------------------------------------------------------------------------
1001
   */
1002
1003
1004
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
1005
  $$$1(window).on(Event.LOAD_DATA_API, function () {
1006
    $$$1(Selector.DATA_RIDE).each(function () {
1007
      var $carousel = $$$1(this);
1008
1009
      Carousel._jQueryInterface.call($carousel, $carousel.data());
1010
    });
1011
  });
1012
  /**
1013
   * ------------------------------------------------------------------------
1014
   * jQuery
1015
   * ------------------------------------------------------------------------
1016
   */
1017
1018
  $$$1.fn[NAME] = Carousel._jQueryInterface;
1019
  $$$1.fn[NAME].Constructor = Carousel;
1020
1021
  $$$1.fn[NAME].noConflict = function () {
1022
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1023
    return Carousel._jQueryInterface;
1024
  };
1025
1026
  return Carousel;
1027
}($);
1028
1029
/**
1030
 * --------------------------------------------------------------------------
1031
 * Bootstrap (v4.0.0): collapse.js
1032
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1033
 * --------------------------------------------------------------------------
1034
 */
1035
1036
var Collapse = function ($$$1) {
1037
  /**
1038
   * ------------------------------------------------------------------------
1039
   * Constants
1040
   * ------------------------------------------------------------------------
1041
   */
1042
  var NAME = 'collapse';
1043
  var VERSION = '4.0.0';
1044
  var DATA_KEY = 'bs.collapse';
1045
  var EVENT_KEY = "." + DATA_KEY;
1046
  var DATA_API_KEY = '.data-api';
1047
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1048
  var TRANSITION_DURATION = 600;
1049
  var Default = {
1050
    toggle: true,
1051
    parent: ''
1052
  };
1053
  var DefaultType = {
1054
    toggle: 'boolean',
1055
    parent: '(string|element)'
1056
  };
1057
  var Event = {
1058
    SHOW: "show" + EVENT_KEY,
1059
    SHOWN: "shown" + EVENT_KEY,
1060
    HIDE: "hide" + EVENT_KEY,
1061
    HIDDEN: "hidden" + EVENT_KEY,
1062
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1063
  };
1064
  var ClassName = {
1065
    SHOW: 'show',
1066
    COLLAPSE: 'collapse',
1067
    COLLAPSING: 'collapsing',
1068
    COLLAPSED: 'collapsed'
1069
  };
1070
  var Dimension = {
1071
    WIDTH: 'width',
1072
    HEIGHT: 'height'
1073
  };
1074
  var Selector = {
1075
    ACTIVES: '.show, .collapsing',
1076
    DATA_TOGGLE: '[data-toggle="collapse"]'
1077
    /**
1078
     * ------------------------------------------------------------------------
1079
     * Class Definition
1080
     * ------------------------------------------------------------------------
1081
     */
1082
1083
  };
1084
1085
  var Collapse =
1086
  /*#__PURE__*/
1087
  function () {
1088
    function Collapse(element, config) {
1089
      this._isTransitioning = false;
1090
      this._element = element;
1091
      this._config = this._getConfig(config);
1092
      this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1093
      var tabToggles = $$$1(Selector.DATA_TOGGLE);
1094
1095
      for (var i = 0; i < tabToggles.length; i++) {
1096
        var elem = tabToggles[i];
1097
        var selector = Util.getSelectorFromElement(elem);
1098
1099
        if (selector !== null && $$$1(selector).filter(element).length > 0) {
1100
          this._selector = selector;
1101
1102
          this._triggerArray.push(elem);
1103
        }
1104
      }
1105
1106
      this._parent = this._config.parent ? this._getParent() : null;
1107
1108
      if (!this._config.parent) {
1109
        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1110
      }
1111
1112
      if (this._config.toggle) {
1113
        this.toggle();
1114
      }
1115
    } // Getters
1116
1117
1118
    var _proto = Collapse.prototype;
1119
1120
    // Public
1121
    _proto.toggle = function toggle() {
1122
      if ($$$1(this._element).hasClass(ClassName.SHOW)) {
1123
        this.hide();
1124
      } else {
1125
        this.show();
1126
      }
1127
    };
1128
1129
    _proto.show = function show() {
1130
      var _this = this;
1131
1132
      if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
1133
        return;
1134
      }
1135
1136
      var actives;
1137
      var activesData;
1138
1139
      if (this._parent) {
1140
        actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
1141
1142
        if (actives.length === 0) {
1143
          actives = null;
1144
        }
1145
      }
1146
1147
      if (actives) {
1148
        activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
1149
1150
        if (activesData && activesData._isTransitioning) {
1151
          return;
1152
        }
1153
      }
1154
1155
      var startEvent = $$$1.Event(Event.SHOW);
1156
      $$$1(this._element).trigger(startEvent);
1157
1158
      if (startEvent.isDefaultPrevented()) {
1159
        return;
1160
      }
1161
1162
      if (actives) {
1163
        Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
1164
1165
        if (!activesData) {
1166
          $$$1(actives).data(DATA_KEY, null);
1167
        }
1168
      }
1169
1170
      var dimension = this._getDimension();
1171
1172
      $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
1173
      this._element.style[dimension] = 0;
1174
1175
      if (this._triggerArray.length > 0) {
1176
        $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
1177
      }
1178
1179
      this.setTransitioning(true);
1180
1181
      var complete = function complete() {
1182
        $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
1183
        _this._element.style[dimension] = '';
1184
1185
        _this.setTransitioning(false);
1186
1187
        $$$1(_this._element).trigger(Event.SHOWN);
1188
      };
1189
1190
      if (!Util.supportsTransitionEnd()) {
1191
        complete();
1192
        return;
1193
      }
1194
1195
      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1196
      var scrollSize = "scroll" + capitalizedDimension;
1197
      $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1198
      this._element.style[dimension] = this._element[scrollSize] + "px";
1199
    };
1200
1201
    _proto.hide = function hide() {
1202
      var _this2 = this;
1203
1204
      if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
1205
        return;
1206
      }
1207
1208
      var startEvent = $$$1.Event(Event.HIDE);
1209
      $$$1(this._element).trigger(startEvent);
1210
1211
      if (startEvent.isDefaultPrevented()) {
1212
        return;
1213
      }
1214
1215
      var dimension = this._getDimension();
1216
1217
      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1218
      Util.reflow(this._element);
1219
      $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
1220
1221
      if (this._triggerArray.length > 0) {
1222
        for (var i = 0; i < this._triggerArray.length; i++) {
1223
          var trigger = this._triggerArray[i];
1224
          var selector = Util.getSelectorFromElement(trigger);
1225
1226
          if (selector !== null) {
1227
            var $elem = $$$1(selector);
1228
1229
            if (!$elem.hasClass(ClassName.SHOW)) {
1230
              $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
1231
            }
1232
          }
1233
        }
1234
      }
1235
1236
      this.setTransitioning(true);
1237
1238
      var complete = function complete() {
1239
        _this2.setTransitioning(false);
1240
1241
        $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
1242
      };
1243
1244
      this._element.style[dimension] = '';
1245
1246
      if (!Util.supportsTransitionEnd()) {
1247
        complete();
1248
        return;
1249
      }
1250
1251
      $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1252
    };
1253
1254
    _proto.setTransitioning = function setTransitioning(isTransitioning) {
1255
      this._isTransitioning = isTransitioning;
1256
    };
1257
1258
    _proto.dispose = function dispose() {
1259
      $$$1.removeData(this._element, DATA_KEY);
1260
      this._config = null;
1261
      this._parent = null;
1262
      this._element = null;
1263
      this._triggerArray = null;
1264
      this._isTransitioning = null;
1265
    }; // Private
1266
1267
1268
    _proto._getConfig = function _getConfig(config) {
1269
      config = _extends({}, Default, config);
1270
      config.toggle = Boolean(config.toggle); // Coerce string values
1271
1272
      Util.typeCheckConfig(NAME, config, DefaultType);
1273
      return config;
1274
    };
1275
1276
    _proto._getDimension = function _getDimension() {
1277
      var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
1278
      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1279
    };
1280
1281
    _proto._getParent = function _getParent() {
1282
      var _this3 = this;
1283
1284
      var parent = null;
1285
1286
      if (Util.isElement(this._config.parent)) {
1287
        parent = this._config.parent; // It's a jQuery object
1288
1289
        if (typeof this._config.parent.jquery !== 'undefined') {
1290
          parent = this._config.parent[0];
1291
        }
1292
      } else {
1293
        parent = $$$1(this._config.parent)[0];
1294
      }
1295
1296
      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1297
      $$$1(parent).find(selector).each(function (i, element) {
1298
        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1299
      });
1300
      return parent;
1301
    };
1302
1303
    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1304
      if (element) {
1305
        var isOpen = $$$1(element).hasClass(ClassName.SHOW);
1306
1307
        if (triggerArray.length > 0) {
1308
          $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1309
        }
1310
      }
1311
    }; // Static
1312
1313
1314
    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1315
      var selector = Util.getSelectorFromElement(element);
1316
      return selector ? $$$1(selector)[0] : null;
1317
    };
1318
1319
    Collapse._jQueryInterface = function _jQueryInterface(config) {
1320
      return this.each(function () {
1321
        var $this = $$$1(this);
1322
        var data = $this.data(DATA_KEY);
1323
1324
        var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
1325
1326
        if (!data && _config.toggle && /show|hide/.test(config)) {
1327
          _config.toggle = false;
1328
        }
1329
1330
        if (!data) {
1331
          data = new Collapse(this, _config);
1332
          $this.data(DATA_KEY, data);
1333
        }
1334
1335
        if (typeof config === 'string') {
1336
          if (typeof data[config] === 'undefined') {
1337
            throw new TypeError("No method named \"" + config + "\"");
1338
          }
1339
1340
          data[config]();
1341
        }
1342
      });
1343
    };
1344
1345
    _createClass(Collapse, null, [{
1346
      key: "VERSION",
1347
      get: function get() {
1348
        return VERSION;
1349
      }
1350
    }, {
1351
      key: "Default",
1352
      get: function get() {
1353
        return Default;
1354
      }
1355
    }]);
1356
    return Collapse;
1357
  }();
1358
  /**
1359
   * ------------------------------------------------------------------------
1360
   * Data Api implementation
1361
   * ------------------------------------------------------------------------
1362
   */
1363
1364
1365
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
1366
    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1367
    if (event.currentTarget.tagName === 'A') {
1368
      event.preventDefault();
1369
    }
1370
1371
    var $trigger = $$$1(this);
1372
    var selector = Util.getSelectorFromElement(this);
1373
    $$$1(selector).each(function () {
1374
      var $target = $$$1(this);
1375
      var data = $target.data(DATA_KEY);
1376
      var config = data ? 'toggle' : $trigger.data();
1377
1378
      Collapse._jQueryInterface.call($target, config);
1379
    });
1380
  });
1381
  /**
1382
   * ------------------------------------------------------------------------
1383
   * jQuery
1384
   * ------------------------------------------------------------------------
1385
   */
1386
1387
  $$$1.fn[NAME] = Collapse._jQueryInterface;
1388
  $$$1.fn[NAME].Constructor = Collapse;
1389
1390
  $$$1.fn[NAME].noConflict = function () {
1391
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1392
    return Collapse._jQueryInterface;
1393
  };
1394
1395
  return Collapse;
1396
}($);
1397
1398
/**
1399
 * --------------------------------------------------------------------------
1400
 * Bootstrap (v4.0.0): dropdown.js
1401
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1402
 * --------------------------------------------------------------------------
1403
 */
1404
1405
var Dropdown = function ($$$1) {
1406
  /**
1407
   * ------------------------------------------------------------------------
1408
   * Constants
1409
   * ------------------------------------------------------------------------
1410
   */
1411
  var NAME = 'dropdown';
1412
  var VERSION = '4.0.0';
1413
  var DATA_KEY = 'bs.dropdown';
1414
  var EVENT_KEY = "." + DATA_KEY;
1415
  var DATA_API_KEY = '.data-api';
1416
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1417
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1418
1419
  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1420
1421
  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1422
1423
  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1424
1425
  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1426
1427
  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1428
1429
  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1430
  var Event = {
1431
    HIDE: "hide" + EVENT_KEY,
1432
    HIDDEN: "hidden" + EVENT_KEY,
1433
    SHOW: "show" + EVENT_KEY,
1434
    SHOWN: "shown" + EVENT_KEY,
1435
    CLICK: "click" + EVENT_KEY,
1436
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
1437
    KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
1438
    KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
1439
  };
1440
  var ClassName = {
1441
    DISABLED: 'disabled',
1442
    SHOW: 'show',
1443
    DROPUP: 'dropup',
1444
    DROPRIGHT: 'dropright',
1445
    DROPLEFT: 'dropleft',
1446
    MENURIGHT: 'dropdown-menu-right',
1447
    MENULEFT: 'dropdown-menu-left',
1448
    POSITION_STATIC: 'position-static'
1449
  };
1450
  var Selector = {
1451
    DATA_TOGGLE: '[data-toggle="dropdown"]',
1452
    FORM_CHILD: '.dropdown form',
1453
    MENU: '.dropdown-menu',
1454
    NAVBAR_NAV: '.navbar-nav',
1455
    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
1456
  };
1457
  var AttachmentMap = {
1458
    TOP: 'top-start',
1459
    TOPEND: 'top-end',
1460
    BOTTOM: 'bottom-start',
1461
    BOTTOMEND: 'bottom-end',
1462
    RIGHT: 'right-start',
1463
    RIGHTEND: 'right-end',
1464
    LEFT: 'left-start',
1465
    LEFTEND: 'left-end'
1466
  };
1467
  var Default = {
1468
    offset: 0,
1469
    flip: true,
1470
    boundary: 'scrollParent'
1471
  };
1472
  var DefaultType = {
1473
    offset: '(number|string|function)',
1474
    flip: 'boolean',
1475
    boundary: '(string|element)'
1476
    /**
1477
     * ------------------------------------------------------------------------
1478
     * Class Definition
1479
     * ------------------------------------------------------------------------
1480
     */
1481
1482
  };
1483
1484
  var Dropdown =
1485
  /*#__PURE__*/
1486
  function () {
1487
    function Dropdown(element, config) {
1488
      this._element = element;
1489
      this._popper = null;
1490
      this._config = this._getConfig(config);
1491
      this._menu = this._getMenuElement();
1492
      this._inNavbar = this._detectNavbar();
1493
1494
      this._addEventListeners();
1495
    } // Getters
1496
1497
1498
    var _proto = Dropdown.prototype;
1499
1500
    // Public
1501
    _proto.toggle = function toggle() {
1502
      if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
1503
        return;
1504
      }
1505
1506
      var parent = Dropdown._getParentFromElement(this._element);
1507
1508
      var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
1509
1510
      Dropdown._clearMenus();
1511
1512
      if (isActive) {
1513
        return;
1514
      }
1515
1516
      var relatedTarget = {
1517
        relatedTarget: this._element
1518
      };
1519
      var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
1520
      $$$1(parent).trigger(showEvent);
1521
1522
      if (showEvent.isDefaultPrevented()) {
1523
        return;
1524
      } // Disable totally Popper.js for Dropdown in Navbar
1525
1526
1527
      if (!this._inNavbar) {
1528
        /**
1529
         * Check for Popper dependency
1530
         * Popper - https://popper.js.org
1531
         */
1532
        if (typeof Popper === 'undefined') {
1533
          throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
1534
        }
1535
1536
        var element = this._element; // For dropup with alignment we use the parent as popper container
1537
1538
        if ($$$1(parent).hasClass(ClassName.DROPUP)) {
1539
          if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1540
            element = parent;
1541
          }
1542
        } // If boundary is not `scrollParent`, then set position to `static`
1543
        // to allow the menu to "escape" the scroll parent's boundaries
1544
        // https://github.com/twbs/bootstrap/issues/24251
1545
1546
1547
        if (this._config.boundary !== 'scrollParent') {
1548
          $$$1(parent).addClass(ClassName.POSITION_STATIC);
1549
        }
1550
1551
        this._popper = new Popper(element, this._menu, this._getPopperConfig());
1552
      } // If this is a touch-enabled device we add extra
1553
      // empty mouseover listeners to the body's immediate children;
1554
      // only needed because of broken event delegation on iOS
1555
      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1556
1557
1558
      if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
1559
        $$$1('body').children().on('mouseover', null, $$$1.noop);
1560
      }
1561
1562
      this._element.focus();
1563
1564
      this._element.setAttribute('aria-expanded', true);
1565
1566
      $$$1(this._menu).toggleClass(ClassName.SHOW);
1567
      $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
1568
    };
1569
1570
    _proto.dispose = function dispose() {
1571
      $$$1.removeData(this._element, DATA_KEY);
1572
      $$$1(this._element).off(EVENT_KEY);
1573
      this._element = null;
1574
      this._menu = null;
1575
1576
      if (this._popper !== null) {
1577
        this._popper.destroy();
1578
1579
        this._popper = null;
1580
      }
1581
    };
1582
1583
    _proto.update = function update() {
1584
      this._inNavbar = this._detectNavbar();
1585
1586
      if (this._popper !== null) {
1587
        this._popper.scheduleUpdate();
1588
      }
1589
    }; // Private
1590
1591
1592
    _proto._addEventListeners = function _addEventListeners() {
1593
      var _this = this;
1594
1595
      $$$1(this._element).on(Event.CLICK, function (event) {
1596
        event.preventDefault();
1597
        event.stopPropagation();
1598
1599
        _this.toggle();
1600
      });
1601
    };
1602
1603
    _proto._getConfig = function _getConfig(config) {
1604
      config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config);
1605
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
1606
      return config;
1607
    };
1608
1609
    _proto._getMenuElement = function _getMenuElement() {
1610
      if (!this._menu) {
1611
        var parent = Dropdown._getParentFromElement(this._element);
1612
1613
        this._menu = $$$1(parent).find(Selector.MENU)[0];
1614
      }
1615
1616
      return this._menu;
1617
    };
1618
1619
    _proto._getPlacement = function _getPlacement() {
1620
      var $parentDropdown = $$$1(this._element).parent();
1621
      var placement = AttachmentMap.BOTTOM; // Handle dropup
1622
1623
      if ($parentDropdown.hasClass(ClassName.DROPUP)) {
1624
        placement = AttachmentMap.TOP;
1625
1626
        if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1627
          placement = AttachmentMap.TOPEND;
1628
        }
1629
      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
1630
        placement = AttachmentMap.RIGHT;
1631
      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
1632
        placement = AttachmentMap.LEFT;
1633
      } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1634
        placement = AttachmentMap.BOTTOMEND;
1635
      }
1636
1637
      return placement;
1638
    };
1639
1640
    _proto._detectNavbar = function _detectNavbar() {
1641
      return $$$1(this._element).closest('.navbar').length > 0;
1642
    };
1643
1644
    _proto._getPopperConfig = function _getPopperConfig() {
1645
      var _this2 = this;
1646
1647
      var offsetConf = {};
1648
1649
      if (typeof this._config.offset === 'function') {
1650
        offsetConf.fn = function (data) {
1651
          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
1652
          return data;
1653
        };
1654
      } else {
1655
        offsetConf.offset = this._config.offset;
1656
      }
1657
1658
      var popperConfig = {
1659
        placement: this._getPlacement(),
1660
        modifiers: {
1661
          offset: offsetConf,
1662
          flip: {
1663
            enabled: this._config.flip
1664
          },
1665
          preventOverflow: {
1666
            boundariesElement: this._config.boundary
1667
          }
1668
        }
1669
      };
1670
      return popperConfig;
1671
    }; // Static
1672
1673
1674
    Dropdown._jQueryInterface = function _jQueryInterface(config) {
1675
      return this.each(function () {
1676
        var data = $$$1(this).data(DATA_KEY);
1677
1678
        var _config = typeof config === 'object' ? config : null;
1679
1680
        if (!data) {
1681
          data = new Dropdown(this, _config);
1682
          $$$1(this).data(DATA_KEY, data);
1683
        }
1684
1685
        if (typeof config === 'string') {
1686
          if (typeof data[config] === 'undefined') {
1687
            throw new TypeError("No method named \"" + config + "\"");
1688
          }
1689
1690
          data[config]();
1691
        }
1692
      });
1693
    };
1694
1695
    Dropdown._clearMenus = function _clearMenus(event) {
1696
      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1697
        return;
1698
      }
1699
1700
      var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
1701
1702
      for (var i = 0; i < toggles.length; i++) {
1703
        var parent = Dropdown._getParentFromElement(toggles[i]);
1704
1705
        var context = $$$1(toggles[i]).data(DATA_KEY);
1706
        var relatedTarget = {
1707
          relatedTarget: toggles[i]
1708
        };
1709
1710
        if (!context) {
1711
          continue;
1712
        }
1713
1714
        var dropdownMenu = context._menu;
1715
1716
        if (!$$$1(parent).hasClass(ClassName.SHOW)) {
1717
          continue;
1718
        }
1719
1720
        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
1721
          continue;
1722
        }
1723
1724
        var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
1725
        $$$1(parent).trigger(hideEvent);
1726
1727
        if (hideEvent.isDefaultPrevented()) {
1728
          continue;
1729
        } // If this is a touch-enabled device we remove the extra
1730
        // empty mouseover listeners we added for iOS support
1731
1732
1733
        if ('ontouchstart' in document.documentElement) {
1734
          $$$1('body').children().off('mouseover', null, $$$1.noop);
1735
        }
1736
1737
        toggles[i].setAttribute('aria-expanded', 'false');
1738
        $$$1(dropdownMenu).removeClass(ClassName.SHOW);
1739
        $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
1740
      }
1741
    };
1742
1743
    Dropdown._getParentFromElement = function _getParentFromElement(element) {
1744
      var parent;
1745
      var selector = Util.getSelectorFromElement(element);
1746
1747
      if (selector) {
1748
        parent = $$$1(selector)[0];
1749
      }
1750
1751
      return parent || element.parentNode;
1752
    }; // eslint-disable-next-line complexity
1753
1754
1755
    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1756
      // If not input/textarea:
1757
      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
1758
      // If input/textarea:
1759
      //  - If space key => not a dropdown command
1760
      //  - If key is other than escape
1761
      //    - If key is not up or down => not a dropdown command
1762
      //    - If trigger inside the menu => not a dropdown command
1763
      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 || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1764
        return;
1765
      }
1766
1767
      event.preventDefault();
1768
      event.stopPropagation();
1769
1770
      if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
1771
        return;
1772
      }
1773
1774
      var parent = Dropdown._getParentFromElement(this);
1775
1776
      var isActive = $$$1(parent).hasClass(ClassName.SHOW);
1777
1778
      if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1779
        if (event.which === ESCAPE_KEYCODE) {
1780
          var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
1781
          $$$1(toggle).trigger('focus');
1782
        }
1783
1784
        $$$1(this).trigger('click');
1785
        return;
1786
      }
1787
1788
      var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
1789
1790
      if (items.length === 0) {
1791
        return;
1792
      }
1793
1794
      var index = items.indexOf(event.target);
1795
1796
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
1797
        // Up
1798
        index--;
1799
      }
1800
1801
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1802
        // Down
1803
        index++;
1804
      }
1805
1806
      if (index < 0) {
1807
        index = 0;
1808
      }
1809
1810
      items[index].focus();
1811
    };
1812
1813
    _createClass(Dropdown, null, [{
1814
      key: "VERSION",
1815
      get: function get() {
1816
        return VERSION;
1817
      }
1818
    }, {
1819
      key: "Default",
1820
      get: function get() {
1821
        return Default;
1822
      }
1823
    }, {
1824
      key: "DefaultType",
1825
      get: function get() {
1826
        return DefaultType;
1827
      }
1828
    }]);
1829
    return Dropdown;
1830
  }();
1831
  /**
1832
   * ------------------------------------------------------------------------
1833
   * Data Api implementation
1834
   * ------------------------------------------------------------------------
1835
   */
1836
1837
1838
  $$$1(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) {
1839
    event.preventDefault();
1840
    event.stopPropagation();
1841
1842
    Dropdown._jQueryInterface.call($$$1(this), 'toggle');
1843
  }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
1844
    e.stopPropagation();
1845
  });
1846
  /**
1847
   * ------------------------------------------------------------------------
1848
   * jQuery
1849
   * ------------------------------------------------------------------------
1850
   */
1851
1852
  $$$1.fn[NAME] = Dropdown._jQueryInterface;
1853
  $$$1.fn[NAME].Constructor = Dropdown;
1854
1855
  $$$1.fn[NAME].noConflict = function () {
1856
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1857
    return Dropdown._jQueryInterface;
1858
  };
1859
1860
  return Dropdown;
1861
}($, Popper);
1862
1863
/**
1864
 * --------------------------------------------------------------------------
1865
 * Bootstrap (v4.0.0): modal.js
1866
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1867
 * --------------------------------------------------------------------------
1868
 */
1869
1870
var Modal = function ($$$1) {
1871
  /**
1872
   * ------------------------------------------------------------------------
1873
   * Constants
1874
   * ------------------------------------------------------------------------
1875
   */
1876
  var NAME = 'modal';
1877
  var VERSION = '4.0.0';
1878
  var DATA_KEY = 'bs.modal';
1879
  var EVENT_KEY = "." + DATA_KEY;
1880
  var DATA_API_KEY = '.data-api';
1881
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1882
  var TRANSITION_DURATION = 300;
1883
  var BACKDROP_TRANSITION_DURATION = 150;
1884
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1885
1886
  var Default = {
1887
    backdrop: true,
1888
    keyboard: true,
1889
    focus: true,
1890
    show: true
1891
  };
1892
  var DefaultType = {
1893
    backdrop: '(boolean|string)',
1894
    keyboard: 'boolean',
1895
    focus: 'boolean',
1896
    show: 'boolean'
1897
  };
1898
  var Event = {
1899
    HIDE: "hide" + EVENT_KEY,
1900
    HIDDEN: "hidden" + EVENT_KEY,
1901
    SHOW: "show" + EVENT_KEY,
1902
    SHOWN: "shown" + EVENT_KEY,
1903
    FOCUSIN: "focusin" + EVENT_KEY,
1904
    RESIZE: "resize" + EVENT_KEY,
1905
    CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
1906
    KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
1907
    MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
1908
    MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
1909
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1910
  };
1911
  var ClassName = {
1912
    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
1913
    BACKDROP: 'modal-backdrop',
1914
    OPEN: 'modal-open',
1915
    FADE: 'fade',
1916
    SHOW: 'show'
1917
  };
1918
  var Selector = {
1919
    DIALOG: '.modal-dialog',
1920
    DATA_TOGGLE: '[data-toggle="modal"]',
1921
    DATA_DISMISS: '[data-dismiss="modal"]',
1922
    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
1923
    STICKY_CONTENT: '.sticky-top',
1924
    NAVBAR_TOGGLER: '.navbar-toggler'
1925
    /**
1926
     * ------------------------------------------------------------------------
1927
     * Class Definition
1928
     * ------------------------------------------------------------------------
1929
     */
1930
1931
  };
1932
1933
  var Modal =
1934
  /*#__PURE__*/
1935
  function () {
1936
    function Modal(element, config) {
1937
      this._config = this._getConfig(config);
1938
      this._element = element;
1939
      this._dialog = $$$1(element).find(Selector.DIALOG)[0];
1940
      this._backdrop = null;
1941
      this._isShown = false;
1942
      this._isBodyOverflowing = false;
1943
      this._ignoreBackdropClick = false;
1944
      this._originalBodyPadding = 0;
1945
      this._scrollbarWidth = 0;
1946
    } // Getters
1947
1948
1949
    var _proto = Modal.prototype;
1950
1951
    // Public
1952
    _proto.toggle = function toggle(relatedTarget) {
1953
      return this._isShown ? this.hide() : this.show(relatedTarget);
1954
    };
1955
1956
    _proto.show = function show(relatedTarget) {
1957
      var _this = this;
1958
1959
      if (this._isTransitioning || this._isShown) {
1960
        return;
1961
      }
1962
1963
      if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
1964
        this._isTransitioning = true;
1965
      }
1966
1967
      var showEvent = $$$1.Event(Event.SHOW, {
1968
        relatedTarget: relatedTarget
1969
      });
1970
      $$$1(this._element).trigger(showEvent);
1971
1972
      if (this._isShown || showEvent.isDefaultPrevented()) {
1973
        return;
1974
      }
1975
1976
      this._isShown = true;
1977
1978
      this._checkScrollbar();
1979
1980
      this._setScrollbar();
1981
1982
      this._adjustDialog();
1983
1984
      $$$1(document.body).addClass(ClassName.OPEN);
1985
1986
      this._setEscapeEvent();
1987
1988
      this._setResizeEvent();
1989
1990
      $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
1991
        return _this.hide(event);
1992
      });
1993
      $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
1994
        $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
1995
          if ($$$1(event.target).is(_this._element)) {
1996
            _this._ignoreBackdropClick = true;
1997
          }
1998
        });
1999
      });
2000
2001
      this._showBackdrop(function () {
2002
        return _this._showElement(relatedTarget);
2003
      });
2004
    };
2005
2006
    _proto.hide = function hide(event) {
2007
      var _this2 = this;
2008
2009
      if (event) {
2010
        event.preventDefault();
2011
      }
2012
2013
      if (this._isTransitioning || !this._isShown) {
2014
        return;
2015
      }
2016
2017
      var hideEvent = $$$1.Event(Event.HIDE);
2018
      $$$1(this._element).trigger(hideEvent);
2019
2020
      if (!this._isShown || hideEvent.isDefaultPrevented()) {
2021
        return;
2022
      }
2023
2024
      this._isShown = false;
2025
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2026
2027
      if (transition) {
2028
        this._isTransitioning = true;
2029
      }
2030
2031
      this._setEscapeEvent();
2032
2033
      this._setResizeEvent();
2034
2035
      $$$1(document).off(Event.FOCUSIN);
2036
      $$$1(this._element).removeClass(ClassName.SHOW);
2037
      $$$1(this._element).off(Event.CLICK_DISMISS);
2038
      $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
2039
2040
      if (transition) {
2041
        $$$1(this._element).one(Util.TRANSITION_END, function (event) {
2042
          return _this2._hideModal(event);
2043
        }).emulateTransitionEnd(TRANSITION_DURATION);
2044
      } else {
2045
        this._hideModal();
2046
      }
2047
    };
2048
2049
    _proto.dispose = function dispose() {
2050
      $$$1.removeData(this._element, DATA_KEY);
2051
      $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
2052
      this._config = null;
2053
      this._element = null;
2054
      this._dialog = null;
2055
      this._backdrop = null;
2056
      this._isShown = null;
2057
      this._isBodyOverflowing = null;
2058
      this._ignoreBackdropClick = null;
2059
      this._scrollbarWidth = null;
2060
    };
2061
2062
    _proto.handleUpdate = function handleUpdate() {
2063
      this._adjustDialog();
2064
    }; // Private
2065
2066
2067
    _proto._getConfig = function _getConfig(config) {
2068
      config = _extends({}, Default, config);
2069
      Util.typeCheckConfig(NAME, config, DefaultType);
2070
      return config;
2071
    };
2072
2073
    _proto._showElement = function _showElement(relatedTarget) {
2074
      var _this3 = this;
2075
2076
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2077
2078
      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2079
        // Don't move modal's DOM position
2080
        document.body.appendChild(this._element);
2081
      }
2082
2083
      this._element.style.display = 'block';
2084
2085
      this._element.removeAttribute('aria-hidden');
2086
2087
      this._element.scrollTop = 0;
2088
2089
      if (transition) {
2090
        Util.reflow(this._element);
2091
      }
2092
2093
      $$$1(this._element).addClass(ClassName.SHOW);
2094
2095
      if (this._config.focus) {
2096
        this._enforceFocus();
2097
      }
2098
2099
      var shownEvent = $$$1.Event(Event.SHOWN, {
2100
        relatedTarget: relatedTarget
2101
      });
2102
2103
      var transitionComplete = function transitionComplete() {
2104
        if (_this3._config.focus) {
2105
          _this3._element.focus();
2106
        }
2107
2108
        _this3._isTransitioning = false;
2109
        $$$1(_this3._element).trigger(shownEvent);
2110
      };
2111
2112
      if (transition) {
2113
        $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
2114
      } else {
2115
        transitionComplete();
2116
      }
2117
    };
2118
2119
    _proto._enforceFocus = function _enforceFocus() {
2120
      var _this4 = this;
2121
2122
      $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
2123
      .on(Event.FOCUSIN, function (event) {
2124
        if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
2125
          _this4._element.focus();
2126
        }
2127
      });
2128
    };
2129
2130
    _proto._setEscapeEvent = function _setEscapeEvent() {
2131
      var _this5 = this;
2132
2133
      if (this._isShown && this._config.keyboard) {
2134
        $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
2135
          if (event.which === ESCAPE_KEYCODE) {
2136
            event.preventDefault();
2137
2138
            _this5.hide();
2139
          }
2140
        });
2141
      } else if (!this._isShown) {
2142
        $$$1(this._element).off(Event.KEYDOWN_DISMISS);
2143
      }
2144
    };
2145
2146
    _proto._setResizeEvent = function _setResizeEvent() {
2147
      var _this6 = this;
2148
2149
      if (this._isShown) {
2150
        $$$1(window).on(Event.RESIZE, function (event) {
2151
          return _this6.handleUpdate(event);
2152
        });
2153
      } else {
2154
        $$$1(window).off(Event.RESIZE);
2155
      }
2156
    };
2157
2158
    _proto._hideModal = function _hideModal() {
2159
      var _this7 = this;
2160
2161
      this._element.style.display = 'none';
2162
2163
      this._element.setAttribute('aria-hidden', true);
2164
2165
      this._isTransitioning = false;
2166
2167
      this._showBackdrop(function () {
2168
        $$$1(document.body).removeClass(ClassName.OPEN);
2169
2170
        _this7._resetAdjustments();
2171
2172
        _this7._resetScrollbar();
2173
2174
        $$$1(_this7._element).trigger(Event.HIDDEN);
2175
      });
2176
    };
2177
2178
    _proto._removeBackdrop = function _removeBackdrop() {
2179
      if (this._backdrop) {
2180
        $$$1(this._backdrop).remove();
2181
        this._backdrop = null;
2182
      }
2183
    };
2184
2185
    _proto._showBackdrop = function _showBackdrop(callback) {
2186
      var _this8 = this;
2187
2188
      var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
2189
2190
      if (this._isShown && this._config.backdrop) {
2191
        var doAnimate = Util.supportsTransitionEnd() && animate;
2192
        this._backdrop = document.createElement('div');
2193
        this._backdrop.className = ClassName.BACKDROP;
2194
2195
        if (animate) {
2196
          $$$1(this._backdrop).addClass(animate);
2197
        }
2198
2199
        $$$1(this._backdrop).appendTo(document.body);
2200
        $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
2201
          if (_this8._ignoreBackdropClick) {
2202
            _this8._ignoreBackdropClick = false;
2203
            return;
2204
          }
2205
2206
          if (event.target !== event.currentTarget) {
2207
            return;
2208
          }
2209
2210
          if (_this8._config.backdrop === 'static') {
2211
            _this8._element.focus();
2212
          } else {
2213
            _this8.hide();
2214
          }
2215
        });
2216
2217
        if (doAnimate) {
2218
          Util.reflow(this._backdrop);
2219
        }
2220
2221
        $$$1(this._backdrop).addClass(ClassName.SHOW);
2222
2223
        if (!callback) {
2224
          return;
2225
        }
2226
2227
        if (!doAnimate) {
2228
          callback();
2229
          return;
2230
        }
2231
2232
        $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2233
      } else if (!this._isShown && this._backdrop) {
2234
        $$$1(this._backdrop).removeClass(ClassName.SHOW);
2235
2236
        var callbackRemove = function callbackRemove() {
2237
          _this8._removeBackdrop();
2238
2239
          if (callback) {
2240
            callback();
2241
          }
2242
        };
2243
2244
        if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
2245
          $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2246
        } else {
2247
          callbackRemove();
2248
        }
2249
      } else if (callback) {
2250
        callback();
2251
      }
2252
    }; // ----------------------------------------------------------------------
2253
    // the following methods are used to handle overflowing modals
2254
    // todo (fat): these should probably be refactored out of modal.js
2255
    // ----------------------------------------------------------------------
2256
2257
2258
    _proto._adjustDialog = function _adjustDialog() {
2259
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2260
2261
      if (!this._isBodyOverflowing && isModalOverflowing) {
2262
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
2263
      }
2264
2265
      if (this._isBodyOverflowing && !isModalOverflowing) {
2266
        this._element.style.paddingRight = this._scrollbarWidth + "px";
2267
      }
2268
    };
2269
2270
    _proto._resetAdjustments = function _resetAdjustments() {
2271
      this._element.style.paddingLeft = '';
2272
      this._element.style.paddingRight = '';
2273
    };
2274
2275
    _proto._checkScrollbar = function _checkScrollbar() {
2276
      var rect = document.body.getBoundingClientRect();
2277
      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2278
      this._scrollbarWidth = this._getScrollbarWidth();
2279
    };
2280
2281
    _proto._setScrollbar = function _setScrollbar() {
2282
      var _this9 = this;
2283
2284
      if (this._isBodyOverflowing) {
2285
        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2286
        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2287
        // Adjust fixed content padding
2288
        $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2289
          var actualPadding = $$$1(element)[0].style.paddingRight;
2290
          var calculatedPadding = $$$1(element).css('padding-right');
2291
          $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2292
        }); // Adjust sticky content margin
2293
2294
        $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
2295
          var actualMargin = $$$1(element)[0].style.marginRight;
2296
          var calculatedMargin = $$$1(element).css('margin-right');
2297
          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2298
        }); // Adjust navbar-toggler margin
2299
2300
        $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
2301
          var actualMargin = $$$1(element)[0].style.marginRight;
2302
          var calculatedMargin = $$$1(element).css('margin-right');
2303
          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
2304
        }); // Adjust body padding
2305
2306
        var actualPadding = document.body.style.paddingRight;
2307
        var calculatedPadding = $$$1('body').css('padding-right');
2308
        $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2309
      }
2310
    };
2311
2312
    _proto._resetScrollbar = function _resetScrollbar() {
2313
      // Restore fixed content padding
2314
      $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2315
        var padding = $$$1(element).data('padding-right');
2316
2317
        if (typeof padding !== 'undefined') {
2318
          $$$1(element).css('padding-right', padding).removeData('padding-right');
2319
        }
2320
      }); // Restore sticky content and navbar-toggler margin
2321
2322
      $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
2323
        var margin = $$$1(element).data('margin-right');
2324
2325
        if (typeof margin !== 'undefined') {
2326
          $$$1(element).css('margin-right', margin).removeData('margin-right');
2327
        }
2328
      }); // Restore body padding
2329
2330
      var padding = $$$1('body').data('padding-right');
2331
2332
      if (typeof padding !== 'undefined') {
2333
        $$$1('body').css('padding-right', padding).removeData('padding-right');
2334
      }
2335
    };
2336
2337
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
2338
      // thx d.walsh
2339
      var scrollDiv = document.createElement('div');
2340
      scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
2341
      document.body.appendChild(scrollDiv);
2342
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2343
      document.body.removeChild(scrollDiv);
2344
      return scrollbarWidth;
2345
    }; // Static
2346
2347
2348
    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2349
      return this.each(function () {
2350
        var data = $$$1(this).data(DATA_KEY);
2351
2352
        var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
2353
2354
        if (!data) {
2355
          data = new Modal(this, _config);
2356
          $$$1(this).data(DATA_KEY, data);
2357
        }
2358
2359
        if (typeof config === 'string') {
2360
          if (typeof data[config] === 'undefined') {
2361
            throw new TypeError("No method named \"" + config + "\"");
2362
          }
2363
2364
          data[config](relatedTarget);
2365
        } else if (_config.show) {
2366
          data.show(relatedTarget);
2367
        }
2368
      });
2369
    };
2370
2371
    _createClass(Modal, null, [{
2372
      key: "VERSION",
2373
      get: function get() {
2374
        return VERSION;
2375
      }
2376
    }, {
2377
      key: "Default",
2378
      get: function get() {
2379
        return Default;
2380
      }
2381
    }]);
2382
    return Modal;
2383
  }();
2384
  /**
2385
   * ------------------------------------------------------------------------
2386
   * Data Api implementation
2387
   * ------------------------------------------------------------------------
2388
   */
2389
2390
2391
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
2392
    var _this10 = this;
2393
2394
    var target;
2395
    var selector = Util.getSelectorFromElement(this);
2396
2397
    if (selector) {
2398
      target = $$$1(selector)[0];
2399
    }
2400
2401
    var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
2402
2403
    if (this.tagName === 'A' || this.tagName === 'AREA') {
2404
      event.preventDefault();
2405
    }
2406
2407
    var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
2408
      if (showEvent.isDefaultPrevented()) {
2409
        // Only register focus restorer if modal will actually get shown
2410
        return;
2411
      }
2412
2413
      $target.one(Event.HIDDEN, function () {
2414
        if ($$$1(_this10).is(':visible')) {
2415
          _this10.focus();
2416
        }
2417
      });
2418
    });
2419
2420
    Modal._jQueryInterface.call($$$1(target), config, this);
2421
  });
2422
  /**
2423
   * ------------------------------------------------------------------------
2424
   * jQuery
2425
   * ------------------------------------------------------------------------
2426
   */
2427
2428
  $$$1.fn[NAME] = Modal._jQueryInterface;
2429
  $$$1.fn[NAME].Constructor = Modal;
2430
2431
  $$$1.fn[NAME].noConflict = function () {
2432
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
2433
    return Modal._jQueryInterface;
2434
  };
2435
2436
  return Modal;
2437
}($);
2438
2439
/**
2440
 * --------------------------------------------------------------------------
2441
 * Bootstrap (v4.0.0): tooltip.js
2442
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2443
 * --------------------------------------------------------------------------
2444
 */
2445
2446
var Tooltip = function ($$$1) {
2447
  /**
2448
   * ------------------------------------------------------------------------
2449
   * Constants
2450
   * ------------------------------------------------------------------------
2451
   */
2452
  var NAME = 'tooltip';
2453
  var VERSION = '4.0.0';
2454
  var DATA_KEY = 'bs.tooltip';
2455
  var EVENT_KEY = "." + DATA_KEY;
2456
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
2457
  var TRANSITION_DURATION = 150;
2458
  var CLASS_PREFIX = 'bs-tooltip';
2459
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2460
  var DefaultType = {
2461
    animation: 'boolean',
2462
    template: 'string',
2463
    title: '(string|element|function)',
2464
    trigger: 'string',
2465
    delay: '(number|object)',
2466
    html: 'boolean',
2467
    selector: '(string|boolean)',
2468
    placement: '(string|function)',
2469
    offset: '(number|string)',
2470
    container: '(string|element|boolean)',
2471
    fallbackPlacement: '(string|array)',
2472
    boundary: '(string|element)'
2473
  };
2474
  var AttachmentMap = {
2475
    AUTO: 'auto',
2476
    TOP: 'top',
2477
    RIGHT: 'right',
2478
    BOTTOM: 'bottom',
2479
    LEFT: 'left'
2480
  };
2481
  var Default = {
2482
    animation: true,
2483
    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2484
    trigger: 'hover focus',
2485
    title: '',
2486
    delay: 0,
2487
    html: false,
2488
    selector: false,
2489
    placement: 'top',
2490
    offset: 0,
2491
    container: false,
2492
    fallbackPlacement: 'flip',
2493
    boundary: 'scrollParent'
2494
  };
2495
  var HoverState = {
2496
    SHOW: 'show',
2497
    OUT: 'out'
2498
  };
2499
  var Event = {
2500
    HIDE: "hide" + EVENT_KEY,
2501
    HIDDEN: "hidden" + EVENT_KEY,
2502
    SHOW: "show" + EVENT_KEY,
2503
    SHOWN: "shown" + EVENT_KEY,
2504
    INSERTED: "inserted" + EVENT_KEY,
2505
    CLICK: "click" + EVENT_KEY,
2506
    FOCUSIN: "focusin" + EVENT_KEY,
2507
    FOCUSOUT: "focusout" + EVENT_KEY,
2508
    MOUSEENTER: "mouseenter" + EVENT_KEY,
2509
    MOUSELEAVE: "mouseleave" + EVENT_KEY
2510
  };
2511
  var ClassName = {
2512
    FADE: 'fade',
2513
    SHOW: 'show'
2514
  };
2515
  var Selector = {
2516
    TOOLTIP: '.tooltip',
2517
    TOOLTIP_INNER: '.tooltip-inner',
2518
    ARROW: '.arrow'
2519
  };
2520
  var Trigger = {
2521
    HOVER: 'hover',
2522
    FOCUS: 'focus',
2523
    CLICK: 'click',
2524
    MANUAL: 'manual'
2525
    /**
2526
     * ------------------------------------------------------------------------
2527
     * Class Definition
2528
     * ------------------------------------------------------------------------
2529
     */
2530
2531
  };
2532
2533
  var Tooltip =
2534
  /*#__PURE__*/
2535
  function () {
2536
    function Tooltip(element, config) {
2537
      /**
2538
       * Check for Popper dependency
2539
       * Popper - https://popper.js.org
2540
       */
2541
      if (typeof Popper === 'undefined') {
2542
        throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
2543
      } // private
2544
2545
2546
      this._isEnabled = true;
2547
      this._timeout = 0;
2548
      this._hoverState = '';
2549
      this._activeTrigger = {};
2550
      this._popper = null; // Protected
2551
2552
      this.element = element;
2553
      this.config = this._getConfig(config);
2554
      this.tip = null;
2555
2556
      this._setListeners();
2557
    } // Getters
2558
2559
2560
    var _proto = Tooltip.prototype;
2561
2562
    // Public
2563
    _proto.enable = function enable() {
2564
      this._isEnabled = true;
2565
    };
2566
2567
    _proto.disable = function disable() {
2568
      this._isEnabled = false;
2569
    };
2570
2571
    _proto.toggleEnabled = function toggleEnabled() {
2572
      this._isEnabled = !this._isEnabled;
2573
    };
2574
2575
    _proto.toggle = function toggle(event) {
2576
      if (!this._isEnabled) {
2577
        return;
2578
      }
2579
2580
      if (event) {
2581
        var dataKey = this.constructor.DATA_KEY;
2582
        var context = $$$1(event.currentTarget).data(dataKey);
2583
2584
        if (!context) {
2585
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2586
          $$$1(event.currentTarget).data(dataKey, context);
2587
        }
2588
2589
        context._activeTrigger.click = !context._activeTrigger.click;
2590
2591
        if (context._isWithActiveTrigger()) {
2592
          context._enter(null, context);
2593
        } else {
2594
          context._leave(null, context);
2595
        }
2596
      } else {
2597
        if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
2598
          this._leave(null, this);
2599
2600
          return;
2601
        }
2602
2603
        this._enter(null, this);
2604
      }
2605
    };
2606
2607
    _proto.dispose = function dispose() {
2608
      clearTimeout(this._timeout);
2609
      $$$1.removeData(this.element, this.constructor.DATA_KEY);
2610
      $$$1(this.element).off(this.constructor.EVENT_KEY);
2611
      $$$1(this.element).closest('.modal').off('hide.bs.modal');
2612
2613
      if (this.tip) {
2614
        $$$1(this.tip).remove();
2615
      }
2616
2617
      this._isEnabled = null;
2618
      this._timeout = null;
2619
      this._hoverState = null;
2620
      this._activeTrigger = null;
2621
2622
      if (this._popper !== null) {
2623
        this._popper.destroy();
2624
      }
2625
2626
      this._popper = null;
2627
      this.element = null;
2628
      this.config = null;
2629
      this.tip = null;
2630
    };
2631
2632
    _proto.show = function show() {
2633
      var _this = this;
2634
2635
      if ($$$1(this.element).css('display') === 'none') {
2636
        throw new Error('Please use show on visible elements');
2637
      }
2638
2639
      var showEvent = $$$1.Event(this.constructor.Event.SHOW);
2640
2641
      if (this.isWithContent() && this._isEnabled) {
2642
        $$$1(this.element).trigger(showEvent);
2643
        var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
2644
2645
        if (showEvent.isDefaultPrevented() || !isInTheDom) {
2646
          return;
2647
        }
2648
2649
        var tip = this.getTipElement();
2650
        var tipId = Util.getUID(this.constructor.NAME);
2651
        tip.setAttribute('id', tipId);
2652
        this.element.setAttribute('aria-describedby', tipId);
2653
        this.setContent();
2654
2655
        if (this.config.animation) {
2656
          $$$1(tip).addClass(ClassName.FADE);
2657
        }
2658
2659
        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2660
2661
        var attachment = this._getAttachment(placement);
2662
2663
        this.addAttachmentClass(attachment);
2664
        var container = this.config.container === false ? document.body : $$$1(this.config.container);
2665
        $$$1(tip).data(this.constructor.DATA_KEY, this);
2666
2667
        if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
2668
          $$$1(tip).appendTo(container);
2669
        }
2670
2671
        $$$1(this.element).trigger(this.constructor.Event.INSERTED);
2672
        this._popper = new Popper(this.element, tip, {
2673
          placement: attachment,
2674
          modifiers: {
2675
            offset: {
2676
              offset: this.config.offset
2677
            },
2678
            flip: {
2679
              behavior: this.config.fallbackPlacement
2680
            },
2681
            arrow: {
2682
              element: Selector.ARROW
2683
            },
2684
            preventOverflow: {
2685
              boundariesElement: this.config.boundary
2686
            }
2687
          },
2688
          onCreate: function onCreate(data) {
2689
            if (data.originalPlacement !== data.placement) {
2690
              _this._handlePopperPlacementChange(data);
2691
            }
2692
          },
2693
          onUpdate: function onUpdate(data) {
2694
            _this._handlePopperPlacementChange(data);
2695
          }
2696
        });
2697
        $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
2698
        // empty mouseover listeners to the body's immediate children;
2699
        // only needed because of broken event delegation on iOS
2700
        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2701
2702
        if ('ontouchstart' in document.documentElement) {
2703
          $$$1('body').children().on('mouseover', null, $$$1.noop);
2704
        }
2705
2706
        var complete = function complete() {
2707
          if (_this.config.animation) {
2708
            _this._fixTransition();
2709
          }
2710
2711
          var prevHoverState = _this._hoverState;
2712
          _this._hoverState = null;
2713
          $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
2714
2715
          if (prevHoverState === HoverState.OUT) {
2716
            _this._leave(null, _this);
2717
          }
2718
        };
2719
2720
        if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
2721
          $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
2722
        } else {
2723
          complete();
2724
        }
2725
      }
2726
    };
2727
2728
    _proto.hide = function hide(callback) {
2729
      var _this2 = this;
2730
2731
      var tip = this.getTipElement();
2732
      var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
2733
2734
      var complete = function complete() {
2735
        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
2736
          tip.parentNode.removeChild(tip);
2737
        }
2738
2739
        _this2._cleanTipClass();
2740
2741
        _this2.element.removeAttribute('aria-describedby');
2742
2743
        $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
2744
2745
        if (_this2._popper !== null) {
2746
          _this2._popper.destroy();
2747
        }
2748
2749
        if (callback) {
2750
          callback();
2751
        }
2752
      };
2753
2754
      $$$1(this.element).trigger(hideEvent);
2755
2756
      if (hideEvent.isDefaultPrevented()) {
2757
        return;
2758
      }
2759
2760
      $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
2761
      // empty mouseover listeners we added for iOS support
2762
2763
      if ('ontouchstart' in document.documentElement) {
2764
        $$$1('body').children().off('mouseover', null, $$$1.noop);
2765
      }
2766
2767
      this._activeTrigger[Trigger.CLICK] = false;
2768
      this._activeTrigger[Trigger.FOCUS] = false;
2769
      this._activeTrigger[Trigger.HOVER] = false;
2770
2771
      if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
2772
        $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
2773
      } else {
2774
        complete();
2775
      }
2776
2777
      this._hoverState = '';
2778
    };
2779
2780
    _proto.update = function update() {
2781
      if (this._popper !== null) {
2782
        this._popper.scheduleUpdate();
2783
      }
2784
    }; // Protected
2785
2786
2787
    _proto.isWithContent = function isWithContent() {
2788
      return Boolean(this.getTitle());
2789
    };
2790
2791
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
2792
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
2793
    };
2794
2795
    _proto.getTipElement = function getTipElement() {
2796
      this.tip = this.tip || $$$1(this.config.template)[0];
2797
      return this.tip;
2798
    };
2799
2800
    _proto.setContent = function setContent() {
2801
      var $tip = $$$1(this.getTipElement());
2802
      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
2803
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
2804
    };
2805
2806
    _proto.setElementContent = function setElementContent($element, content) {
2807
      var html = this.config.html;
2808
2809
      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
2810
        // Content is a DOM node or a jQuery
2811
        if (html) {
2812
          if (!$$$1(content).parent().is($element)) {
2813
            $element.empty().append(content);
2814
          }
2815
        } else {
2816
          $element.text($$$1(content).text());
2817
        }
2818
      } else {
2819
        $element[html ? 'html' : 'text'](content);
2820
      }
2821
    };
2822
2823
    _proto.getTitle = function getTitle() {
2824
      var title = this.element.getAttribute('data-original-title');
2825
2826
      if (!title) {
2827
        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
2828
      }
2829
2830
      return title;
2831
    }; // Private
2832
2833
2834
    _proto._getAttachment = function _getAttachment(placement) {
2835
      return AttachmentMap[placement.toUpperCase()];
2836
    };
2837
2838
    _proto._setListeners = function _setListeners() {
2839
      var _this3 = this;
2840
2841
      var triggers = this.config.trigger.split(' ');
2842
      triggers.forEach(function (trigger) {
2843
        if (trigger === 'click') {
2844
          $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
2845
            return _this3.toggle(event);
2846
          });
2847
        } else if (trigger !== Trigger.MANUAL) {
2848
          var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
2849
          var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
2850
          $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
2851
            return _this3._enter(event);
2852
          }).on(eventOut, _this3.config.selector, function (event) {
2853
            return _this3._leave(event);
2854
          });
2855
        }
2856
2857
        $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
2858
          return _this3.hide();
2859
        });
2860
      });
2861
2862
      if (this.config.selector) {
2863
        this.config = _extends({}, this.config, {
2864
          trigger: 'manual',
2865
          selector: ''
2866
        });
2867
      } else {
2868
        this._fixTitle();
2869
      }
2870
    };
2871
2872
    _proto._fixTitle = function _fixTitle() {
2873
      var titleType = typeof this.element.getAttribute('data-original-title');
2874
2875
      if (this.element.getAttribute('title') || titleType !== 'string') {
2876
        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
2877
        this.element.setAttribute('title', '');
2878
      }
2879
    };
2880
2881
    _proto._enter = function _enter(event, context) {
2882
      var dataKey = this.constructor.DATA_KEY;
2883
      context = context || $$$1(event.currentTarget).data(dataKey);
2884
2885
      if (!context) {
2886
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2887
        $$$1(event.currentTarget).data(dataKey, context);
2888
      }
2889
2890
      if (event) {
2891
        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
2892
      }
2893
2894
      if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
2895
        context._hoverState = HoverState.SHOW;
2896
        return;
2897
      }
2898
2899
      clearTimeout(context._timeout);
2900
      context._hoverState = HoverState.SHOW;
2901
2902
      if (!context.config.delay || !context.config.delay.show) {
2903
        context.show();
2904
        return;
2905
      }
2906
2907
      context._timeout = setTimeout(function () {
2908
        if (context._hoverState === HoverState.SHOW) {
2909
          context.show();
2910
        }
2911
      }, context.config.delay.show);
2912
    };
2913
2914
    _proto._leave = function _leave(event, context) {
2915
      var dataKey = this.constructor.DATA_KEY;
2916
      context = context || $$$1(event.currentTarget).data(dataKey);
2917
2918
      if (!context) {
2919
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2920
        $$$1(event.currentTarget).data(dataKey, context);
2921
      }
2922
2923
      if (event) {
2924
        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
2925
      }
2926
2927
      if (context._isWithActiveTrigger()) {
2928
        return;
2929
      }
2930
2931
      clearTimeout(context._timeout);
2932
      context._hoverState = HoverState.OUT;
2933
2934
      if (!context.config.delay || !context.config.delay.hide) {
2935
        context.hide();
2936
        return;
2937
      }
2938
2939
      context._timeout = setTimeout(function () {
2940
        if (context._hoverState === HoverState.OUT) {
2941
          context.hide();
2942
        }
2943
      }, context.config.delay.hide);
2944
    };
2945
2946
    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
2947
      for (var trigger in this._activeTrigger) {
2948
        if (this._activeTrigger[trigger]) {
2949
          return true;
2950
        }
2951
      }
2952
2953
      return false;
2954
    };
2955
2956
    _proto._getConfig = function _getConfig(config) {
2957
      config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
2958
2959
      if (typeof config.delay === 'number') {
2960
        config.delay = {
2961
          show: config.delay,
2962
          hide: config.delay
2963
        };
2964
      }
2965
2966
      if (typeof config.title === 'number') {
2967
        config.title = config.title.toString();
2968
      }
2969
2970
      if (typeof config.content === 'number') {
2971
        config.content = config.content.toString();
2972
      }
2973
2974
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
2975
      return config;
2976
    };
2977
2978
    _proto._getDelegateConfig = function _getDelegateConfig() {
2979
      var config = {};
2980
2981
      if (this.config) {
2982
        for (var key in this.config) {
2983
          if (this.constructor.Default[key] !== this.config[key]) {
2984
            config[key] = this.config[key];
2985
          }
2986
        }
2987
      }
2988
2989
      return config;
2990
    };
2991
2992
    _proto._cleanTipClass = function _cleanTipClass() {
2993
      var $tip = $$$1(this.getTipElement());
2994
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
2995
2996
      if (tabClass !== null && tabClass.length > 0) {
2997
        $tip.removeClass(tabClass.join(''));
2998
      }
2999
    };
3000
3001
    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
3002
      this._cleanTipClass();
3003
3004
      this.addAttachmentClass(this._getAttachment(data.placement));
3005
    };
3006
3007
    _proto._fixTransition = function _fixTransition() {
3008
      var tip = this.getTipElement();
3009
      var initConfigAnimation = this.config.animation;
3010
3011
      if (tip.getAttribute('x-placement') !== null) {
3012
        return;
3013
      }
3014
3015
      $$$1(tip).removeClass(ClassName.FADE);
3016
      this.config.animation = false;
3017
      this.hide();
3018
      this.show();
3019
      this.config.animation = initConfigAnimation;
3020
    }; // Static
3021
3022
3023
    Tooltip._jQueryInterface = function _jQueryInterface(config) {
3024
      return this.each(function () {
3025
        var data = $$$1(this).data(DATA_KEY);
3026
3027
        var _config = typeof config === 'object' && config;
3028
3029
        if (!data && /dispose|hide/.test(config)) {
3030
          return;
3031
        }
3032
3033
        if (!data) {
3034
          data = new Tooltip(this, _config);
3035
          $$$1(this).data(DATA_KEY, data);
3036
        }
3037
3038
        if (typeof config === 'string') {
3039
          if (typeof data[config] === 'undefined') {
3040
            throw new TypeError("No method named \"" + config + "\"");
3041
          }
3042
3043
          data[config]();
3044
        }
3045
      });
3046
    };
3047
3048
    _createClass(Tooltip, null, [{
3049
      key: "VERSION",
3050
      get: function get() {
3051
        return VERSION;
3052
      }
3053
    }, {
3054
      key: "Default",
3055
      get: function get() {
3056
        return Default;
3057
      }
3058
    }, {
3059
      key: "NAME",
3060
      get: function get() {
3061
        return NAME;
3062
      }
3063
    }, {
3064
      key: "DATA_KEY",
3065
      get: function get() {
3066
        return DATA_KEY;
3067
      }
3068
    }, {
3069
      key: "Event",
3070
      get: function get() {
3071
        return Event;
3072
      }
3073
    }, {
3074
      key: "EVENT_KEY",
3075
      get: function get() {
3076
        return EVENT_KEY;
3077
      }
3078
    }, {
3079
      key: "DefaultType",
3080
      get: function get() {
3081
        return DefaultType;
3082
      }
3083
    }]);
3084
    return Tooltip;
3085
  }();
3086
  /**
3087
   * ------------------------------------------------------------------------
3088
   * jQuery
3089
   * ------------------------------------------------------------------------
3090
   */
3091
3092
3093
  $$$1.fn[NAME] = Tooltip._jQueryInterface;
3094
  $$$1.fn[NAME].Constructor = Tooltip;
3095
3096
  $$$1.fn[NAME].noConflict = function () {
3097
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3098
    return Tooltip._jQueryInterface;
3099
  };
3100
3101
  return Tooltip;
3102
}($, Popper);
3103
3104
/**
3105
 * --------------------------------------------------------------------------
3106
 * Bootstrap (v4.0.0): popover.js
3107
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3108
 * --------------------------------------------------------------------------
3109
 */
3110
3111
var Popover = function ($$$1) {
3112
  /**
3113
   * ------------------------------------------------------------------------
3114
   * Constants
3115
   * ------------------------------------------------------------------------
3116
   */
3117
  var NAME = 'popover';
3118
  var VERSION = '4.0.0';
3119
  var DATA_KEY = 'bs.popover';
3120
  var EVENT_KEY = "." + DATA_KEY;
3121
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3122
  var CLASS_PREFIX = 'bs-popover';
3123
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
3124
  var Default = _extends({}, Tooltip.Default, {
3125
    placement: 'right',
3126
    trigger: 'click',
3127
    content: '',
3128
    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3129
  });
3130
  var DefaultType = _extends({}, Tooltip.DefaultType, {
3131
    content: '(string|element|function)'
3132
  });
3133
  var ClassName = {
3134
    FADE: 'fade',
3135
    SHOW: 'show'
3136
  };
3137
  var Selector = {
3138
    TITLE: '.popover-header',
3139
    CONTENT: '.popover-body'
3140
  };
3141
  var Event = {
3142
    HIDE: "hide" + EVENT_KEY,
3143
    HIDDEN: "hidden" + EVENT_KEY,
3144
    SHOW: "show" + EVENT_KEY,
3145
    SHOWN: "shown" + EVENT_KEY,
3146
    INSERTED: "inserted" + EVENT_KEY,
3147
    CLICK: "click" + EVENT_KEY,
3148
    FOCUSIN: "focusin" + EVENT_KEY,
3149
    FOCUSOUT: "focusout" + EVENT_KEY,
3150
    MOUSEENTER: "mouseenter" + EVENT_KEY,
3151
    MOUSELEAVE: "mouseleave" + EVENT_KEY
3152
    /**
3153
     * ------------------------------------------------------------------------
3154
     * Class Definition
3155
     * ------------------------------------------------------------------------
3156
     */
3157
3158
  };
3159
3160
  var Popover =
3161
  /*#__PURE__*/
3162
  function (_Tooltip) {
3163
    _inheritsLoose(Popover, _Tooltip);
3164
3165
    function Popover() {
3166
      return _Tooltip.apply(this, arguments) || this;
3167
    }
3168
3169
    var _proto = Popover.prototype;
3170
3171
    // Overrides
3172
    _proto.isWithContent = function isWithContent() {
3173
      return this.getTitle() || this._getContent();
3174
    };
3175
3176
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3177
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3178
    };
3179
3180
    _proto.getTipElement = function getTipElement() {
3181
      this.tip = this.tip || $$$1(this.config.template)[0];
3182
      return this.tip;
3183
    };
3184
3185
    _proto.setContent = function setContent() {
3186
      var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
3187
3188
      this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
3189
3190
      var content = this._getContent();
3191
3192
      if (typeof content === 'function') {
3193
        content = content.call(this.element);
3194
      }
3195
3196
      this.setElementContent($tip.find(Selector.CONTENT), content);
3197
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
3198
    }; // Private
3199
3200
3201
    _proto._getContent = function _getContent() {
3202
      return this.element.getAttribute('data-content') || this.config.content;
3203
    };
3204
3205
    _proto._cleanTipClass = function _cleanTipClass() {
3206
      var $tip = $$$1(this.getTipElement());
3207
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3208
3209
      if (tabClass !== null && tabClass.length > 0) {
3210
        $tip.removeClass(tabClass.join(''));
3211
      }
3212
    }; // Static
3213
3214
3215
    Popover._jQueryInterface = function _jQueryInterface(config) {
3216
      return this.each(function () {
3217
        var data = $$$1(this).data(DATA_KEY);
3218
3219
        var _config = typeof config === 'object' ? config : null;
3220
3221
        if (!data && /destroy|hide/.test(config)) {
3222
          return;
3223
        }
3224
3225
        if (!data) {
3226
          data = new Popover(this, _config);
3227
          $$$1(this).data(DATA_KEY, data);
3228
        }
3229
3230
        if (typeof config === 'string') {
3231
          if (typeof data[config] === 'undefined') {
3232
            throw new TypeError("No method named \"" + config + "\"");
3233
          }
3234
3235
          data[config]();
3236
        }
3237
      });
3238
    };
3239
3240
    _createClass(Popover, null, [{
3241
      key: "VERSION",
3242
      // Getters
3243
      get: function get() {
3244
        return VERSION;
3245
      }
3246
    }, {
3247
      key: "Default",
3248
      get: function get() {
3249
        return Default;
3250
      }
3251
    }, {
3252
      key: "NAME",
3253
      get: function get() {
3254
        return NAME;
3255
      }
3256
    }, {
3257
      key: "DATA_KEY",
3258
      get: function get() {
3259
        return DATA_KEY;
3260
      }
3261
    }, {
3262
      key: "Event",
3263
      get: function get() {
3264
        return Event;
3265
      }
3266
    }, {
3267
      key: "EVENT_KEY",
3268
      get: function get() {
3269
        return EVENT_KEY;
3270
      }
3271
    }, {
3272
      key: "DefaultType",
3273
      get: function get() {
3274
        return DefaultType;
3275
      }
3276
    }]);
3277
    return Popover;
3278
  }(Tooltip);
3279
  /**
3280
   * ------------------------------------------------------------------------
3281
   * jQuery
3282
   * ------------------------------------------------------------------------
3283
   */
3284
3285
3286
  $$$1.fn[NAME] = Popover._jQueryInterface;
3287
  $$$1.fn[NAME].Constructor = Popover;
3288
3289
  $$$1.fn[NAME].noConflict = function () {
3290
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3291
    return Popover._jQueryInterface;
3292
  };
3293
3294
  return Popover;
3295
}($);
3296
3297
/**
3298
 * --------------------------------------------------------------------------
3299
 * Bootstrap (v4.0.0): scrollspy.js
3300
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3301
 * --------------------------------------------------------------------------
3302
 */
3303
3304
var ScrollSpy = function ($$$1) {
3305
  /**
3306
   * ------------------------------------------------------------------------
3307
   * Constants
3308
   * ------------------------------------------------------------------------
3309
   */
3310
  var NAME = 'scrollspy';
3311
  var VERSION = '4.0.0';
3312
  var DATA_KEY = 'bs.scrollspy';
3313
  var EVENT_KEY = "." + DATA_KEY;
3314
  var DATA_API_KEY = '.data-api';
3315
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3316
  var Default = {
3317
    offset: 10,
3318
    method: 'auto',
3319
    target: ''
3320
  };
3321
  var DefaultType = {
3322
    offset: 'number',
3323
    method: 'string',
3324
    target: '(string|element)'
3325
  };
3326
  var Event = {
3327
    ACTIVATE: "activate" + EVENT_KEY,
3328
    SCROLL: "scroll" + EVENT_KEY,
3329
    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
3330
  };
3331
  var ClassName = {
3332
    DROPDOWN_ITEM: 'dropdown-item',
3333
    DROPDOWN_MENU: 'dropdown-menu',
3334
    ACTIVE: 'active'
3335
  };
3336
  var Selector = {
3337
    DATA_SPY: '[data-spy="scroll"]',
3338
    ACTIVE: '.active',
3339
    NAV_LIST_GROUP: '.nav, .list-group',
3340
    NAV_LINKS: '.nav-link',
3341
    NAV_ITEMS: '.nav-item',
3342
    LIST_ITEMS: '.list-group-item',
3343
    DROPDOWN: '.dropdown',
3344
    DROPDOWN_ITEMS: '.dropdown-item',
3345
    DROPDOWN_TOGGLE: '.dropdown-toggle'
3346
  };
3347
  var OffsetMethod = {
3348
    OFFSET: 'offset',
3349
    POSITION: 'position'
3350
    /**
3351
     * ------------------------------------------------------------------------
3352
     * Class Definition
3353
     * ------------------------------------------------------------------------
3354
     */
3355
3356
  };
3357
3358
  var ScrollSpy =
3359
  /*#__PURE__*/
3360
  function () {
3361
    function ScrollSpy(element, config) {
3362
      var _this = this;
3363
3364
      this._element = element;
3365
      this._scrollElement = element.tagName === 'BODY' ? window : element;
3366
      this._config = this._getConfig(config);
3367
      this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
3368
      this._offsets = [];
3369
      this._targets = [];
3370
      this._activeTarget = null;
3371
      this._scrollHeight = 0;
3372
      $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
3373
        return _this._process(event);
3374
      });
3375
      this.refresh();
3376
3377
      this._process();
3378
    } // Getters
3379
3380
3381
    var _proto = ScrollSpy.prototype;
3382
3383
    // Public
3384
    _proto.refresh = function refresh() {
3385
      var _this2 = this;
3386
3387
      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3388
      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3389
      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3390
      this._offsets = [];
3391
      this._targets = [];
3392
      this._scrollHeight = this._getScrollHeight();
3393
      var targets = $$$1.makeArray($$$1(this._selector));
3394
      targets.map(function (element) {
3395
        var target;
3396
        var targetSelector = Util.getSelectorFromElement(element);
3397
3398
        if (targetSelector) {
3399
          target = $$$1(targetSelector)[0];
3400
        }
3401
3402
        if (target) {
3403
          var targetBCR = target.getBoundingClientRect();
3404
3405
          if (targetBCR.width || targetBCR.height) {
3406
            // TODO (fat): remove sketch reliance on jQuery position/offset
3407
            return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
3408
          }
3409
        }
3410
3411
        return null;
3412
      }).filter(function (item) {
3413
        return item;
3414
      }).sort(function (a, b) {
3415
        return a[0] - b[0];
3416
      }).forEach(function (item) {
3417
        _this2._offsets.push(item[0]);
3418
3419
        _this2._targets.push(item[1]);
3420
      });
3421
    };
3422
3423
    _proto.dispose = function dispose() {
3424
      $$$1.removeData(this._element, DATA_KEY);
3425
      $$$1(this._scrollElement).off(EVENT_KEY);
3426
      this._element = null;
3427
      this._scrollElement = null;
3428
      this._config = null;
3429
      this._selector = null;
3430
      this._offsets = null;
3431
      this._targets = null;
3432
      this._activeTarget = null;
3433
      this._scrollHeight = null;
3434
    }; // Private
3435
3436
3437
    _proto._getConfig = function _getConfig(config) {
3438
      config = _extends({}, Default, config);
3439
3440
      if (typeof config.target !== 'string') {
3441
        var id = $$$1(config.target).attr('id');
3442
3443
        if (!id) {
3444
          id = Util.getUID(NAME);
3445
          $$$1(config.target).attr('id', id);
3446
        }
3447
3448
        config.target = "#" + id;
3449
      }
3450
3451
      Util.typeCheckConfig(NAME, config, DefaultType);
3452
      return config;
3453
    };
3454
3455
    _proto._getScrollTop = function _getScrollTop() {
3456
      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3457
    };
3458
3459
    _proto._getScrollHeight = function _getScrollHeight() {
3460
      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3461
    };
3462
3463
    _proto._getOffsetHeight = function _getOffsetHeight() {
3464
      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3465
    };
3466
3467
    _proto._process = function _process() {
3468
      var scrollTop = this._getScrollTop() + this._config.offset;
3469
3470
      var scrollHeight = this._getScrollHeight();
3471
3472
      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3473
3474
      if (this._scrollHeight !== scrollHeight) {
3475
        this.refresh();
3476
      }
3477
3478
      if (scrollTop >= maxScroll) {
3479
        var target = this._targets[this._targets.length - 1];
3480
3481
        if (this._activeTarget !== target) {
3482
          this._activate(target);
3483
        }
3484
3485
        return;
3486
      }
3487
3488
      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3489
        this._activeTarget = null;
3490
3491
        this._clear();
3492
3493
        return;
3494
      }
3495
3496
      for (var i = this._offsets.length; i--;) {
3497
        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3498
3499
        if (isActiveTarget) {
3500
          this._activate(this._targets[i]);
3501
        }
3502
      }
3503
    };
3504
3505
    _proto._activate = function _activate(target) {
3506
      this._activeTarget = target;
3507
3508
      this._clear();
3509
3510
      var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
3511
3512
3513
      queries = queries.map(function (selector) {
3514
        return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
3515
      });
3516
      var $link = $$$1(queries.join(','));
3517
3518
      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
3519
        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3520
        $link.addClass(ClassName.ACTIVE);
3521
      } else {
3522
        // Set triggered link as active
3523
        $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
3524
        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3525
3526
        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3527
3528
        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
3529
      }
3530
3531
      $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
3532
        relatedTarget: target
3533
      });
3534
    };
3535
3536
    _proto._clear = function _clear() {
3537
      $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
3538
    }; // Static
3539
3540
3541
    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3542
      return this.each(function () {
3543
        var data = $$$1(this).data(DATA_KEY);
3544
3545
        var _config = typeof config === 'object' && config;
3546
3547
        if (!data) {
3548
          data = new ScrollSpy(this, _config);
3549
          $$$1(this).data(DATA_KEY, data);
3550
        }
3551
3552
        if (typeof config === 'string') {
3553
          if (typeof data[config] === 'undefined') {
3554
            throw new TypeError("No method named \"" + config + "\"");
3555
          }
3556
3557
          data[config]();
3558
        }
3559
      });
3560
    };
3561
3562
    _createClass(ScrollSpy, null, [{
3563
      key: "VERSION",
3564
      get: function get() {
3565
        return VERSION;
3566
      }
3567
    }, {
3568
      key: "Default",
3569
      get: function get() {
3570
        return Default;
3571
      }
3572
    }]);
3573
    return ScrollSpy;
3574
  }();
3575
  /**
3576
   * ------------------------------------------------------------------------
3577
   * Data Api implementation
3578
   * ------------------------------------------------------------------------
3579
   */
3580
3581
3582
  $$$1(window).on(Event.LOAD_DATA_API, function () {
3583
    var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
3584
3585
    for (var i = scrollSpys.length; i--;) {
3586
      var $spy = $$$1(scrollSpys[i]);
3587
3588
      ScrollSpy._jQueryInterface.call($spy, $spy.data());
3589
    }
3590
  });
3591
  /**
3592
   * ------------------------------------------------------------------------
3593
   * jQuery
3594
   * ------------------------------------------------------------------------
3595
   */
3596
3597
  $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
3598
  $$$1.fn[NAME].Constructor = ScrollSpy;
3599
3600
  $$$1.fn[NAME].noConflict = function () {
3601
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3602
    return ScrollSpy._jQueryInterface;
3603
  };
3604
3605
  return ScrollSpy;
3606
}($);
3607
3608
/**
3609
 * --------------------------------------------------------------------------
3610
 * Bootstrap (v4.0.0): tab.js
3611
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3612
 * --------------------------------------------------------------------------
3613
 */
3614
3615
var Tab = function ($$$1) {
3616
  /**
3617
   * ------------------------------------------------------------------------
3618
   * Constants
3619
   * ------------------------------------------------------------------------
3620
   */
3621
  var NAME = 'tab';
3622
  var VERSION = '4.0.0';
3623
  var DATA_KEY = 'bs.tab';
3624
  var EVENT_KEY = "." + DATA_KEY;
3625
  var DATA_API_KEY = '.data-api';
3626
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3627
  var TRANSITION_DURATION = 150;
3628
  var Event = {
3629
    HIDE: "hide" + EVENT_KEY,
3630
    HIDDEN: "hidden" + EVENT_KEY,
3631
    SHOW: "show" + EVENT_KEY,
3632
    SHOWN: "shown" + EVENT_KEY,
3633
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
3634
  };
3635
  var ClassName = {
3636
    DROPDOWN_MENU: 'dropdown-menu',
3637
    ACTIVE: 'active',
3638
    DISABLED: 'disabled',
3639
    FADE: 'fade',
3640
    SHOW: 'show'
3641
  };
3642
  var Selector = {
3643
    DROPDOWN: '.dropdown',
3644
    NAV_LIST_GROUP: '.nav, .list-group',
3645
    ACTIVE: '.active',
3646
    ACTIVE_UL: '> li > .active',
3647
    DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3648
    DROPDOWN_TOGGLE: '.dropdown-toggle',
3649
    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3650
    /**
3651
     * ------------------------------------------------------------------------
3652
     * Class Definition
3653
     * ------------------------------------------------------------------------
3654
     */
3655
3656
  };
3657
3658
  var Tab =
3659
  /*#__PURE__*/
3660
  function () {
3661
    function Tab(element) {
3662
      this._element = element;
3663
    } // Getters
3664
3665
3666
    var _proto = Tab.prototype;
3667
3668
    // Public
3669
    _proto.show = function show() {
3670
      var _this = this;
3671
3672
      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) {
3673
        return;
3674
      }
3675
3676
      var target;
3677
      var previous;
3678
      var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0];
3679
      var selector = Util.getSelectorFromElement(this._element);
3680
3681
      if (listElement) {
3682
        var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
3683
        previous = $$$1.makeArray($$$1(listElement).find(itemSelector));
3684
        previous = previous[previous.length - 1];
3685
      }
3686
3687
      var hideEvent = $$$1.Event(Event.HIDE, {
3688
        relatedTarget: this._element
3689
      });
3690
      var showEvent = $$$1.Event(Event.SHOW, {
3691
        relatedTarget: previous
3692
      });
3693
3694
      if (previous) {
3695
        $$$1(previous).trigger(hideEvent);
3696
      }
3697
3698
      $$$1(this._element).trigger(showEvent);
3699
3700
      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
3701
        return;
3702
      }
3703
3704
      if (selector) {
3705
        target = $$$1(selector)[0];
3706
      }
3707
3708
      this._activate(this._element, listElement);
3709
3710
      var complete = function complete() {
3711
        var hiddenEvent = $$$1.Event(Event.HIDDEN, {
3712
          relatedTarget: _this._element
3713
        });
3714
        var shownEvent = $$$1.Event(Event.SHOWN, {
3715
          relatedTarget: previous
3716
        });
3717
        $$$1(previous).trigger(hiddenEvent);
3718
        $$$1(_this._element).trigger(shownEvent);
3719
      };
3720
3721
      if (target) {
3722
        this._activate(target, target.parentNode, complete);
3723
      } else {
3724
        complete();
3725
      }
3726
    };
3727
3728
    _proto.dispose = function dispose() {
3729
      $$$1.removeData(this._element, DATA_KEY);
3730
      this._element = null;
3731
    }; // Private
3732
3733
3734
    _proto._activate = function _activate(element, container, callback) {
3735
      var _this2 = this;
3736
3737
      var activeElements;
3738
3739
      if (container.nodeName === 'UL') {
3740
        activeElements = $$$1(container).find(Selector.ACTIVE_UL);
3741
      } else {
3742
        activeElements = $$$1(container).children(Selector.ACTIVE);
3743
      }
3744
3745
      var active = activeElements[0];
3746
      var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE);
3747
3748
      var complete = function complete() {
3749
        return _this2._transitionComplete(element, active, callback);
3750
      };
3751
3752
      if (active && isTransitioning) {
3753
        $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
3754
      } else {
3755
        complete();
3756
      }
3757
    };
3758
3759
    _proto._transitionComplete = function _transitionComplete(element, active, callback) {
3760
      if (active) {
3761
        $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
3762
        var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
3763
3764
        if (dropdownChild) {
3765
          $$$1(dropdownChild).removeClass(ClassName.ACTIVE);
3766
        }
3767
3768
        if (active.getAttribute('role') === 'tab') {
3769
          active.setAttribute('aria-selected', false);
3770
        }
3771
      }
3772
3773
      $$$1(element).addClass(ClassName.ACTIVE);
3774
3775
      if (element.getAttribute('role') === 'tab') {
3776
        element.setAttribute('aria-selected', true);
3777
      }
3778
3779
      Util.reflow(element);
3780
      $$$1(element).addClass(ClassName.SHOW);
3781
3782
      if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
3783
        var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
3784
3785
        if (dropdownElement) {
3786
          $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3787
        }
3788
3789
        element.setAttribute('aria-expanded', true);
3790
      }
3791
3792
      if (callback) {
3793
        callback();
3794
      }
3795
    }; // Static
3796
3797
3798
    Tab._jQueryInterface = function _jQueryInterface(config) {
3799
      return this.each(function () {
3800
        var $this = $$$1(this);
3801
        var data = $this.data(DATA_KEY);
3802
3803
        if (!data) {
3804
          data = new Tab(this);
3805
          $this.data(DATA_KEY, data);
3806
        }
3807
3808
        if (typeof config === 'string') {
3809
          if (typeof data[config] === 'undefined') {
3810
            throw new TypeError("No method named \"" + config + "\"");
3811
          }
3812
3813
          data[config]();
3814
        }
3815
      });
3816
    };
3817
3818
    _createClass(Tab, null, [{
3819
      key: "VERSION",
3820
      get: function get() {
3821
        return VERSION;
3822
      }
3823
    }]);
3824
    return Tab;
3825
  }();
3826
  /**
3827
   * ------------------------------------------------------------------------
3828
   * Data Api implementation
3829
   * ------------------------------------------------------------------------
3830
   */
3831
3832
3833
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
3834
    event.preventDefault();
3835
3836
    Tab._jQueryInterface.call($$$1(this), 'show');
3837
  });
3838
  /**
3839
   * ------------------------------------------------------------------------
3840
   * jQuery
3841
   * ------------------------------------------------------------------------
3842
   */
3843
3844
  $$$1.fn[NAME] = Tab._jQueryInterface;
3845
  $$$1.fn[NAME].Constructor = Tab;
3846
3847
  $$$1.fn[NAME].noConflict = function () {
3848
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3849
    return Tab._jQueryInterface;
3850
  };
3851
3852
  return Tab;
3853
}($);
3854
3855
/**
3856
 * --------------------------------------------------------------------------
3857
 * Bootstrap (v4.0.0-alpha.6): index.js
3858
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3859
 * --------------------------------------------------------------------------
3860
 */
3861
3862
(function ($$$1) {
3863
  if (typeof $$$1 === 'undefined') {
3864
    throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
3865
  }
3866
3867
  var version = $$$1.fn.jquery.split(' ')[0].split('.');
3868
  var minMajor = 1;
3869
  var ltMajor = 2;
3870
  var minMinor = 9;
3871
  var minPatch = 1;
3872
  var maxMajor = 4;
3873
3874
  if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
3875
    throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
3876
  }
3877
})($);
3878
3879
exports.Util = Util;
3880
exports.Alert = Alert;
3881
exports.Button = Button;
3882
exports.Carousel = Carousel;
3883
exports.Collapse = Collapse;
3884
exports.Dropdown = Dropdown;
3885
exports.Modal = Modal;
3886
exports.Popover = Popover;
3887
exports.Scrollspy = ScrollSpy;
3888
exports.Tab = Tab;
3889
exports.Tooltip = Tooltip;
3890
3891
Object.defineProperty(exports, '__esModule', { value: true });
3892
3893
})));
3894
//# sourceMappingURL=bootstrap.js.map
3895

public/js/auth/bootstrap.js 1 location

@@ 6-3893 (lines=3888) @@
3
  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
  */
6
(function (global, factory) {
7
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8
	typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9
	(factory((global.bootstrap = {}),global.jQuery,global.Popper));
10
}(this, (function (exports,$,Popper) { 'use strict';
11
12
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
15
function _defineProperties(target, props) {
16
  for (var i = 0; i < props.length; i++) {
17
    var descriptor = props[i];
18
    descriptor.enumerable = descriptor.enumerable || false;
19
    descriptor.configurable = true;
20
    if ("value" in descriptor) descriptor.writable = true;
21
    Object.defineProperty(target, descriptor.key, descriptor);
22
  }
23
}
24
25
function _createClass(Constructor, protoProps, staticProps) {
26
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
  if (staticProps) _defineProperties(Constructor, staticProps);
28
  return Constructor;
29
}
30
31
function _extends() {
32
  _extends = Object.assign || function (target) {
33
    for (var i = 1; i < arguments.length; i++) {
34
      var source = arguments[i];
35
36
      for (var key in source) {
37
        if (Object.prototype.hasOwnProperty.call(source, key)) {
38
          target[key] = source[key];
39
        }
40
      }
41
    }
42
43
    return target;
44
  };
45
46
  return _extends.apply(this, arguments);
47
}
48
49
function _inheritsLoose(subClass, superClass) {
50
  subClass.prototype = Object.create(superClass.prototype);
51
  subClass.prototype.constructor = subClass;
52
  subClass.__proto__ = superClass;
53
}
54
55
/**
56
 * --------------------------------------------------------------------------
57
 * Bootstrap (v4.0.0): util.js
58
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
59
 * --------------------------------------------------------------------------
60
 */
61
62
var Util = function ($$$1) {
63
  /**
64
   * ------------------------------------------------------------------------
65
   * Private TransitionEnd Helpers
66
   * ------------------------------------------------------------------------
67
   */
68
  var transition = false;
69
  var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
70
71
  function toType(obj) {
72
    return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
73
  }
74
75
  function getSpecialTransitionEndEvent() {
76
    return {
77
      bindType: transition.end,
78
      delegateType: transition.end,
79
      handle: function handle(event) {
80
        if ($$$1(event.target).is(this)) {
81
          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
82
        }
83
84
        return undefined; // eslint-disable-line no-undefined
85
      }
86
    };
87
  }
88
89
  function transitionEndTest() {
90
    if (typeof window !== 'undefined' && window.QUnit) {
91
      return false;
92
    }
93
94
    return {
95
      end: 'transitionend'
96
    };
97
  }
98
99
  function transitionEndEmulator(duration) {
100
    var _this = this;
101
102
    var called = false;
103
    $$$1(this).one(Util.TRANSITION_END, function () {
104
      called = true;
105
    });
106
    setTimeout(function () {
107
      if (!called) {
108
        Util.triggerTransitionEnd(_this);
109
      }
110
    }, duration);
111
    return this;
112
  }
113
114
  function setTransitionEndSupport() {
115
    transition = transitionEndTest();
116
    $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
117
118
    if (Util.supportsTransitionEnd()) {
119
      $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
120
    }
121
  }
122
123
  function escapeId(selector) {
124
    // We escape IDs in case of special selectors (selector = '#myId:something')
125
    // $.escapeSelector does not exist in jQuery < 3
126
    selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1');
127
    return selector;
128
  }
129
  /**
130
   * --------------------------------------------------------------------------
131
   * Public Util Api
132
   * --------------------------------------------------------------------------
133
   */
134
135
136
  var Util = {
137
    TRANSITION_END: 'bsTransitionEnd',
138
    getUID: function getUID(prefix) {
139
      do {
140
        // eslint-disable-next-line no-bitwise
141
        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
142
      } while (document.getElementById(prefix));
143
144
      return prefix;
145
    },
146
    getSelectorFromElement: function getSelectorFromElement(element) {
147
      var selector = element.getAttribute('data-target');
148
149
      if (!selector || selector === '#') {
150
        selector = element.getAttribute('href') || '';
151
      } // If it's an ID
152
153
154
      if (selector.charAt(0) === '#') {
155
        selector = escapeId(selector);
156
      }
157
158
      try {
159
        var $selector = $$$1(document).find(selector);
160
        return $selector.length > 0 ? selector : null;
161
      } catch (err) {
162
        return null;
163
      }
164
    },
165
    reflow: function reflow(element) {
166
      return element.offsetHeight;
167
    },
168
    triggerTransitionEnd: function triggerTransitionEnd(element) {
169
      $$$1(element).trigger(transition.end);
170
    },
171
    supportsTransitionEnd: function supportsTransitionEnd() {
172
      return Boolean(transition);
173
    },
174
    isElement: function isElement(obj) {
175
      return (obj[0] || obj).nodeType;
176
    },
177
    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
178
      for (var property in configTypes) {
179
        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
180
          var expectedTypes = configTypes[property];
181
          var value = config[property];
182
          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
183
184
          if (!new RegExp(expectedTypes).test(valueType)) {
185
            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
186
          }
187
        }
188
      }
189
    }
190
  };
191
  setTransitionEndSupport();
192
  return Util;
193
}($);
194
195
/**
196
 * --------------------------------------------------------------------------
197
 * Bootstrap (v4.0.0): alert.js
198
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
199
 * --------------------------------------------------------------------------
200
 */
201
202
var Alert = function ($$$1) {
203
  /**
204
   * ------------------------------------------------------------------------
205
   * Constants
206
   * ------------------------------------------------------------------------
207
   */
208
  var NAME = 'alert';
209
  var VERSION = '4.0.0';
210
  var DATA_KEY = 'bs.alert';
211
  var EVENT_KEY = "." + DATA_KEY;
212
  var DATA_API_KEY = '.data-api';
213
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
214
  var TRANSITION_DURATION = 150;
215
  var Selector = {
216
    DISMISS: '[data-dismiss="alert"]'
217
  };
218
  var Event = {
219
    CLOSE: "close" + EVENT_KEY,
220
    CLOSED: "closed" + EVENT_KEY,
221
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
222
  };
223
  var ClassName = {
224
    ALERT: 'alert',
225
    FADE: 'fade',
226
    SHOW: 'show'
227
    /**
228
     * ------------------------------------------------------------------------
229
     * Class Definition
230
     * ------------------------------------------------------------------------
231
     */
232
233
  };
234
235
  var Alert =
236
  /*#__PURE__*/
237
  function () {
238
    function Alert(element) {
239
      this._element = element;
240
    } // Getters
241
242
243
    var _proto = Alert.prototype;
244
245
    // Public
246
    _proto.close = function close(element) {
247
      element = element || this._element;
248
249
      var rootElement = this._getRootElement(element);
250
251
      var customEvent = this._triggerCloseEvent(rootElement);
252
253
      if (customEvent.isDefaultPrevented()) {
254
        return;
255
      }
256
257
      this._removeElement(rootElement);
258
    };
259
260
    _proto.dispose = function dispose() {
261
      $$$1.removeData(this._element, DATA_KEY);
262
      this._element = null;
263
    }; // Private
264
265
266
    _proto._getRootElement = function _getRootElement(element) {
267
      var selector = Util.getSelectorFromElement(element);
268
      var parent = false;
269
270
      if (selector) {
271
        parent = $$$1(selector)[0];
272
      }
273
274
      if (!parent) {
275
        parent = $$$1(element).closest("." + ClassName.ALERT)[0];
276
      }
277
278
      return parent;
279
    };
280
281
    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
282
      var closeEvent = $$$1.Event(Event.CLOSE);
283
      $$$1(element).trigger(closeEvent);
284
      return closeEvent;
285
    };
286
287
    _proto._removeElement = function _removeElement(element) {
288
      var _this = this;
289
290
      $$$1(element).removeClass(ClassName.SHOW);
291
292
      if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) {
293
        this._destroyElement(element);
294
295
        return;
296
      }
297
298
      $$$1(element).one(Util.TRANSITION_END, function (event) {
299
        return _this._destroyElement(element, event);
300
      }).emulateTransitionEnd(TRANSITION_DURATION);
301
    };
302
303
    _proto._destroyElement = function _destroyElement(element) {
304
      $$$1(element).detach().trigger(Event.CLOSED).remove();
305
    }; // Static
306
307
308
    Alert._jQueryInterface = function _jQueryInterface(config) {
309
      return this.each(function () {
310
        var $element = $$$1(this);
311
        var data = $element.data(DATA_KEY);
312
313
        if (!data) {
314
          data = new Alert(this);
315
          $element.data(DATA_KEY, data);
316
        }
317
318
        if (config === 'close') {
319
          data[config](this);
320
        }
321
      });
322
    };
323
324
    Alert._handleDismiss = function _handleDismiss(alertInstance) {
325
      return function (event) {
326
        if (event) {
327
          event.preventDefault();
328
        }
329
330
        alertInstance.close(this);
331
      };
332
    };
333
334
    _createClass(Alert, null, [{
335
      key: "VERSION",
336
      get: function get() {
337
        return VERSION;
338
      }
339
    }]);
340
    return Alert;
341
  }();
342
  /**
343
   * ------------------------------------------------------------------------
344
   * Data Api implementation
345
   * ------------------------------------------------------------------------
346
   */
347
348
349
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
350
  /**
351
   * ------------------------------------------------------------------------
352
   * jQuery
353
   * ------------------------------------------------------------------------
354
   */
355
356
  $$$1.fn[NAME] = Alert._jQueryInterface;
357
  $$$1.fn[NAME].Constructor = Alert;
358
359
  $$$1.fn[NAME].noConflict = function () {
360
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
361
    return Alert._jQueryInterface;
362
  };
363
364
  return Alert;
365
}($);
366
367
/**
368
 * --------------------------------------------------------------------------
369
 * Bootstrap (v4.0.0): button.js
370
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
371
 * --------------------------------------------------------------------------
372
 */
373
374
var Button = function ($$$1) {
375
  /**
376
   * ------------------------------------------------------------------------
377
   * Constants
378
   * ------------------------------------------------------------------------
379
   */
380
  var NAME = 'button';
381
  var VERSION = '4.0.0';
382
  var DATA_KEY = 'bs.button';
383
  var EVENT_KEY = "." + DATA_KEY;
384
  var DATA_API_KEY = '.data-api';
385
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
386
  var ClassName = {
387
    ACTIVE: 'active',
388
    BUTTON: 'btn',
389
    FOCUS: 'focus'
390
  };
391
  var Selector = {
392
    DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
393
    DATA_TOGGLE: '[data-toggle="buttons"]',
394
    INPUT: 'input',
395
    ACTIVE: '.active',
396
    BUTTON: '.btn'
397
  };
398
  var Event = {
399
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
400
    FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
401
    /**
402
     * ------------------------------------------------------------------------
403
     * Class Definition
404
     * ------------------------------------------------------------------------
405
     */
406
407
  };
408
409
  var Button =
410
  /*#__PURE__*/
411
  function () {
412
    function Button(element) {
413
      this._element = element;
414
    } // Getters
415
416
417
    var _proto = Button.prototype;
418
419
    // Public
420
    _proto.toggle = function toggle() {
421
      var triggerChangeEvent = true;
422
      var addAriaPressed = true;
423
      var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
424
425
      if (rootElement) {
426
        var input = $$$1(this._element).find(Selector.INPUT)[0];
427
428
        if (input) {
429
          if (input.type === 'radio') {
430
            if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
431
              triggerChangeEvent = false;
432
            } else {
433
              var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
434
435
              if (activeElement) {
436
                $$$1(activeElement).removeClass(ClassName.ACTIVE);
437
              }
438
            }
439
          }
440
441
          if (triggerChangeEvent) {
442
            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
443
              return;
444
            }
445
446
            input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
447
            $$$1(input).trigger('change');
448
          }
449
450
          input.focus();
451
          addAriaPressed = false;
452
        }
453
      }
454
455
      if (addAriaPressed) {
456
        this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
457
      }
458
459
      if (triggerChangeEvent) {
460
        $$$1(this._element).toggleClass(ClassName.ACTIVE);
461
      }
462
    };
463
464
    _proto.dispose = function dispose() {
465
      $$$1.removeData(this._element, DATA_KEY);
466
      this._element = null;
467
    }; // Static
468
469
470
    Button._jQueryInterface = function _jQueryInterface(config) {
471
      return this.each(function () {
472
        var data = $$$1(this).data(DATA_KEY);
473
474
        if (!data) {
475
          data = new Button(this);
476
          $$$1(this).data(DATA_KEY, data);
477
        }
478
479
        if (config === 'toggle') {
480
          data[config]();
481
        }
482
      });
483
    };
484
485
    _createClass(Button, null, [{
486
      key: "VERSION",
487
      get: function get() {
488
        return VERSION;
489
      }
490
    }]);
491
    return Button;
492
  }();
493
  /**
494
   * ------------------------------------------------------------------------
495
   * Data Api implementation
496
   * ------------------------------------------------------------------------
497
   */
498
499
500
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
501
    event.preventDefault();
502
    var button = event.target;
503
504
    if (!$$$1(button).hasClass(ClassName.BUTTON)) {
505
      button = $$$1(button).closest(Selector.BUTTON);
506
    }
507
508
    Button._jQueryInterface.call($$$1(button), 'toggle');
509
  }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
510
    var button = $$$1(event.target).closest(Selector.BUTTON)[0];
511
    $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
512
  });
513
  /**
514
   * ------------------------------------------------------------------------
515
   * jQuery
516
   * ------------------------------------------------------------------------
517
   */
518
519
  $$$1.fn[NAME] = Button._jQueryInterface;
520
  $$$1.fn[NAME].Constructor = Button;
521
522
  $$$1.fn[NAME].noConflict = function () {
523
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
524
    return Button._jQueryInterface;
525
  };
526
527
  return Button;
528
}($);
529
530
/**
531
 * --------------------------------------------------------------------------
532
 * Bootstrap (v4.0.0): carousel.js
533
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
534
 * --------------------------------------------------------------------------
535
 */
536
537
var Carousel = function ($$$1) {
538
  /**
539
   * ------------------------------------------------------------------------
540
   * Constants
541
   * ------------------------------------------------------------------------
542
   */
543
  var NAME = 'carousel';
544
  var VERSION = '4.0.0';
545
  var DATA_KEY = 'bs.carousel';
546
  var EVENT_KEY = "." + DATA_KEY;
547
  var DATA_API_KEY = '.data-api';
548
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
549
  var TRANSITION_DURATION = 600;
550
  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
551
552
  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
553
554
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
555
556
  var Default = {
557
    interval: 5000,
558
    keyboard: true,
559
    slide: false,
560
    pause: 'hover',
561
    wrap: true
562
  };
563
  var DefaultType = {
564
    interval: '(number|boolean)',
565
    keyboard: 'boolean',
566
    slide: '(boolean|string)',
567
    pause: '(string|boolean)',
568
    wrap: 'boolean'
569
  };
570
  var Direction = {
571
    NEXT: 'next',
572
    PREV: 'prev',
573
    LEFT: 'left',
574
    RIGHT: 'right'
575
  };
576
  var Event = {
577
    SLIDE: "slide" + EVENT_KEY,
578
    SLID: "slid" + EVENT_KEY,
579
    KEYDOWN: "keydown" + EVENT_KEY,
580
    MOUSEENTER: "mouseenter" + EVENT_KEY,
581
    MOUSELEAVE: "mouseleave" + EVENT_KEY,
582
    TOUCHEND: "touchend" + EVENT_KEY,
583
    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
584
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
585
  };
586
  var ClassName = {
587
    CAROUSEL: 'carousel',
588
    ACTIVE: 'active',
589
    SLIDE: 'slide',
590
    RIGHT: 'carousel-item-right',
591
    LEFT: 'carousel-item-left',
592
    NEXT: 'carousel-item-next',
593
    PREV: 'carousel-item-prev',
594
    ITEM: 'carousel-item'
595
  };
596
  var Selector = {
597
    ACTIVE: '.active',
598
    ACTIVE_ITEM: '.active.carousel-item',
599
    ITEM: '.carousel-item',
600
    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
601
    INDICATORS: '.carousel-indicators',
602
    DATA_SLIDE: '[data-slide], [data-slide-to]',
603
    DATA_RIDE: '[data-ride="carousel"]'
604
    /**
605
     * ------------------------------------------------------------------------
606
     * Class Definition
607
     * ------------------------------------------------------------------------
608
     */
609
610
  };
611
612
  var Carousel =
613
  /*#__PURE__*/
614
  function () {
615
    function Carousel(element, config) {
616
      this._items = null;
617
      this._interval = null;
618
      this._activeElement = null;
619
      this._isPaused = false;
620
      this._isSliding = false;
621
      this.touchTimeout = null;
622
      this._config = this._getConfig(config);
623
      this._element = $$$1(element)[0];
624
      this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
625
626
      this._addEventListeners();
627
    } // Getters
628
629
630
    var _proto = Carousel.prototype;
631
632
    // Public
633
    _proto.next = function next() {
634
      if (!this._isSliding) {
635
        this._slide(Direction.NEXT);
636
      }
637
    };
638
639
    _proto.nextWhenVisible = function nextWhenVisible() {
640
      // Don't call next when the page isn't visible
641
      // or the carousel or its parent isn't visible
642
      if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
643
        this.next();
644
      }
645
    };
646
647
    _proto.prev = function prev() {
648
      if (!this._isSliding) {
649
        this._slide(Direction.PREV);
650
      }
651
    };
652
653
    _proto.pause = function pause(event) {
654
      if (!event) {
655
        this._isPaused = true;
656
      }
657
658
      if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
659
        Util.triggerTransitionEnd(this._element);
660
        this.cycle(true);
661
      }
662
663
      clearInterval(this._interval);
664
      this._interval = null;
665
    };
666
667
    _proto.cycle = function cycle(event) {
668
      if (!event) {
669
        this._isPaused = false;
670
      }
671
672
      if (this._interval) {
673
        clearInterval(this._interval);
674
        this._interval = null;
675
      }
676
677
      if (this._config.interval && !this._isPaused) {
678
        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
679
      }
680
    };
681
682
    _proto.to = function to(index) {
683
      var _this = this;
684
685
      this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
686
687
      var activeIndex = this._getItemIndex(this._activeElement);
688
689
      if (index > this._items.length - 1 || index < 0) {
690
        return;
691
      }
692
693
      if (this._isSliding) {
694
        $$$1(this._element).one(Event.SLID, function () {
695
          return _this.to(index);
696
        });
697
        return;
698
      }
699
700
      if (activeIndex === index) {
701
        this.pause();
702
        this.cycle();
703
        return;
704
      }
705
706
      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
707
708
      this._slide(direction, this._items[index]);
709
    };
710
711
    _proto.dispose = function dispose() {
712
      $$$1(this._element).off(EVENT_KEY);
713
      $$$1.removeData(this._element, DATA_KEY);
714
      this._items = null;
715
      this._config = null;
716
      this._element = null;
717
      this._interval = null;
718
      this._isPaused = null;
719
      this._isSliding = null;
720
      this._activeElement = null;
721
      this._indicatorsElement = null;
722
    }; // Private
723
724
725
    _proto._getConfig = function _getConfig(config) {
726
      config = _extends({}, Default, config);
727
      Util.typeCheckConfig(NAME, config, DefaultType);
728
      return config;
729
    };
730
731
    _proto._addEventListeners = function _addEventListeners() {
732
      var _this2 = this;
733
734
      if (this._config.keyboard) {
735
        $$$1(this._element).on(Event.KEYDOWN, function (event) {
736
          return _this2._keydown(event);
737
        });
738
      }
739
740
      if (this._config.pause === 'hover') {
741
        $$$1(this._element).on(Event.MOUSEENTER, function (event) {
742
          return _this2.pause(event);
743
        }).on(Event.MOUSELEAVE, function (event) {
744
          return _this2.cycle(event);
745
        });
746
747
        if ('ontouchstart' in document.documentElement) {
748
          // If it's a touch-enabled device, mouseenter/leave are fired as
749
          // part of the mouse compatibility events on first tap - the carousel
750
          // would stop cycling until user tapped out of it;
751
          // here, we listen for touchend, explicitly pause the carousel
752
          // (as if it's the second time we tap on it, mouseenter compat event
753
          // is NOT fired) and after a timeout (to allow for mouse compatibility
754
          // events to fire) we explicitly restart cycling
755
          $$$1(this._element).on(Event.TOUCHEND, function () {
756
            _this2.pause();
757
758
            if (_this2.touchTimeout) {
759
              clearTimeout(_this2.touchTimeout);
760
            }
761
762
            _this2.touchTimeout = setTimeout(function (event) {
763
              return _this2.cycle(event);
764
            }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
765
          });
766
        }
767
      }
768
    };
769
770
    _proto._keydown = function _keydown(event) {
771
      if (/input|textarea/i.test(event.target.tagName)) {
772
        return;
773
      }
774
775
      switch (event.which) {
776
        case ARROW_LEFT_KEYCODE:
777
          event.preventDefault();
778
          this.prev();
779
          break;
780
781
        case ARROW_RIGHT_KEYCODE:
782
          event.preventDefault();
783
          this.next();
784
          break;
785
786
        default:
787
      }
788
    };
789
790
    _proto._getItemIndex = function _getItemIndex(element) {
791
      this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
792
      return this._items.indexOf(element);
793
    };
794
795
    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
796
      var isNextDirection = direction === Direction.NEXT;
797
      var isPrevDirection = direction === Direction.PREV;
798
799
      var activeIndex = this._getItemIndex(activeElement);
800
801
      var lastItemIndex = this._items.length - 1;
802
      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
803
804
      if (isGoingToWrap && !this._config.wrap) {
805
        return activeElement;
806
      }
807
808
      var delta = direction === Direction.PREV ? -1 : 1;
809
      var itemIndex = (activeIndex + delta) % this._items.length;
810
      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
811
    };
812
813
    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
814
      var targetIndex = this._getItemIndex(relatedTarget);
815
816
      var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
817
818
      var slideEvent = $$$1.Event(Event.SLIDE, {
819
        relatedTarget: relatedTarget,
820
        direction: eventDirectionName,
821
        from: fromIndex,
822
        to: targetIndex
823
      });
824
      $$$1(this._element).trigger(slideEvent);
825
      return slideEvent;
826
    };
827
828
    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
829
      if (this._indicatorsElement) {
830
        $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
831
832
        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
833
834
        if (nextIndicator) {
835
          $$$1(nextIndicator).addClass(ClassName.ACTIVE);
836
        }
837
      }
838
    };
839
840
    _proto._slide = function _slide(direction, element) {
841
      var _this3 = this;
842
843
      var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
844
845
      var activeElementIndex = this._getItemIndex(activeElement);
846
847
      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
848
849
      var nextElementIndex = this._getItemIndex(nextElement);
850
851
      var isCycling = Boolean(this._interval);
852
      var directionalClassName;
853
      var orderClassName;
854
      var eventDirectionName;
855
856
      if (direction === Direction.NEXT) {
857
        directionalClassName = ClassName.LEFT;
858
        orderClassName = ClassName.NEXT;
859
        eventDirectionName = Direction.LEFT;
860
      } else {
861
        directionalClassName = ClassName.RIGHT;
862
        orderClassName = ClassName.PREV;
863
        eventDirectionName = Direction.RIGHT;
864
      }
865
866
      if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
867
        this._isSliding = false;
868
        return;
869
      }
870
871
      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
872
873
      if (slideEvent.isDefaultPrevented()) {
874
        return;
875
      }
876
877
      if (!activeElement || !nextElement) {
878
        // Some weirdness is happening, so we bail
879
        return;
880
      }
881
882
      this._isSliding = true;
883
884
      if (isCycling) {
885
        this.pause();
886
      }
887
888
      this._setActiveIndicatorElement(nextElement);
889
890
      var slidEvent = $$$1.Event(Event.SLID, {
891
        relatedTarget: nextElement,
892
        direction: eventDirectionName,
893
        from: activeElementIndex,
894
        to: nextElementIndex
895
      });
896
897
      if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) {
898
        $$$1(nextElement).addClass(orderClassName);
899
        Util.reflow(nextElement);
900
        $$$1(activeElement).addClass(directionalClassName);
901
        $$$1(nextElement).addClass(directionalClassName);
902
        $$$1(activeElement).one(Util.TRANSITION_END, function () {
903
          $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
904
          $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
905
          _this3._isSliding = false;
906
          setTimeout(function () {
907
            return $$$1(_this3._element).trigger(slidEvent);
908
          }, 0);
909
        }).emulateTransitionEnd(TRANSITION_DURATION);
910
      } else {
911
        $$$1(activeElement).removeClass(ClassName.ACTIVE);
912
        $$$1(nextElement).addClass(ClassName.ACTIVE);
913
        this._isSliding = false;
914
        $$$1(this._element).trigger(slidEvent);
915
      }
916
917
      if (isCycling) {
918
        this.cycle();
919
      }
920
    }; // Static
921
922
923
    Carousel._jQueryInterface = function _jQueryInterface(config) {
924
      return this.each(function () {
925
        var data = $$$1(this).data(DATA_KEY);
926
927
        var _config = _extends({}, Default, $$$1(this).data());
928
929
        if (typeof config === 'object') {
930
          _config = _extends({}, _config, config);
931
        }
932
933
        var action = typeof config === 'string' ? config : _config.slide;
934
935
        if (!data) {
936
          data = new Carousel(this, _config);
937
          $$$1(this).data(DATA_KEY, data);
938
        }
939
940
        if (typeof config === 'number') {
941
          data.to(config);
942
        } else if (typeof action === 'string') {
943
          if (typeof data[action] === 'undefined') {
944
            throw new TypeError("No method named \"" + action + "\"");
945
          }
946
947
          data[action]();
948
        } else if (_config.interval) {
949
          data.pause();
950
          data.cycle();
951
        }
952
      });
953
    };
954
955
    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
956
      var selector = Util.getSelectorFromElement(this);
957
958
      if (!selector) {
959
        return;
960
      }
961
962
      var target = $$$1(selector)[0];
963
964
      if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
965
        return;
966
      }
967
968
      var config = _extends({}, $$$1(target).data(), $$$1(this).data());
969
      var slideIndex = this.getAttribute('data-slide-to');
970
971
      if (slideIndex) {
972
        config.interval = false;
973
      }
974
975
      Carousel._jQueryInterface.call($$$1(target), config);
976
977
      if (slideIndex) {
978
        $$$1(target).data(DATA_KEY).to(slideIndex);
979
      }
980
981
      event.preventDefault();
982
    };
983
984
    _createClass(Carousel, null, [{
985
      key: "VERSION",
986
      get: function get() {
987
        return VERSION;
988
      }
989
    }, {
990
      key: "Default",
991
      get: function get() {
992
        return Default;
993
      }
994
    }]);
995
    return Carousel;
996
  }();
997
  /**
998
   * ------------------------------------------------------------------------
999
   * Data Api implementation
1000
   * ------------------------------------------------------------------------
1001
   */
1002
1003
1004
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
1005
  $$$1(window).on(Event.LOAD_DATA_API, function () {
1006
    $$$1(Selector.DATA_RIDE).each(function () {
1007
      var $carousel = $$$1(this);
1008
1009
      Carousel._jQueryInterface.call($carousel, $carousel.data());
1010
    });
1011
  });
1012
  /**
1013
   * ------------------------------------------------------------------------
1014
   * jQuery
1015
   * ------------------------------------------------------------------------
1016
   */
1017
1018
  $$$1.fn[NAME] = Carousel._jQueryInterface;
1019
  $$$1.fn[NAME].Constructor = Carousel;
1020
1021
  $$$1.fn[NAME].noConflict = function () {
1022
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1023
    return Carousel._jQueryInterface;
1024
  };
1025
1026
  return Carousel;
1027
}($);
1028
1029
/**
1030
 * --------------------------------------------------------------------------
1031
 * Bootstrap (v4.0.0): collapse.js
1032
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1033
 * --------------------------------------------------------------------------
1034
 */
1035
1036
var Collapse = function ($$$1) {
1037
  /**
1038
   * ------------------------------------------------------------------------
1039
   * Constants
1040
   * ------------------------------------------------------------------------
1041
   */
1042
  var NAME = 'collapse';
1043
  var VERSION = '4.0.0';
1044
  var DATA_KEY = 'bs.collapse';
1045
  var EVENT_KEY = "." + DATA_KEY;
1046
  var DATA_API_KEY = '.data-api';
1047
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1048
  var TRANSITION_DURATION = 600;
1049
  var Default = {
1050
    toggle: true,
1051
    parent: ''
1052
  };
1053
  var DefaultType = {
1054
    toggle: 'boolean',
1055
    parent: '(string|element)'
1056
  };
1057
  var Event = {
1058
    SHOW: "show" + EVENT_KEY,
1059
    SHOWN: "shown" + EVENT_KEY,
1060
    HIDE: "hide" + EVENT_KEY,
1061
    HIDDEN: "hidden" + EVENT_KEY,
1062
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1063
  };
1064
  var ClassName = {
1065
    SHOW: 'show',
1066
    COLLAPSE: 'collapse',
1067
    COLLAPSING: 'collapsing',
1068
    COLLAPSED: 'collapsed'
1069
  };
1070
  var Dimension = {
1071
    WIDTH: 'width',
1072
    HEIGHT: 'height'
1073
  };
1074
  var Selector = {
1075
    ACTIVES: '.show, .collapsing',
1076
    DATA_TOGGLE: '[data-toggle="collapse"]'
1077
    /**
1078
     * ------------------------------------------------------------------------
1079
     * Class Definition
1080
     * ------------------------------------------------------------------------
1081
     */
1082
1083
  };
1084
1085
  var Collapse =
1086
  /*#__PURE__*/
1087
  function () {
1088
    function Collapse(element, config) {
1089
      this._isTransitioning = false;
1090
      this._element = element;
1091
      this._config = this._getConfig(config);
1092
      this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1093
      var tabToggles = $$$1(Selector.DATA_TOGGLE);
1094
1095
      for (var i = 0; i < tabToggles.length; i++) {
1096
        var elem = tabToggles[i];
1097
        var selector = Util.getSelectorFromElement(elem);
1098
1099
        if (selector !== null && $$$1(selector).filter(element).length > 0) {
1100
          this._selector = selector;
1101
1102
          this._triggerArray.push(elem);
1103
        }
1104
      }
1105
1106
      this._parent = this._config.parent ? this._getParent() : null;
1107
1108
      if (!this._config.parent) {
1109
        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1110
      }
1111
1112
      if (this._config.toggle) {
1113
        this.toggle();
1114
      }
1115
    } // Getters
1116
1117
1118
    var _proto = Collapse.prototype;
1119
1120
    // Public
1121
    _proto.toggle = function toggle() {
1122
      if ($$$1(this._element).hasClass(ClassName.SHOW)) {
1123
        this.hide();
1124
      } else {
1125
        this.show();
1126
      }
1127
    };
1128
1129
    _proto.show = function show() {
1130
      var _this = this;
1131
1132
      if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
1133
        return;
1134
      }
1135
1136
      var actives;
1137
      var activesData;
1138
1139
      if (this._parent) {
1140
        actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
1141
1142
        if (actives.length === 0) {
1143
          actives = null;
1144
        }
1145
      }
1146
1147
      if (actives) {
1148
        activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
1149
1150
        if (activesData && activesData._isTransitioning) {
1151
          return;
1152
        }
1153
      }
1154
1155
      var startEvent = $$$1.Event(Event.SHOW);
1156
      $$$1(this._element).trigger(startEvent);
1157
1158
      if (startEvent.isDefaultPrevented()) {
1159
        return;
1160
      }
1161
1162
      if (actives) {
1163
        Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
1164
1165
        if (!activesData) {
1166
          $$$1(actives).data(DATA_KEY, null);
1167
        }
1168
      }
1169
1170
      var dimension = this._getDimension();
1171
1172
      $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
1173
      this._element.style[dimension] = 0;
1174
1175
      if (this._triggerArray.length > 0) {
1176
        $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
1177
      }
1178
1179
      this.setTransitioning(true);
1180
1181
      var complete = function complete() {
1182
        $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
1183
        _this._element.style[dimension] = '';
1184
1185
        _this.setTransitioning(false);
1186
1187
        $$$1(_this._element).trigger(Event.SHOWN);
1188
      };
1189
1190
      if (!Util.supportsTransitionEnd()) {
1191
        complete();
1192
        return;
1193
      }
1194
1195
      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1196
      var scrollSize = "scroll" + capitalizedDimension;
1197
      $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1198
      this._element.style[dimension] = this._element[scrollSize] + "px";
1199
    };
1200
1201
    _proto.hide = function hide() {
1202
      var _this2 = this;
1203
1204
      if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
1205
        return;
1206
      }
1207
1208
      var startEvent = $$$1.Event(Event.HIDE);
1209
      $$$1(this._element).trigger(startEvent);
1210
1211
      if (startEvent.isDefaultPrevented()) {
1212
        return;
1213
      }
1214
1215
      var dimension = this._getDimension();
1216
1217
      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1218
      Util.reflow(this._element);
1219
      $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
1220
1221
      if (this._triggerArray.length > 0) {
1222
        for (var i = 0; i < this._triggerArray.length; i++) {
1223
          var trigger = this._triggerArray[i];
1224
          var selector = Util.getSelectorFromElement(trigger);
1225
1226
          if (selector !== null) {
1227
            var $elem = $$$1(selector);
1228
1229
            if (!$elem.hasClass(ClassName.SHOW)) {
1230
              $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
1231
            }
1232
          }
1233
        }
1234
      }
1235
1236
      this.setTransitioning(true);
1237
1238
      var complete = function complete() {
1239
        _this2.setTransitioning(false);
1240
1241
        $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
1242
      };
1243
1244
      this._element.style[dimension] = '';
1245
1246
      if (!Util.supportsTransitionEnd()) {
1247
        complete();
1248
        return;
1249
      }
1250
1251
      $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
1252
    };
1253
1254
    _proto.setTransitioning = function setTransitioning(isTransitioning) {
1255
      this._isTransitioning = isTransitioning;
1256
    };
1257
1258
    _proto.dispose = function dispose() {
1259
      $$$1.removeData(this._element, DATA_KEY);
1260
      this._config = null;
1261
      this._parent = null;
1262
      this._element = null;
1263
      this._triggerArray = null;
1264
      this._isTransitioning = null;
1265
    }; // Private
1266
1267
1268
    _proto._getConfig = function _getConfig(config) {
1269
      config = _extends({}, Default, config);
1270
      config.toggle = Boolean(config.toggle); // Coerce string values
1271
1272
      Util.typeCheckConfig(NAME, config, DefaultType);
1273
      return config;
1274
    };
1275
1276
    _proto._getDimension = function _getDimension() {
1277
      var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
1278
      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1279
    };
1280
1281
    _proto._getParent = function _getParent() {
1282
      var _this3 = this;
1283
1284
      var parent = null;
1285
1286
      if (Util.isElement(this._config.parent)) {
1287
        parent = this._config.parent; // It's a jQuery object
1288
1289
        if (typeof this._config.parent.jquery !== 'undefined') {
1290
          parent = this._config.parent[0];
1291
        }
1292
      } else {
1293
        parent = $$$1(this._config.parent)[0];
1294
      }
1295
1296
      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1297
      $$$1(parent).find(selector).each(function (i, element) {
1298
        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1299
      });
1300
      return parent;
1301
    };
1302
1303
    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1304
      if (element) {
1305
        var isOpen = $$$1(element).hasClass(ClassName.SHOW);
1306
1307
        if (triggerArray.length > 0) {
1308
          $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1309
        }
1310
      }
1311
    }; // Static
1312
1313
1314
    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1315
      var selector = Util.getSelectorFromElement(element);
1316
      return selector ? $$$1(selector)[0] : null;
1317
    };
1318
1319
    Collapse._jQueryInterface = function _jQueryInterface(config) {
1320
      return this.each(function () {
1321
        var $this = $$$1(this);
1322
        var data = $this.data(DATA_KEY);
1323
1324
        var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
1325
1326
        if (!data && _config.toggle && /show|hide/.test(config)) {
1327
          _config.toggle = false;
1328
        }
1329
1330
        if (!data) {
1331
          data = new Collapse(this, _config);
1332
          $this.data(DATA_KEY, data);
1333
        }
1334
1335
        if (typeof config === 'string') {
1336
          if (typeof data[config] === 'undefined') {
1337
            throw new TypeError("No method named \"" + config + "\"");
1338
          }
1339
1340
          data[config]();
1341
        }
1342
      });
1343
    };
1344
1345
    _createClass(Collapse, null, [{
1346
      key: "VERSION",
1347
      get: function get() {
1348
        return VERSION;
1349
      }
1350
    }, {
1351
      key: "Default",
1352
      get: function get() {
1353
        return Default;
1354
      }
1355
    }]);
1356
    return Collapse;
1357
  }();
1358
  /**
1359
   * ------------------------------------------------------------------------
1360
   * Data Api implementation
1361
   * ------------------------------------------------------------------------
1362
   */
1363
1364
1365
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
1366
    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1367
    if (event.currentTarget.tagName === 'A') {
1368
      event.preventDefault();
1369
    }
1370
1371
    var $trigger = $$$1(this);
1372
    var selector = Util.getSelectorFromElement(this);
1373
    $$$1(selector).each(function () {
1374
      var $target = $$$1(this);
1375
      var data = $target.data(DATA_KEY);
1376
      var config = data ? 'toggle' : $trigger.data();
1377
1378
      Collapse._jQueryInterface.call($target, config);
1379
    });
1380
  });
1381
  /**
1382
   * ------------------------------------------------------------------------
1383
   * jQuery
1384
   * ------------------------------------------------------------------------
1385
   */
1386
1387
  $$$1.fn[NAME] = Collapse._jQueryInterface;
1388
  $$$1.fn[NAME].Constructor = Collapse;
1389
1390
  $$$1.fn[NAME].noConflict = function () {
1391
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1392
    return Collapse._jQueryInterface;
1393
  };
1394
1395
  return Collapse;
1396
}($);
1397
1398
/**
1399
 * --------------------------------------------------------------------------
1400
 * Bootstrap (v4.0.0): dropdown.js
1401
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1402
 * --------------------------------------------------------------------------
1403
 */
1404
1405
var Dropdown = function ($$$1) {
1406
  /**
1407
   * ------------------------------------------------------------------------
1408
   * Constants
1409
   * ------------------------------------------------------------------------
1410
   */
1411
  var NAME = 'dropdown';
1412
  var VERSION = '4.0.0';
1413
  var DATA_KEY = 'bs.dropdown';
1414
  var EVENT_KEY = "." + DATA_KEY;
1415
  var DATA_API_KEY = '.data-api';
1416
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1417
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1418
1419
  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1420
1421
  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1422
1423
  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1424
1425
  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1426
1427
  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1428
1429
  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1430
  var Event = {
1431
    HIDE: "hide" + EVENT_KEY,
1432
    HIDDEN: "hidden" + EVENT_KEY,
1433
    SHOW: "show" + EVENT_KEY,
1434
    SHOWN: "shown" + EVENT_KEY,
1435
    CLICK: "click" + EVENT_KEY,
1436
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
1437
    KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
1438
    KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
1439
  };
1440
  var ClassName = {
1441
    DISABLED: 'disabled',
1442
    SHOW: 'show',
1443
    DROPUP: 'dropup',
1444
    DROPRIGHT: 'dropright',
1445
    DROPLEFT: 'dropleft',
1446
    MENURIGHT: 'dropdown-menu-right',
1447
    MENULEFT: 'dropdown-menu-left',
1448
    POSITION_STATIC: 'position-static'
1449
  };
1450
  var Selector = {
1451
    DATA_TOGGLE: '[data-toggle="dropdown"]',
1452
    FORM_CHILD: '.dropdown form',
1453
    MENU: '.dropdown-menu',
1454
    NAVBAR_NAV: '.navbar-nav',
1455
    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
1456
  };
1457
  var AttachmentMap = {
1458
    TOP: 'top-start',
1459
    TOPEND: 'top-end',
1460
    BOTTOM: 'bottom-start',
1461
    BOTTOMEND: 'bottom-end',
1462
    RIGHT: 'right-start',
1463
    RIGHTEND: 'right-end',
1464
    LEFT: 'left-start',
1465
    LEFTEND: 'left-end'
1466
  };
1467
  var Default = {
1468
    offset: 0,
1469
    flip: true,
1470
    boundary: 'scrollParent'
1471
  };
1472
  var DefaultType = {
1473
    offset: '(number|string|function)',
1474
    flip: 'boolean',
1475
    boundary: '(string|element)'
1476
    /**
1477
     * ------------------------------------------------------------------------
1478
     * Class Definition
1479
     * ------------------------------------------------------------------------
1480
     */
1481
1482
  };
1483
1484
  var Dropdown =
1485
  /*#__PURE__*/
1486
  function () {
1487
    function Dropdown(element, config) {
1488
      this._element = element;
1489
      this._popper = null;
1490
      this._config = this._getConfig(config);
1491
      this._menu = this._getMenuElement();
1492
      this._inNavbar = this._detectNavbar();
1493
1494
      this._addEventListeners();
1495
    } // Getters
1496
1497
1498
    var _proto = Dropdown.prototype;
1499
1500
    // Public
1501
    _proto.toggle = function toggle() {
1502
      if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
1503
        return;
1504
      }
1505
1506
      var parent = Dropdown._getParentFromElement(this._element);
1507
1508
      var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
1509
1510
      Dropdown._clearMenus();
1511
1512
      if (isActive) {
1513
        return;
1514
      }
1515
1516
      var relatedTarget = {
1517
        relatedTarget: this._element
1518
      };
1519
      var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
1520
      $$$1(parent).trigger(showEvent);
1521
1522
      if (showEvent.isDefaultPrevented()) {
1523
        return;
1524
      } // Disable totally Popper.js for Dropdown in Navbar
1525
1526
1527
      if (!this._inNavbar) {
1528
        /**
1529
         * Check for Popper dependency
1530
         * Popper - https://popper.js.org
1531
         */
1532
        if (typeof Popper === 'undefined') {
1533
          throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
1534
        }
1535
1536
        var element = this._element; // For dropup with alignment we use the parent as popper container
1537
1538
        if ($$$1(parent).hasClass(ClassName.DROPUP)) {
1539
          if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1540
            element = parent;
1541
          }
1542
        } // If boundary is not `scrollParent`, then set position to `static`
1543
        // to allow the menu to "escape" the scroll parent's boundaries
1544
        // https://github.com/twbs/bootstrap/issues/24251
1545
1546
1547
        if (this._config.boundary !== 'scrollParent') {
1548
          $$$1(parent).addClass(ClassName.POSITION_STATIC);
1549
        }
1550
1551
        this._popper = new Popper(element, this._menu, this._getPopperConfig());
1552
      } // If this is a touch-enabled device we add extra
1553
      // empty mouseover listeners to the body's immediate children;
1554
      // only needed because of broken event delegation on iOS
1555
      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1556
1557
1558
      if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
1559
        $$$1('body').children().on('mouseover', null, $$$1.noop);
1560
      }
1561
1562
      this._element.focus();
1563
1564
      this._element.setAttribute('aria-expanded', true);
1565
1566
      $$$1(this._menu).toggleClass(ClassName.SHOW);
1567
      $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
1568
    };
1569
1570
    _proto.dispose = function dispose() {
1571
      $$$1.removeData(this._element, DATA_KEY);
1572
      $$$1(this._element).off(EVENT_KEY);
1573
      this._element = null;
1574
      this._menu = null;
1575
1576
      if (this._popper !== null) {
1577
        this._popper.destroy();
1578
1579
        this._popper = null;
1580
      }
1581
    };
1582
1583
    _proto.update = function update() {
1584
      this._inNavbar = this._detectNavbar();
1585
1586
      if (this._popper !== null) {
1587
        this._popper.scheduleUpdate();
1588
      }
1589
    }; // Private
1590
1591
1592
    _proto._addEventListeners = function _addEventListeners() {
1593
      var _this = this;
1594
1595
      $$$1(this._element).on(Event.CLICK, function (event) {
1596
        event.preventDefault();
1597
        event.stopPropagation();
1598
1599
        _this.toggle();
1600
      });
1601
    };
1602
1603
    _proto._getConfig = function _getConfig(config) {
1604
      config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config);
1605
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
1606
      return config;
1607
    };
1608
1609
    _proto._getMenuElement = function _getMenuElement() {
1610
      if (!this._menu) {
1611
        var parent = Dropdown._getParentFromElement(this._element);
1612
1613
        this._menu = $$$1(parent).find(Selector.MENU)[0];
1614
      }
1615
1616
      return this._menu;
1617
    };
1618
1619
    _proto._getPlacement = function _getPlacement() {
1620
      var $parentDropdown = $$$1(this._element).parent();
1621
      var placement = AttachmentMap.BOTTOM; // Handle dropup
1622
1623
      if ($parentDropdown.hasClass(ClassName.DROPUP)) {
1624
        placement = AttachmentMap.TOP;
1625
1626
        if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1627
          placement = AttachmentMap.TOPEND;
1628
        }
1629
      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
1630
        placement = AttachmentMap.RIGHT;
1631
      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
1632
        placement = AttachmentMap.LEFT;
1633
      } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
1634
        placement = AttachmentMap.BOTTOMEND;
1635
      }
1636
1637
      return placement;
1638
    };
1639
1640
    _proto._detectNavbar = function _detectNavbar() {
1641
      return $$$1(this._element).closest('.navbar').length > 0;
1642
    };
1643
1644
    _proto._getPopperConfig = function _getPopperConfig() {
1645
      var _this2 = this;
1646
1647
      var offsetConf = {};
1648
1649
      if (typeof this._config.offset === 'function') {
1650
        offsetConf.fn = function (data) {
1651
          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
1652
          return data;
1653
        };
1654
      } else {
1655
        offsetConf.offset = this._config.offset;
1656
      }
1657
1658
      var popperConfig = {
1659
        placement: this._getPlacement(),
1660
        modifiers: {
1661
          offset: offsetConf,
1662
          flip: {
1663
            enabled: this._config.flip
1664
          },
1665
          preventOverflow: {
1666
            boundariesElement: this._config.boundary
1667
          }
1668
        }
1669
      };
1670
      return popperConfig;
1671
    }; // Static
1672
1673
1674
    Dropdown._jQueryInterface = function _jQueryInterface(config) {
1675
      return this.each(function () {
1676
        var data = $$$1(this).data(DATA_KEY);
1677
1678
        var _config = typeof config === 'object' ? config : null;
1679
1680
        if (!data) {
1681
          data = new Dropdown(this, _config);
1682
          $$$1(this).data(DATA_KEY, data);
1683
        }
1684
1685
        if (typeof config === 'string') {
1686
          if (typeof data[config] === 'undefined') {
1687
            throw new TypeError("No method named \"" + config + "\"");
1688
          }
1689
1690
          data[config]();
1691
        }
1692
      });
1693
    };
1694
1695
    Dropdown._clearMenus = function _clearMenus(event) {
1696
      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1697
        return;
1698
      }
1699
1700
      var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
1701
1702
      for (var i = 0; i < toggles.length; i++) {
1703
        var parent = Dropdown._getParentFromElement(toggles[i]);
1704
1705
        var context = $$$1(toggles[i]).data(DATA_KEY);
1706
        var relatedTarget = {
1707
          relatedTarget: toggles[i]
1708
        };
1709
1710
        if (!context) {
1711
          continue;
1712
        }
1713
1714
        var dropdownMenu = context._menu;
1715
1716
        if (!$$$1(parent).hasClass(ClassName.SHOW)) {
1717
          continue;
1718
        }
1719
1720
        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
1721
          continue;
1722
        }
1723
1724
        var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
1725
        $$$1(parent).trigger(hideEvent);
1726
1727
        if (hideEvent.isDefaultPrevented()) {
1728
          continue;
1729
        } // If this is a touch-enabled device we remove the extra
1730
        // empty mouseover listeners we added for iOS support
1731
1732
1733
        if ('ontouchstart' in document.documentElement) {
1734
          $$$1('body').children().off('mouseover', null, $$$1.noop);
1735
        }
1736
1737
        toggles[i].setAttribute('aria-expanded', 'false');
1738
        $$$1(dropdownMenu).removeClass(ClassName.SHOW);
1739
        $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
1740
      }
1741
    };
1742
1743
    Dropdown._getParentFromElement = function _getParentFromElement(element) {
1744
      var parent;
1745
      var selector = Util.getSelectorFromElement(element);
1746
1747
      if (selector) {
1748
        parent = $$$1(selector)[0];
1749
      }
1750
1751
      return parent || element.parentNode;
1752
    }; // eslint-disable-next-line complexity
1753
1754
1755
    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1756
      // If not input/textarea:
1757
      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
1758
      // If input/textarea:
1759
      //  - If space key => not a dropdown command
1760
      //  - If key is other than escape
1761
      //    - If key is not up or down => not a dropdown command
1762
      //    - If trigger inside the menu => not a dropdown command
1763
      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 || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1764
        return;
1765
      }
1766
1767
      event.preventDefault();
1768
      event.stopPropagation();
1769
1770
      if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
1771
        return;
1772
      }
1773
1774
      var parent = Dropdown._getParentFromElement(this);
1775
1776
      var isActive = $$$1(parent).hasClass(ClassName.SHOW);
1777
1778
      if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1779
        if (event.which === ESCAPE_KEYCODE) {
1780
          var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
1781
          $$$1(toggle).trigger('focus');
1782
        }
1783
1784
        $$$1(this).trigger('click');
1785
        return;
1786
      }
1787
1788
      var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
1789
1790
      if (items.length === 0) {
1791
        return;
1792
      }
1793
1794
      var index = items.indexOf(event.target);
1795
1796
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
1797
        // Up
1798
        index--;
1799
      }
1800
1801
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1802
        // Down
1803
        index++;
1804
      }
1805
1806
      if (index < 0) {
1807
        index = 0;
1808
      }
1809
1810
      items[index].focus();
1811
    };
1812
1813
    _createClass(Dropdown, null, [{
1814
      key: "VERSION",
1815
      get: function get() {
1816
        return VERSION;
1817
      }
1818
    }, {
1819
      key: "Default",
1820
      get: function get() {
1821
        return Default;
1822
      }
1823
    }, {
1824
      key: "DefaultType",
1825
      get: function get() {
1826
        return DefaultType;
1827
      }
1828
    }]);
1829
    return Dropdown;
1830
  }();
1831
  /**
1832
   * ------------------------------------------------------------------------
1833
   * Data Api implementation
1834
   * ------------------------------------------------------------------------
1835
   */
1836
1837
1838
  $$$1(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) {
1839
    event.preventDefault();
1840
    event.stopPropagation();
1841
1842
    Dropdown._jQueryInterface.call($$$1(this), 'toggle');
1843
  }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
1844
    e.stopPropagation();
1845
  });
1846
  /**
1847
   * ------------------------------------------------------------------------
1848
   * jQuery
1849
   * ------------------------------------------------------------------------
1850
   */
1851
1852
  $$$1.fn[NAME] = Dropdown._jQueryInterface;
1853
  $$$1.fn[NAME].Constructor = Dropdown;
1854
1855
  $$$1.fn[NAME].noConflict = function () {
1856
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
1857
    return Dropdown._jQueryInterface;
1858
  };
1859
1860
  return Dropdown;
1861
}($, Popper);
1862
1863
/**
1864
 * --------------------------------------------------------------------------
1865
 * Bootstrap (v4.0.0): modal.js
1866
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1867
 * --------------------------------------------------------------------------
1868
 */
1869
1870
var Modal = function ($$$1) {
1871
  /**
1872
   * ------------------------------------------------------------------------
1873
   * Constants
1874
   * ------------------------------------------------------------------------
1875
   */
1876
  var NAME = 'modal';
1877
  var VERSION = '4.0.0';
1878
  var DATA_KEY = 'bs.modal';
1879
  var EVENT_KEY = "." + DATA_KEY;
1880
  var DATA_API_KEY = '.data-api';
1881
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
1882
  var TRANSITION_DURATION = 300;
1883
  var BACKDROP_TRANSITION_DURATION = 150;
1884
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1885
1886
  var Default = {
1887
    backdrop: true,
1888
    keyboard: true,
1889
    focus: true,
1890
    show: true
1891
  };
1892
  var DefaultType = {
1893
    backdrop: '(boolean|string)',
1894
    keyboard: 'boolean',
1895
    focus: 'boolean',
1896
    show: 'boolean'
1897
  };
1898
  var Event = {
1899
    HIDE: "hide" + EVENT_KEY,
1900
    HIDDEN: "hidden" + EVENT_KEY,
1901
    SHOW: "show" + EVENT_KEY,
1902
    SHOWN: "shown" + EVENT_KEY,
1903
    FOCUSIN: "focusin" + EVENT_KEY,
1904
    RESIZE: "resize" + EVENT_KEY,
1905
    CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
1906
    KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
1907
    MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
1908
    MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
1909
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
1910
  };
1911
  var ClassName = {
1912
    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
1913
    BACKDROP: 'modal-backdrop',
1914
    OPEN: 'modal-open',
1915
    FADE: 'fade',
1916
    SHOW: 'show'
1917
  };
1918
  var Selector = {
1919
    DIALOG: '.modal-dialog',
1920
    DATA_TOGGLE: '[data-toggle="modal"]',
1921
    DATA_DISMISS: '[data-dismiss="modal"]',
1922
    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
1923
    STICKY_CONTENT: '.sticky-top',
1924
    NAVBAR_TOGGLER: '.navbar-toggler'
1925
    /**
1926
     * ------------------------------------------------------------------------
1927
     * Class Definition
1928
     * ------------------------------------------------------------------------
1929
     */
1930
1931
  };
1932
1933
  var Modal =
1934
  /*#__PURE__*/
1935
  function () {
1936
    function Modal(element, config) {
1937
      this._config = this._getConfig(config);
1938
      this._element = element;
1939
      this._dialog = $$$1(element).find(Selector.DIALOG)[0];
1940
      this._backdrop = null;
1941
      this._isShown = false;
1942
      this._isBodyOverflowing = false;
1943
      this._ignoreBackdropClick = false;
1944
      this._originalBodyPadding = 0;
1945
      this._scrollbarWidth = 0;
1946
    } // Getters
1947
1948
1949
    var _proto = Modal.prototype;
1950
1951
    // Public
1952
    _proto.toggle = function toggle(relatedTarget) {
1953
      return this._isShown ? this.hide() : this.show(relatedTarget);
1954
    };
1955
1956
    _proto.show = function show(relatedTarget) {
1957
      var _this = this;
1958
1959
      if (this._isTransitioning || this._isShown) {
1960
        return;
1961
      }
1962
1963
      if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
1964
        this._isTransitioning = true;
1965
      }
1966
1967
      var showEvent = $$$1.Event(Event.SHOW, {
1968
        relatedTarget: relatedTarget
1969
      });
1970
      $$$1(this._element).trigger(showEvent);
1971
1972
      if (this._isShown || showEvent.isDefaultPrevented()) {
1973
        return;
1974
      }
1975
1976
      this._isShown = true;
1977
1978
      this._checkScrollbar();
1979
1980
      this._setScrollbar();
1981
1982
      this._adjustDialog();
1983
1984
      $$$1(document.body).addClass(ClassName.OPEN);
1985
1986
      this._setEscapeEvent();
1987
1988
      this._setResizeEvent();
1989
1990
      $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
1991
        return _this.hide(event);
1992
      });
1993
      $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
1994
        $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
1995
          if ($$$1(event.target).is(_this._element)) {
1996
            _this._ignoreBackdropClick = true;
1997
          }
1998
        });
1999
      });
2000
2001
      this._showBackdrop(function () {
2002
        return _this._showElement(relatedTarget);
2003
      });
2004
    };
2005
2006
    _proto.hide = function hide(event) {
2007
      var _this2 = this;
2008
2009
      if (event) {
2010
        event.preventDefault();
2011
      }
2012
2013
      if (this._isTransitioning || !this._isShown) {
2014
        return;
2015
      }
2016
2017
      var hideEvent = $$$1.Event(Event.HIDE);
2018
      $$$1(this._element).trigger(hideEvent);
2019
2020
      if (!this._isShown || hideEvent.isDefaultPrevented()) {
2021
        return;
2022
      }
2023
2024
      this._isShown = false;
2025
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2026
2027
      if (transition) {
2028
        this._isTransitioning = true;
2029
      }
2030
2031
      this._setEscapeEvent();
2032
2033
      this._setResizeEvent();
2034
2035
      $$$1(document).off(Event.FOCUSIN);
2036
      $$$1(this._element).removeClass(ClassName.SHOW);
2037
      $$$1(this._element).off(Event.CLICK_DISMISS);
2038
      $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
2039
2040
      if (transition) {
2041
        $$$1(this._element).one(Util.TRANSITION_END, function (event) {
2042
          return _this2._hideModal(event);
2043
        }).emulateTransitionEnd(TRANSITION_DURATION);
2044
      } else {
2045
        this._hideModal();
2046
      }
2047
    };
2048
2049
    _proto.dispose = function dispose() {
2050
      $$$1.removeData(this._element, DATA_KEY);
2051
      $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
2052
      this._config = null;
2053
      this._element = null;
2054
      this._dialog = null;
2055
      this._backdrop = null;
2056
      this._isShown = null;
2057
      this._isBodyOverflowing = null;
2058
      this._ignoreBackdropClick = null;
2059
      this._scrollbarWidth = null;
2060
    };
2061
2062
    _proto.handleUpdate = function handleUpdate() {
2063
      this._adjustDialog();
2064
    }; // Private
2065
2066
2067
    _proto._getConfig = function _getConfig(config) {
2068
      config = _extends({}, Default, config);
2069
      Util.typeCheckConfig(NAME, config, DefaultType);
2070
      return config;
2071
    };
2072
2073
    _proto._showElement = function _showElement(relatedTarget) {
2074
      var _this3 = this;
2075
2076
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
2077
2078
      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2079
        // Don't move modal's DOM position
2080
        document.body.appendChild(this._element);
2081
      }
2082
2083
      this._element.style.display = 'block';
2084
2085
      this._element.removeAttribute('aria-hidden');
2086
2087
      this._element.scrollTop = 0;
2088
2089
      if (transition) {
2090
        Util.reflow(this._element);
2091
      }
2092
2093
      $$$1(this._element).addClass(ClassName.SHOW);
2094
2095
      if (this._config.focus) {
2096
        this._enforceFocus();
2097
      }
2098
2099
      var shownEvent = $$$1.Event(Event.SHOWN, {
2100
        relatedTarget: relatedTarget
2101
      });
2102
2103
      var transitionComplete = function transitionComplete() {
2104
        if (_this3._config.focus) {
2105
          _this3._element.focus();
2106
        }
2107
2108
        _this3._isTransitioning = false;
2109
        $$$1(_this3._element).trigger(shownEvent);
2110
      };
2111
2112
      if (transition) {
2113
        $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
2114
      } else {
2115
        transitionComplete();
2116
      }
2117
    };
2118
2119
    _proto._enforceFocus = function _enforceFocus() {
2120
      var _this4 = this;
2121
2122
      $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
2123
      .on(Event.FOCUSIN, function (event) {
2124
        if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
2125
          _this4._element.focus();
2126
        }
2127
      });
2128
    };
2129
2130
    _proto._setEscapeEvent = function _setEscapeEvent() {
2131
      var _this5 = this;
2132
2133
      if (this._isShown && this._config.keyboard) {
2134
        $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
2135
          if (event.which === ESCAPE_KEYCODE) {
2136
            event.preventDefault();
2137
2138
            _this5.hide();
2139
          }
2140
        });
2141
      } else if (!this._isShown) {
2142
        $$$1(this._element).off(Event.KEYDOWN_DISMISS);
2143
      }
2144
    };
2145
2146
    _proto._setResizeEvent = function _setResizeEvent() {
2147
      var _this6 = this;
2148
2149
      if (this._isShown) {
2150
        $$$1(window).on(Event.RESIZE, function (event) {
2151
          return _this6.handleUpdate(event);
2152
        });
2153
      } else {
2154
        $$$1(window).off(Event.RESIZE);
2155
      }
2156
    };
2157
2158
    _proto._hideModal = function _hideModal() {
2159
      var _this7 = this;
2160
2161
      this._element.style.display = 'none';
2162
2163
      this._element.setAttribute('aria-hidden', true);
2164
2165
      this._isTransitioning = false;
2166
2167
      this._showBackdrop(function () {
2168
        $$$1(document.body).removeClass(ClassName.OPEN);
2169
2170
        _this7._resetAdjustments();
2171
2172
        _this7._resetScrollbar();
2173
2174
        $$$1(_this7._element).trigger(Event.HIDDEN);
2175
      });
2176
    };
2177
2178
    _proto._removeBackdrop = function _removeBackdrop() {
2179
      if (this._backdrop) {
2180
        $$$1(this._backdrop).remove();
2181
        this._backdrop = null;
2182
      }
2183
    };
2184
2185
    _proto._showBackdrop = function _showBackdrop(callback) {
2186
      var _this8 = this;
2187
2188
      var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
2189
2190
      if (this._isShown && this._config.backdrop) {
2191
        var doAnimate = Util.supportsTransitionEnd() && animate;
2192
        this._backdrop = document.createElement('div');
2193
        this._backdrop.className = ClassName.BACKDROP;
2194
2195
        if (animate) {
2196
          $$$1(this._backdrop).addClass(animate);
2197
        }
2198
2199
        $$$1(this._backdrop).appendTo(document.body);
2200
        $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
2201
          if (_this8._ignoreBackdropClick) {
2202
            _this8._ignoreBackdropClick = false;
2203
            return;
2204
          }
2205
2206
          if (event.target !== event.currentTarget) {
2207
            return;
2208
          }
2209
2210
          if (_this8._config.backdrop === 'static') {
2211
            _this8._element.focus();
2212
          } else {
2213
            _this8.hide();
2214
          }
2215
        });
2216
2217
        if (doAnimate) {
2218
          Util.reflow(this._backdrop);
2219
        }
2220
2221
        $$$1(this._backdrop).addClass(ClassName.SHOW);
2222
2223
        if (!callback) {
2224
          return;
2225
        }
2226
2227
        if (!doAnimate) {
2228
          callback();
2229
          return;
2230
        }
2231
2232
        $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2233
      } else if (!this._isShown && this._backdrop) {
2234
        $$$1(this._backdrop).removeClass(ClassName.SHOW);
2235
2236
        var callbackRemove = function callbackRemove() {
2237
          _this8._removeBackdrop();
2238
2239
          if (callback) {
2240
            callback();
2241
          }
2242
        };
2243
2244
        if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
2245
          $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
2246
        } else {
2247
          callbackRemove();
2248
        }
2249
      } else if (callback) {
2250
        callback();
2251
      }
2252
    }; // ----------------------------------------------------------------------
2253
    // the following methods are used to handle overflowing modals
2254
    // todo (fat): these should probably be refactored out of modal.js
2255
    // ----------------------------------------------------------------------
2256
2257
2258
    _proto._adjustDialog = function _adjustDialog() {
2259
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2260
2261
      if (!this._isBodyOverflowing && isModalOverflowing) {
2262
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
2263
      }
2264
2265
      if (this._isBodyOverflowing && !isModalOverflowing) {
2266
        this._element.style.paddingRight = this._scrollbarWidth + "px";
2267
      }
2268
    };
2269
2270
    _proto._resetAdjustments = function _resetAdjustments() {
2271
      this._element.style.paddingLeft = '';
2272
      this._element.style.paddingRight = '';
2273
    };
2274
2275
    _proto._checkScrollbar = function _checkScrollbar() {
2276
      var rect = document.body.getBoundingClientRect();
2277
      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2278
      this._scrollbarWidth = this._getScrollbarWidth();
2279
    };
2280
2281
    _proto._setScrollbar = function _setScrollbar() {
2282
      var _this9 = this;
2283
2284
      if (this._isBodyOverflowing) {
2285
        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2286
        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2287
        // Adjust fixed content padding
2288
        $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2289
          var actualPadding = $$$1(element)[0].style.paddingRight;
2290
          var calculatedPadding = $$$1(element).css('padding-right');
2291
          $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2292
        }); // Adjust sticky content margin
2293
2294
        $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
2295
          var actualMargin = $$$1(element)[0].style.marginRight;
2296
          var calculatedMargin = $$$1(element).css('margin-right');
2297
          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2298
        }); // Adjust navbar-toggler margin
2299
2300
        $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
2301
          var actualMargin = $$$1(element)[0].style.marginRight;
2302
          var calculatedMargin = $$$1(element).css('margin-right');
2303
          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
2304
        }); // Adjust body padding
2305
2306
        var actualPadding = document.body.style.paddingRight;
2307
        var calculatedPadding = $$$1('body').css('padding-right');
2308
        $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2309
      }
2310
    };
2311
2312
    _proto._resetScrollbar = function _resetScrollbar() {
2313
      // Restore fixed content padding
2314
      $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
2315
        var padding = $$$1(element).data('padding-right');
2316
2317
        if (typeof padding !== 'undefined') {
2318
          $$$1(element).css('padding-right', padding).removeData('padding-right');
2319
        }
2320
      }); // Restore sticky content and navbar-toggler margin
2321
2322
      $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
2323
        var margin = $$$1(element).data('margin-right');
2324
2325
        if (typeof margin !== 'undefined') {
2326
          $$$1(element).css('margin-right', margin).removeData('margin-right');
2327
        }
2328
      }); // Restore body padding
2329
2330
      var padding = $$$1('body').data('padding-right');
2331
2332
      if (typeof padding !== 'undefined') {
2333
        $$$1('body').css('padding-right', padding).removeData('padding-right');
2334
      }
2335
    };
2336
2337
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
2338
      // thx d.walsh
2339
      var scrollDiv = document.createElement('div');
2340
      scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
2341
      document.body.appendChild(scrollDiv);
2342
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2343
      document.body.removeChild(scrollDiv);
2344
      return scrollbarWidth;
2345
    }; // Static
2346
2347
2348
    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2349
      return this.each(function () {
2350
        var data = $$$1(this).data(DATA_KEY);
2351
2352
        var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
2353
2354
        if (!data) {
2355
          data = new Modal(this, _config);
2356
          $$$1(this).data(DATA_KEY, data);
2357
        }
2358
2359
        if (typeof config === 'string') {
2360
          if (typeof data[config] === 'undefined') {
2361
            throw new TypeError("No method named \"" + config + "\"");
2362
          }
2363
2364
          data[config](relatedTarget);
2365
        } else if (_config.show) {
2366
          data.show(relatedTarget);
2367
        }
2368
      });
2369
    };
2370
2371
    _createClass(Modal, null, [{
2372
      key: "VERSION",
2373
      get: function get() {
2374
        return VERSION;
2375
      }
2376
    }, {
2377
      key: "Default",
2378
      get: function get() {
2379
        return Default;
2380
      }
2381
    }]);
2382
    return Modal;
2383
  }();
2384
  /**
2385
   * ------------------------------------------------------------------------
2386
   * Data Api implementation
2387
   * ------------------------------------------------------------------------
2388
   */
2389
2390
2391
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
2392
    var _this10 = this;
2393
2394
    var target;
2395
    var selector = Util.getSelectorFromElement(this);
2396
2397
    if (selector) {
2398
      target = $$$1(selector)[0];
2399
    }
2400
2401
    var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
2402
2403
    if (this.tagName === 'A' || this.tagName === 'AREA') {
2404
      event.preventDefault();
2405
    }
2406
2407
    var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
2408
      if (showEvent.isDefaultPrevented()) {
2409
        // Only register focus restorer if modal will actually get shown
2410
        return;
2411
      }
2412
2413
      $target.one(Event.HIDDEN, function () {
2414
        if ($$$1(_this10).is(':visible')) {
2415
          _this10.focus();
2416
        }
2417
      });
2418
    });
2419
2420
    Modal._jQueryInterface.call($$$1(target), config, this);
2421
  });
2422
  /**
2423
   * ------------------------------------------------------------------------
2424
   * jQuery
2425
   * ------------------------------------------------------------------------
2426
   */
2427
2428
  $$$1.fn[NAME] = Modal._jQueryInterface;
2429
  $$$1.fn[NAME].Constructor = Modal;
2430
2431
  $$$1.fn[NAME].noConflict = function () {
2432
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
2433
    return Modal._jQueryInterface;
2434
  };
2435
2436
  return Modal;
2437
}($);
2438
2439
/**
2440
 * --------------------------------------------------------------------------
2441
 * Bootstrap (v4.0.0): tooltip.js
2442
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2443
 * --------------------------------------------------------------------------
2444
 */
2445
2446
var Tooltip = function ($$$1) {
2447
  /**
2448
   * ------------------------------------------------------------------------
2449
   * Constants
2450
   * ------------------------------------------------------------------------
2451
   */
2452
  var NAME = 'tooltip';
2453
  var VERSION = '4.0.0';
2454
  var DATA_KEY = 'bs.tooltip';
2455
  var EVENT_KEY = "." + DATA_KEY;
2456
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
2457
  var TRANSITION_DURATION = 150;
2458
  var CLASS_PREFIX = 'bs-tooltip';
2459
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2460
  var DefaultType = {
2461
    animation: 'boolean',
2462
    template: 'string',
2463
    title: '(string|element|function)',
2464
    trigger: 'string',
2465
    delay: '(number|object)',
2466
    html: 'boolean',
2467
    selector: '(string|boolean)',
2468
    placement: '(string|function)',
2469
    offset: '(number|string)',
2470
    container: '(string|element|boolean)',
2471
    fallbackPlacement: '(string|array)',
2472
    boundary: '(string|element)'
2473
  };
2474
  var AttachmentMap = {
2475
    AUTO: 'auto',
2476
    TOP: 'top',
2477
    RIGHT: 'right',
2478
    BOTTOM: 'bottom',
2479
    LEFT: 'left'
2480
  };
2481
  var Default = {
2482
    animation: true,
2483
    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2484
    trigger: 'hover focus',
2485
    title: '',
2486
    delay: 0,
2487
    html: false,
2488
    selector: false,
2489
    placement: 'top',
2490
    offset: 0,
2491
    container: false,
2492
    fallbackPlacement: 'flip',
2493
    boundary: 'scrollParent'
2494
  };
2495
  var HoverState = {
2496
    SHOW: 'show',
2497
    OUT: 'out'
2498
  };
2499
  var Event = {
2500
    HIDE: "hide" + EVENT_KEY,
2501
    HIDDEN: "hidden" + EVENT_KEY,
2502
    SHOW: "show" + EVENT_KEY,
2503
    SHOWN: "shown" + EVENT_KEY,
2504
    INSERTED: "inserted" + EVENT_KEY,
2505
    CLICK: "click" + EVENT_KEY,
2506
    FOCUSIN: "focusin" + EVENT_KEY,
2507
    FOCUSOUT: "focusout" + EVENT_KEY,
2508
    MOUSEENTER: "mouseenter" + EVENT_KEY,
2509
    MOUSELEAVE: "mouseleave" + EVENT_KEY
2510
  };
2511
  var ClassName = {
2512
    FADE: 'fade',
2513
    SHOW: 'show'
2514
  };
2515
  var Selector = {
2516
    TOOLTIP: '.tooltip',
2517
    TOOLTIP_INNER: '.tooltip-inner',
2518
    ARROW: '.arrow'
2519
  };
2520
  var Trigger = {
2521
    HOVER: 'hover',
2522
    FOCUS: 'focus',
2523
    CLICK: 'click',
2524
    MANUAL: 'manual'
2525
    /**
2526
     * ------------------------------------------------------------------------
2527
     * Class Definition
2528
     * ------------------------------------------------------------------------
2529
     */
2530
2531
  };
2532
2533
  var Tooltip =
2534
  /*#__PURE__*/
2535
  function () {
2536
    function Tooltip(element, config) {
2537
      /**
2538
       * Check for Popper dependency
2539
       * Popper - https://popper.js.org
2540
       */
2541
      if (typeof Popper === 'undefined') {
2542
        throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
2543
      } // private
2544
2545
2546
      this._isEnabled = true;
2547
      this._timeout = 0;
2548
      this._hoverState = '';
2549
      this._activeTrigger = {};
2550
      this._popper = null; // Protected
2551
2552
      this.element = element;
2553
      this.config = this._getConfig(config);
2554
      this.tip = null;
2555
2556
      this._setListeners();
2557
    } // Getters
2558
2559
2560
    var _proto = Tooltip.prototype;
2561
2562
    // Public
2563
    _proto.enable = function enable() {
2564
      this._isEnabled = true;
2565
    };
2566
2567
    _proto.disable = function disable() {
2568
      this._isEnabled = false;
2569
    };
2570
2571
    _proto.toggleEnabled = function toggleEnabled() {
2572
      this._isEnabled = !this._isEnabled;
2573
    };
2574
2575
    _proto.toggle = function toggle(event) {
2576
      if (!this._isEnabled) {
2577
        return;
2578
      }
2579
2580
      if (event) {
2581
        var dataKey = this.constructor.DATA_KEY;
2582
        var context = $$$1(event.currentTarget).data(dataKey);
2583
2584
        if (!context) {
2585
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2586
          $$$1(event.currentTarget).data(dataKey, context);
2587
        }
2588
2589
        context._activeTrigger.click = !context._activeTrigger.click;
2590
2591
        if (context._isWithActiveTrigger()) {
2592
          context._enter(null, context);
2593
        } else {
2594
          context._leave(null, context);
2595
        }
2596
      } else {
2597
        if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
2598
          this._leave(null, this);
2599
2600
          return;
2601
        }
2602
2603
        this._enter(null, this);
2604
      }
2605
    };
2606
2607
    _proto.dispose = function dispose() {
2608
      clearTimeout(this._timeout);
2609
      $$$1.removeData(this.element, this.constructor.DATA_KEY);
2610
      $$$1(this.element).off(this.constructor.EVENT_KEY);
2611
      $$$1(this.element).closest('.modal').off('hide.bs.modal');
2612
2613
      if (this.tip) {
2614
        $$$1(this.tip).remove();
2615
      }
2616
2617
      this._isEnabled = null;
2618
      this._timeout = null;
2619
      this._hoverState = null;
2620
      this._activeTrigger = null;
2621
2622
      if (this._popper !== null) {
2623
        this._popper.destroy();
2624
      }
2625
2626
      this._popper = null;
2627
      this.element = null;
2628
      this.config = null;
2629
      this.tip = null;
2630
    };
2631
2632
    _proto.show = function show() {
2633
      var _this = this;
2634
2635
      if ($$$1(this.element).css('display') === 'none') {
2636
        throw new Error('Please use show on visible elements');
2637
      }
2638
2639
      var showEvent = $$$1.Event(this.constructor.Event.SHOW);
2640
2641
      if (this.isWithContent() && this._isEnabled) {
2642
        $$$1(this.element).trigger(showEvent);
2643
        var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
2644
2645
        if (showEvent.isDefaultPrevented() || !isInTheDom) {
2646
          return;
2647
        }
2648
2649
        var tip = this.getTipElement();
2650
        var tipId = Util.getUID(this.constructor.NAME);
2651
        tip.setAttribute('id', tipId);
2652
        this.element.setAttribute('aria-describedby', tipId);
2653
        this.setContent();
2654
2655
        if (this.config.animation) {
2656
          $$$1(tip).addClass(ClassName.FADE);
2657
        }
2658
2659
        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2660
2661
        var attachment = this._getAttachment(placement);
2662
2663
        this.addAttachmentClass(attachment);
2664
        var container = this.config.container === false ? document.body : $$$1(this.config.container);
2665
        $$$1(tip).data(this.constructor.DATA_KEY, this);
2666
2667
        if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
2668
          $$$1(tip).appendTo(container);
2669
        }
2670
2671
        $$$1(this.element).trigger(this.constructor.Event.INSERTED);
2672
        this._popper = new Popper(this.element, tip, {
2673
          placement: attachment,
2674
          modifiers: {
2675
            offset: {
2676
              offset: this.config.offset
2677
            },
2678
            flip: {
2679
              behavior: this.config.fallbackPlacement
2680
            },
2681
            arrow: {
2682
              element: Selector.ARROW
2683
            },
2684
            preventOverflow: {
2685
              boundariesElement: this.config.boundary
2686
            }
2687
          },
2688
          onCreate: function onCreate(data) {
2689
            if (data.originalPlacement !== data.placement) {
2690
              _this._handlePopperPlacementChange(data);
2691
            }
2692
          },
2693
          onUpdate: function onUpdate(data) {
2694
            _this._handlePopperPlacementChange(data);
2695
          }
2696
        });
2697
        $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
2698
        // empty mouseover listeners to the body's immediate children;
2699
        // only needed because of broken event delegation on iOS
2700
        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2701
2702
        if ('ontouchstart' in document.documentElement) {
2703
          $$$1('body').children().on('mouseover', null, $$$1.noop);
2704
        }
2705
2706
        var complete = function complete() {
2707
          if (_this.config.animation) {
2708
            _this._fixTransition();
2709
          }
2710
2711
          var prevHoverState = _this._hoverState;
2712
          _this._hoverState = null;
2713
          $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
2714
2715
          if (prevHoverState === HoverState.OUT) {
2716
            _this._leave(null, _this);
2717
          }
2718
        };
2719
2720
        if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
2721
          $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
2722
        } else {
2723
          complete();
2724
        }
2725
      }
2726
    };
2727
2728
    _proto.hide = function hide(callback) {
2729
      var _this2 = this;
2730
2731
      var tip = this.getTipElement();
2732
      var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
2733
2734
      var complete = function complete() {
2735
        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
2736
          tip.parentNode.removeChild(tip);
2737
        }
2738
2739
        _this2._cleanTipClass();
2740
2741
        _this2.element.removeAttribute('aria-describedby');
2742
2743
        $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
2744
2745
        if (_this2._popper !== null) {
2746
          _this2._popper.destroy();
2747
        }
2748
2749
        if (callback) {
2750
          callback();
2751
        }
2752
      };
2753
2754
      $$$1(this.element).trigger(hideEvent);
2755
2756
      if (hideEvent.isDefaultPrevented()) {
2757
        return;
2758
      }
2759
2760
      $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
2761
      // empty mouseover listeners we added for iOS support
2762
2763
      if ('ontouchstart' in document.documentElement) {
2764
        $$$1('body').children().off('mouseover', null, $$$1.noop);
2765
      }
2766
2767
      this._activeTrigger[Trigger.CLICK] = false;
2768
      this._activeTrigger[Trigger.FOCUS] = false;
2769
      this._activeTrigger[Trigger.HOVER] = false;
2770
2771
      if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
2772
        $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
2773
      } else {
2774
        complete();
2775
      }
2776
2777
      this._hoverState = '';
2778
    };
2779
2780
    _proto.update = function update() {
2781
      if (this._popper !== null) {
2782
        this._popper.scheduleUpdate();
2783
      }
2784
    }; // Protected
2785
2786
2787
    _proto.isWithContent = function isWithContent() {
2788
      return Boolean(this.getTitle());
2789
    };
2790
2791
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
2792
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
2793
    };
2794
2795
    _proto.getTipElement = function getTipElement() {
2796
      this.tip = this.tip || $$$1(this.config.template)[0];
2797
      return this.tip;
2798
    };
2799
2800
    _proto.setContent = function setContent() {
2801
      var $tip = $$$1(this.getTipElement());
2802
      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
2803
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
2804
    };
2805
2806
    _proto.setElementContent = function setElementContent($element, content) {
2807
      var html = this.config.html;
2808
2809
      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
2810
        // Content is a DOM node or a jQuery
2811
        if (html) {
2812
          if (!$$$1(content).parent().is($element)) {
2813
            $element.empty().append(content);
2814
          }
2815
        } else {
2816
          $element.text($$$1(content).text());
2817
        }
2818
      } else {
2819
        $element[html ? 'html' : 'text'](content);
2820
      }
2821
    };
2822
2823
    _proto.getTitle = function getTitle() {
2824
      var title = this.element.getAttribute('data-original-title');
2825
2826
      if (!title) {
2827
        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
2828
      }
2829
2830
      return title;
2831
    }; // Private
2832
2833
2834
    _proto._getAttachment = function _getAttachment(placement) {
2835
      return AttachmentMap[placement.toUpperCase()];
2836
    };
2837
2838
    _proto._setListeners = function _setListeners() {
2839
      var _this3 = this;
2840
2841
      var triggers = this.config.trigger.split(' ');
2842
      triggers.forEach(function (trigger) {
2843
        if (trigger === 'click') {
2844
          $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
2845
            return _this3.toggle(event);
2846
          });
2847
        } else if (trigger !== Trigger.MANUAL) {
2848
          var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
2849
          var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
2850
          $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
2851
            return _this3._enter(event);
2852
          }).on(eventOut, _this3.config.selector, function (event) {
2853
            return _this3._leave(event);
2854
          });
2855
        }
2856
2857
        $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
2858
          return _this3.hide();
2859
        });
2860
      });
2861
2862
      if (this.config.selector) {
2863
        this.config = _extends({}, this.config, {
2864
          trigger: 'manual',
2865
          selector: ''
2866
        });
2867
      } else {
2868
        this._fixTitle();
2869
      }
2870
    };
2871
2872
    _proto._fixTitle = function _fixTitle() {
2873
      var titleType = typeof this.element.getAttribute('data-original-title');
2874
2875
      if (this.element.getAttribute('title') || titleType !== 'string') {
2876
        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
2877
        this.element.setAttribute('title', '');
2878
      }
2879
    };
2880
2881
    _proto._enter = function _enter(event, context) {
2882
      var dataKey = this.constructor.DATA_KEY;
2883
      context = context || $$$1(event.currentTarget).data(dataKey);
2884
2885
      if (!context) {
2886
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2887
        $$$1(event.currentTarget).data(dataKey, context);
2888
      }
2889
2890
      if (event) {
2891
        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
2892
      }
2893
2894
      if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
2895
        context._hoverState = HoverState.SHOW;
2896
        return;
2897
      }
2898
2899
      clearTimeout(context._timeout);
2900
      context._hoverState = HoverState.SHOW;
2901
2902
      if (!context.config.delay || !context.config.delay.show) {
2903
        context.show();
2904
        return;
2905
      }
2906
2907
      context._timeout = setTimeout(function () {
2908
        if (context._hoverState === HoverState.SHOW) {
2909
          context.show();
2910
        }
2911
      }, context.config.delay.show);
2912
    };
2913
2914
    _proto._leave = function _leave(event, context) {
2915
      var dataKey = this.constructor.DATA_KEY;
2916
      context = context || $$$1(event.currentTarget).data(dataKey);
2917
2918
      if (!context) {
2919
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2920
        $$$1(event.currentTarget).data(dataKey, context);
2921
      }
2922
2923
      if (event) {
2924
        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
2925
      }
2926
2927
      if (context._isWithActiveTrigger()) {
2928
        return;
2929
      }
2930
2931
      clearTimeout(context._timeout);
2932
      context._hoverState = HoverState.OUT;
2933
2934
      if (!context.config.delay || !context.config.delay.hide) {
2935
        context.hide();
2936
        return;
2937
      }
2938
2939
      context._timeout = setTimeout(function () {
2940
        if (context._hoverState === HoverState.OUT) {
2941
          context.hide();
2942
        }
2943
      }, context.config.delay.hide);
2944
    };
2945
2946
    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
2947
      for (var trigger in this._activeTrigger) {
2948
        if (this._activeTrigger[trigger]) {
2949
          return true;
2950
        }
2951
      }
2952
2953
      return false;
2954
    };
2955
2956
    _proto._getConfig = function _getConfig(config) {
2957
      config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
2958
2959
      if (typeof config.delay === 'number') {
2960
        config.delay = {
2961
          show: config.delay,
2962
          hide: config.delay
2963
        };
2964
      }
2965
2966
      if (typeof config.title === 'number') {
2967
        config.title = config.title.toString();
2968
      }
2969
2970
      if (typeof config.content === 'number') {
2971
        config.content = config.content.toString();
2972
      }
2973
2974
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
2975
      return config;
2976
    };
2977
2978
    _proto._getDelegateConfig = function _getDelegateConfig() {
2979
      var config = {};
2980
2981
      if (this.config) {
2982
        for (var key in this.config) {
2983
          if (this.constructor.Default[key] !== this.config[key]) {
2984
            config[key] = this.config[key];
2985
          }
2986
        }
2987
      }
2988
2989
      return config;
2990
    };
2991
2992
    _proto._cleanTipClass = function _cleanTipClass() {
2993
      var $tip = $$$1(this.getTipElement());
2994
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
2995
2996
      if (tabClass !== null && tabClass.length > 0) {
2997
        $tip.removeClass(tabClass.join(''));
2998
      }
2999
    };
3000
3001
    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
3002
      this._cleanTipClass();
3003
3004
      this.addAttachmentClass(this._getAttachment(data.placement));
3005
    };
3006
3007
    _proto._fixTransition = function _fixTransition() {
3008
      var tip = this.getTipElement();
3009
      var initConfigAnimation = this.config.animation;
3010
3011
      if (tip.getAttribute('x-placement') !== null) {
3012
        return;
3013
      }
3014
3015
      $$$1(tip).removeClass(ClassName.FADE);
3016
      this.config.animation = false;
3017
      this.hide();
3018
      this.show();
3019
      this.config.animation = initConfigAnimation;
3020
    }; // Static
3021
3022
3023
    Tooltip._jQueryInterface = function _jQueryInterface(config) {
3024
      return this.each(function () {
3025
        var data = $$$1(this).data(DATA_KEY);
3026
3027
        var _config = typeof config === 'object' && config;
3028
3029
        if (!data && /dispose|hide/.test(config)) {
3030
          return;
3031
        }
3032
3033
        if (!data) {
3034
          data = new Tooltip(this, _config);
3035
          $$$1(this).data(DATA_KEY, data);
3036
        }
3037
3038
        if (typeof config === 'string') {
3039
          if (typeof data[config] === 'undefined') {
3040
            throw new TypeError("No method named \"" + config + "\"");
3041
          }
3042
3043
          data[config]();
3044
        }
3045
      });
3046
    };
3047
3048
    _createClass(Tooltip, null, [{
3049
      key: "VERSION",
3050
      get: function get() {
3051
        return VERSION;
3052
      }
3053
    }, {
3054
      key: "Default",
3055
      get: function get() {
3056
        return Default;
3057
      }
3058
    }, {
3059
      key: "NAME",
3060
      get: function get() {
3061
        return NAME;
3062
      }
3063
    }, {
3064
      key: "DATA_KEY",
3065
      get: function get() {
3066
        return DATA_KEY;
3067
      }
3068
    }, {
3069
      key: "Event",
3070
      get: function get() {
3071
        return Event;
3072
      }
3073
    }, {
3074
      key: "EVENT_KEY",
3075
      get: function get() {
3076
        return EVENT_KEY;
3077
      }
3078
    }, {
3079
      key: "DefaultType",
3080
      get: function get() {
3081
        return DefaultType;
3082
      }
3083
    }]);
3084
    return Tooltip;
3085
  }();
3086
  /**
3087
   * ------------------------------------------------------------------------
3088
   * jQuery
3089
   * ------------------------------------------------------------------------
3090
   */
3091
3092
3093
  $$$1.fn[NAME] = Tooltip._jQueryInterface;
3094
  $$$1.fn[NAME].Constructor = Tooltip;
3095
3096
  $$$1.fn[NAME].noConflict = function () {
3097
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3098
    return Tooltip._jQueryInterface;
3099
  };
3100
3101
  return Tooltip;
3102
}($, Popper);
3103
3104
/**
3105
 * --------------------------------------------------------------------------
3106
 * Bootstrap (v4.0.0): popover.js
3107
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3108
 * --------------------------------------------------------------------------
3109
 */
3110
3111
var Popover = function ($$$1) {
3112
  /**
3113
   * ------------------------------------------------------------------------
3114
   * Constants
3115
   * ------------------------------------------------------------------------
3116
   */
3117
  var NAME = 'popover';
3118
  var VERSION = '4.0.0';
3119
  var DATA_KEY = 'bs.popover';
3120
  var EVENT_KEY = "." + DATA_KEY;
3121
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3122
  var CLASS_PREFIX = 'bs-popover';
3123
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
3124
  var Default = _extends({}, Tooltip.Default, {
3125
    placement: 'right',
3126
    trigger: 'click',
3127
    content: '',
3128
    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3129
  });
3130
  var DefaultType = _extends({}, Tooltip.DefaultType, {
3131
    content: '(string|element|function)'
3132
  });
3133
  var ClassName = {
3134
    FADE: 'fade',
3135
    SHOW: 'show'
3136
  };
3137
  var Selector = {
3138
    TITLE: '.popover-header',
3139
    CONTENT: '.popover-body'
3140
  };
3141
  var Event = {
3142
    HIDE: "hide" + EVENT_KEY,
3143
    HIDDEN: "hidden" + EVENT_KEY,
3144
    SHOW: "show" + EVENT_KEY,
3145
    SHOWN: "shown" + EVENT_KEY,
3146
    INSERTED: "inserted" + EVENT_KEY,
3147
    CLICK: "click" + EVENT_KEY,
3148
    FOCUSIN: "focusin" + EVENT_KEY,
3149
    FOCUSOUT: "focusout" + EVENT_KEY,
3150
    MOUSEENTER: "mouseenter" + EVENT_KEY,
3151
    MOUSELEAVE: "mouseleave" + EVENT_KEY
3152
    /**
3153
     * ------------------------------------------------------------------------
3154
     * Class Definition
3155
     * ------------------------------------------------------------------------
3156
     */
3157
3158
  };
3159
3160
  var Popover =
3161
  /*#__PURE__*/
3162
  function (_Tooltip) {
3163
    _inheritsLoose(Popover, _Tooltip);
3164
3165
    function Popover() {
3166
      return _Tooltip.apply(this, arguments) || this;
3167
    }
3168
3169
    var _proto = Popover.prototype;
3170
3171
    // Overrides
3172
    _proto.isWithContent = function isWithContent() {
3173
      return this.getTitle() || this._getContent();
3174
    };
3175
3176
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3177
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3178
    };
3179
3180
    _proto.getTipElement = function getTipElement() {
3181
      this.tip = this.tip || $$$1(this.config.template)[0];
3182
      return this.tip;
3183
    };
3184
3185
    _proto.setContent = function setContent() {
3186
      var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
3187
3188
      this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
3189
3190
      var content = this._getContent();
3191
3192
      if (typeof content === 'function') {
3193
        content = content.call(this.element);
3194
      }
3195
3196
      this.setElementContent($tip.find(Selector.CONTENT), content);
3197
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
3198
    }; // Private
3199
3200
3201
    _proto._getContent = function _getContent() {
3202
      return this.element.getAttribute('data-content') || this.config.content;
3203
    };
3204
3205
    _proto._cleanTipClass = function _cleanTipClass() {
3206
      var $tip = $$$1(this.getTipElement());
3207
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3208
3209
      if (tabClass !== null && tabClass.length > 0) {
3210
        $tip.removeClass(tabClass.join(''));
3211
      }
3212
    }; // Static
3213
3214
3215
    Popover._jQueryInterface = function _jQueryInterface(config) {
3216
      return this.each(function () {
3217
        var data = $$$1(this).data(DATA_KEY);
3218
3219
        var _config = typeof config === 'object' ? config : null;
3220
3221
        if (!data && /destroy|hide/.test(config)) {
3222
          return;
3223
        }
3224
3225
        if (!data) {
3226
          data = new Popover(this, _config);
3227
          $$$1(this).data(DATA_KEY, data);
3228
        }
3229
3230
        if (typeof config === 'string') {
3231
          if (typeof data[config] === 'undefined') {
3232
            throw new TypeError("No method named \"" + config + "\"");
3233
          }
3234
3235
          data[config]();
3236
        }
3237
      });
3238
    };
3239
3240
    _createClass(Popover, null, [{
3241
      key: "VERSION",
3242
      // Getters
3243
      get: function get() {
3244
        return VERSION;
3245
      }
3246
    }, {
3247
      key: "Default",
3248
      get: function get() {
3249
        return Default;
3250
      }
3251
    }, {
3252
      key: "NAME",
3253
      get: function get() {
3254
        return NAME;
3255
      }
3256
    }, {
3257
      key: "DATA_KEY",
3258
      get: function get() {
3259
        return DATA_KEY;
3260
      }
3261
    }, {
3262
      key: "Event",
3263
      get: function get() {
3264
        return Event;
3265
      }
3266
    }, {
3267
      key: "EVENT_KEY",
3268
      get: function get() {
3269
        return EVENT_KEY;
3270
      }
3271
    }, {
3272
      key: "DefaultType",
3273
      get: function get() {
3274
        return DefaultType;
3275
      }
3276
    }]);
3277
    return Popover;
3278
  }(Tooltip);
3279
  /**
3280
   * ------------------------------------------------------------------------
3281
   * jQuery
3282
   * ------------------------------------------------------------------------
3283
   */
3284
3285
3286
  $$$1.fn[NAME] = Popover._jQueryInterface;
3287
  $$$1.fn[NAME].Constructor = Popover;
3288
3289
  $$$1.fn[NAME].noConflict = function () {
3290
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3291
    return Popover._jQueryInterface;
3292
  };
3293
3294
  return Popover;
3295
}($);
3296
3297
/**
3298
 * --------------------------------------------------------------------------
3299
 * Bootstrap (v4.0.0): scrollspy.js
3300
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3301
 * --------------------------------------------------------------------------
3302
 */
3303
3304
var ScrollSpy = function ($$$1) {
3305
  /**
3306
   * ------------------------------------------------------------------------
3307
   * Constants
3308
   * ------------------------------------------------------------------------
3309
   */
3310
  var NAME = 'scrollspy';
3311
  var VERSION = '4.0.0';
3312
  var DATA_KEY = 'bs.scrollspy';
3313
  var EVENT_KEY = "." + DATA_KEY;
3314
  var DATA_API_KEY = '.data-api';
3315
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3316
  var Default = {
3317
    offset: 10,
3318
    method: 'auto',
3319
    target: ''
3320
  };
3321
  var DefaultType = {
3322
    offset: 'number',
3323
    method: 'string',
3324
    target: '(string|element)'
3325
  };
3326
  var Event = {
3327
    ACTIVATE: "activate" + EVENT_KEY,
3328
    SCROLL: "scroll" + EVENT_KEY,
3329
    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
3330
  };
3331
  var ClassName = {
3332
    DROPDOWN_ITEM: 'dropdown-item',
3333
    DROPDOWN_MENU: 'dropdown-menu',
3334
    ACTIVE: 'active'
3335
  };
3336
  var Selector = {
3337
    DATA_SPY: '[data-spy="scroll"]',
3338
    ACTIVE: '.active',
3339
    NAV_LIST_GROUP: '.nav, .list-group',
3340
    NAV_LINKS: '.nav-link',
3341
    NAV_ITEMS: '.nav-item',
3342
    LIST_ITEMS: '.list-group-item',
3343
    DROPDOWN: '.dropdown',
3344
    DROPDOWN_ITEMS: '.dropdown-item',
3345
    DROPDOWN_TOGGLE: '.dropdown-toggle'
3346
  };
3347
  var OffsetMethod = {
3348
    OFFSET: 'offset',
3349
    POSITION: 'position'
3350
    /**
3351
     * ------------------------------------------------------------------------
3352
     * Class Definition
3353
     * ------------------------------------------------------------------------
3354
     */
3355
3356
  };
3357
3358
  var ScrollSpy =
3359
  /*#__PURE__*/
3360
  function () {
3361
    function ScrollSpy(element, config) {
3362
      var _this = this;
3363
3364
      this._element = element;
3365
      this._scrollElement = element.tagName === 'BODY' ? window : element;
3366
      this._config = this._getConfig(config);
3367
      this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
3368
      this._offsets = [];
3369
      this._targets = [];
3370
      this._activeTarget = null;
3371
      this._scrollHeight = 0;
3372
      $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
3373
        return _this._process(event);
3374
      });
3375
      this.refresh();
3376
3377
      this._process();
3378
    } // Getters
3379
3380
3381
    var _proto = ScrollSpy.prototype;
3382
3383
    // Public
3384
    _proto.refresh = function refresh() {
3385
      var _this2 = this;
3386
3387
      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3388
      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3389
      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3390
      this._offsets = [];
3391
      this._targets = [];
3392
      this._scrollHeight = this._getScrollHeight();
3393
      var targets = $$$1.makeArray($$$1(this._selector));
3394
      targets.map(function (element) {
3395
        var target;
3396
        var targetSelector = Util.getSelectorFromElement(element);
3397
3398
        if (targetSelector) {
3399
          target = $$$1(targetSelector)[0];
3400
        }
3401
3402
        if (target) {
3403
          var targetBCR = target.getBoundingClientRect();
3404
3405
          if (targetBCR.width || targetBCR.height) {
3406
            // TODO (fat): remove sketch reliance on jQuery position/offset
3407
            return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
3408
          }
3409
        }
3410
3411
        return null;
3412
      }).filter(function (item) {
3413
        return item;
3414
      }).sort(function (a, b) {
3415
        return a[0] - b[0];
3416
      }).forEach(function (item) {
3417
        _this2._offsets.push(item[0]);
3418
3419
        _this2._targets.push(item[1]);
3420
      });
3421
    };
3422
3423
    _proto.dispose = function dispose() {
3424
      $$$1.removeData(this._element, DATA_KEY);
3425
      $$$1(this._scrollElement).off(EVENT_KEY);
3426
      this._element = null;
3427
      this._scrollElement = null;
3428
      this._config = null;
3429
      this._selector = null;
3430
      this._offsets = null;
3431
      this._targets = null;
3432
      this._activeTarget = null;
3433
      this._scrollHeight = null;
3434
    }; // Private
3435
3436
3437
    _proto._getConfig = function _getConfig(config) {
3438
      config = _extends({}, Default, config);
3439
3440
      if (typeof config.target !== 'string') {
3441
        var id = $$$1(config.target).attr('id');
3442
3443
        if (!id) {
3444
          id = Util.getUID(NAME);
3445
          $$$1(config.target).attr('id', id);
3446
        }
3447
3448
        config.target = "#" + id;
3449
      }
3450
3451
      Util.typeCheckConfig(NAME, config, DefaultType);
3452
      return config;
3453
    };
3454
3455
    _proto._getScrollTop = function _getScrollTop() {
3456
      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3457
    };
3458
3459
    _proto._getScrollHeight = function _getScrollHeight() {
3460
      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3461
    };
3462
3463
    _proto._getOffsetHeight = function _getOffsetHeight() {
3464
      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3465
    };
3466
3467
    _proto._process = function _process() {
3468
      var scrollTop = this._getScrollTop() + this._config.offset;
3469
3470
      var scrollHeight = this._getScrollHeight();
3471
3472
      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3473
3474
      if (this._scrollHeight !== scrollHeight) {
3475
        this.refresh();
3476
      }
3477
3478
      if (scrollTop >= maxScroll) {
3479
        var target = this._targets[this._targets.length - 1];
3480
3481
        if (this._activeTarget !== target) {
3482
          this._activate(target);
3483
        }
3484
3485
        return;
3486
      }
3487
3488
      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3489
        this._activeTarget = null;
3490
3491
        this._clear();
3492
3493
        return;
3494
      }
3495
3496
      for (var i = this._offsets.length; i--;) {
3497
        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3498
3499
        if (isActiveTarget) {
3500
          this._activate(this._targets[i]);
3501
        }
3502
      }
3503
    };
3504
3505
    _proto._activate = function _activate(target) {
3506
      this._activeTarget = target;
3507
3508
      this._clear();
3509
3510
      var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
3511
3512
3513
      queries = queries.map(function (selector) {
3514
        return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
3515
      });
3516
      var $link = $$$1(queries.join(','));
3517
3518
      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
3519
        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3520
        $link.addClass(ClassName.ACTIVE);
3521
      } else {
3522
        // Set triggered link as active
3523
        $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
3524
        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3525
3526
        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3527
3528
        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
3529
      }
3530
3531
      $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
3532
        relatedTarget: target
3533
      });
3534
    };
3535
3536
    _proto._clear = function _clear() {
3537
      $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
3538
    }; // Static
3539
3540
3541
    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3542
      return this.each(function () {
3543
        var data = $$$1(this).data(DATA_KEY);
3544
3545
        var _config = typeof config === 'object' && config;
3546
3547
        if (!data) {
3548
          data = new ScrollSpy(this, _config);
3549
          $$$1(this).data(DATA_KEY, data);
3550
        }
3551
3552
        if (typeof config === 'string') {
3553
          if (typeof data[config] === 'undefined') {
3554
            throw new TypeError("No method named \"" + config + "\"");
3555
          }
3556
3557
          data[config]();
3558
        }
3559
      });
3560
    };
3561
3562
    _createClass(ScrollSpy, null, [{
3563
      key: "VERSION",
3564
      get: function get() {
3565
        return VERSION;
3566
      }
3567
    }, {
3568
      key: "Default",
3569
      get: function get() {
3570
        return Default;
3571
      }
3572
    }]);
3573
    return ScrollSpy;
3574
  }();
3575
  /**
3576
   * ------------------------------------------------------------------------
3577
   * Data Api implementation
3578
   * ------------------------------------------------------------------------
3579
   */
3580
3581
3582
  $$$1(window).on(Event.LOAD_DATA_API, function () {
3583
    var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
3584
3585
    for (var i = scrollSpys.length; i--;) {
3586
      var $spy = $$$1(scrollSpys[i]);
3587
3588
      ScrollSpy._jQueryInterface.call($spy, $spy.data());
3589
    }
3590
  });
3591
  /**
3592
   * ------------------------------------------------------------------------
3593
   * jQuery
3594
   * ------------------------------------------------------------------------
3595
   */
3596
3597
  $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
3598
  $$$1.fn[NAME].Constructor = ScrollSpy;
3599
3600
  $$$1.fn[NAME].noConflict = function () {
3601
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3602
    return ScrollSpy._jQueryInterface;
3603
  };
3604
3605
  return ScrollSpy;
3606
}($);
3607
3608
/**
3609
 * --------------------------------------------------------------------------
3610
 * Bootstrap (v4.0.0): tab.js
3611
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3612
 * --------------------------------------------------------------------------
3613
 */
3614
3615
var Tab = function ($$$1) {
3616
  /**
3617
   * ------------------------------------------------------------------------
3618
   * Constants
3619
   * ------------------------------------------------------------------------
3620
   */
3621
  var NAME = 'tab';
3622
  var VERSION = '4.0.0';
3623
  var DATA_KEY = 'bs.tab';
3624
  var EVENT_KEY = "." + DATA_KEY;
3625
  var DATA_API_KEY = '.data-api';
3626
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
3627
  var TRANSITION_DURATION = 150;
3628
  var Event = {
3629
    HIDE: "hide" + EVENT_KEY,
3630
    HIDDEN: "hidden" + EVENT_KEY,
3631
    SHOW: "show" + EVENT_KEY,
3632
    SHOWN: "shown" + EVENT_KEY,
3633
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
3634
  };
3635
  var ClassName = {
3636
    DROPDOWN_MENU: 'dropdown-menu',
3637
    ACTIVE: 'active',
3638
    DISABLED: 'disabled',
3639
    FADE: 'fade',
3640
    SHOW: 'show'
3641
  };
3642
  var Selector = {
3643
    DROPDOWN: '.dropdown',
3644
    NAV_LIST_GROUP: '.nav, .list-group',
3645
    ACTIVE: '.active',
3646
    ACTIVE_UL: '> li > .active',
3647
    DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3648
    DROPDOWN_TOGGLE: '.dropdown-toggle',
3649
    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3650
    /**
3651
     * ------------------------------------------------------------------------
3652
     * Class Definition
3653
     * ------------------------------------------------------------------------
3654
     */
3655
3656
  };
3657
3658
  var Tab =
3659
  /*#__PURE__*/
3660
  function () {
3661
    function Tab(element) {
3662
      this._element = element;
3663
    } // Getters
3664
3665
3666
    var _proto = Tab.prototype;
3667
3668
    // Public
3669
    _proto.show = function show() {
3670
      var _this = this;
3671
3672
      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) {
3673
        return;
3674
      }
3675
3676
      var target;
3677
      var previous;
3678
      var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0];
3679
      var selector = Util.getSelectorFromElement(this._element);
3680
3681
      if (listElement) {
3682
        var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
3683
        previous = $$$1.makeArray($$$1(listElement).find(itemSelector));
3684
        previous = previous[previous.length - 1];
3685
      }
3686
3687
      var hideEvent = $$$1.Event(Event.HIDE, {
3688
        relatedTarget: this._element
3689
      });
3690
      var showEvent = $$$1.Event(Event.SHOW, {
3691
        relatedTarget: previous
3692
      });
3693
3694
      if (previous) {
3695
        $$$1(previous).trigger(hideEvent);
3696
      }
3697
3698
      $$$1(this._element).trigger(showEvent);
3699
3700
      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
3701
        return;
3702
      }
3703
3704
      if (selector) {
3705
        target = $$$1(selector)[0];
3706
      }
3707
3708
      this._activate(this._element, listElement);
3709
3710
      var complete = function complete() {
3711
        var hiddenEvent = $$$1.Event(Event.HIDDEN, {
3712
          relatedTarget: _this._element
3713
        });
3714
        var shownEvent = $$$1.Event(Event.SHOWN, {
3715
          relatedTarget: previous
3716
        });
3717
        $$$1(previous).trigger(hiddenEvent);
3718
        $$$1(_this._element).trigger(shownEvent);
3719
      };
3720
3721
      if (target) {
3722
        this._activate(target, target.parentNode, complete);
3723
      } else {
3724
        complete();
3725
      }
3726
    };
3727
3728
    _proto.dispose = function dispose() {
3729
      $$$1.removeData(this._element, DATA_KEY);
3730
      this._element = null;
3731
    }; // Private
3732
3733
3734
    _proto._activate = function _activate(element, container, callback) {
3735
      var _this2 = this;
3736
3737
      var activeElements;
3738
3739
      if (container.nodeName === 'UL') {
3740
        activeElements = $$$1(container).find(Selector.ACTIVE_UL);
3741
      } else {
3742
        activeElements = $$$1(container).children(Selector.ACTIVE);
3743
      }
3744
3745
      var active = activeElements[0];
3746
      var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE);
3747
3748
      var complete = function complete() {
3749
        return _this2._transitionComplete(element, active, callback);
3750
      };
3751
3752
      if (active && isTransitioning) {
3753
        $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
3754
      } else {
3755
        complete();
3756
      }
3757
    };
3758
3759
    _proto._transitionComplete = function _transitionComplete(element, active, callback) {
3760
      if (active) {
3761
        $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
3762
        var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
3763
3764
        if (dropdownChild) {
3765
          $$$1(dropdownChild).removeClass(ClassName.ACTIVE);
3766
        }
3767
3768
        if (active.getAttribute('role') === 'tab') {
3769
          active.setAttribute('aria-selected', false);
3770
        }
3771
      }
3772
3773
      $$$1(element).addClass(ClassName.ACTIVE);
3774
3775
      if (element.getAttribute('role') === 'tab') {
3776
        element.setAttribute('aria-selected', true);
3777
      }
3778
3779
      Util.reflow(element);
3780
      $$$1(element).addClass(ClassName.SHOW);
3781
3782
      if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
3783
        var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0];
3784
3785
        if (dropdownElement) {
3786
          $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
3787
        }
3788
3789
        element.setAttribute('aria-expanded', true);
3790
      }
3791
3792
      if (callback) {
3793
        callback();
3794
      }
3795
    }; // Static
3796
3797
3798
    Tab._jQueryInterface = function _jQueryInterface(config) {
3799
      return this.each(function () {
3800
        var $this = $$$1(this);
3801
        var data = $this.data(DATA_KEY);
3802
3803
        if (!data) {
3804
          data = new Tab(this);
3805
          $this.data(DATA_KEY, data);
3806
        }
3807
3808
        if (typeof config === 'string') {
3809
          if (typeof data[config] === 'undefined') {
3810
            throw new TypeError("No method named \"" + config + "\"");
3811
          }
3812
3813
          data[config]();
3814
        }
3815
      });
3816
    };
3817
3818
    _createClass(Tab, null, [{
3819
      key: "VERSION",
3820
      get: function get() {
3821
        return VERSION;
3822
      }
3823
    }]);
3824
    return Tab;
3825
  }();
3826
  /**
3827
   * ------------------------------------------------------------------------
3828
   * Data Api implementation
3829
   * ------------------------------------------------------------------------
3830
   */
3831
3832
3833
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
3834
    event.preventDefault();
3835
3836
    Tab._jQueryInterface.call($$$1(this), 'show');
3837
  });
3838
  /**
3839
   * ------------------------------------------------------------------------
3840
   * jQuery
3841
   * ------------------------------------------------------------------------
3842
   */
3843
3844
  $$$1.fn[NAME] = Tab._jQueryInterface;
3845
  $$$1.fn[NAME].Constructor = Tab;
3846
3847
  $$$1.fn[NAME].noConflict = function () {
3848
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
3849
    return Tab._jQueryInterface;
3850
  };
3851
3852
  return Tab;
3853
}($);
3854
3855
/**
3856
 * --------------------------------------------------------------------------
3857
 * Bootstrap (v4.0.0-alpha.6): index.js
3858
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
3859
 * --------------------------------------------------------------------------
3860
 */
3861
3862
(function ($$$1) {
3863
  if (typeof $$$1 === 'undefined') {
3864
    throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
3865
  }
3866
3867
  var version = $$$1.fn.jquery.split(' ')[0].split('.');
3868
  var minMajor = 1;
3869
  var ltMajor = 2;
3870
  var minMinor = 9;
3871
  var minPatch = 1;
3872
  var maxMajor = 4;
3873
3874
  if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
3875
    throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
3876
  }
3877
})($);
3878
3879
exports.Util = Util;
3880
exports.Alert = Alert;
3881
exports.Button = Button;
3882
exports.Carousel = Carousel;
3883
exports.Collapse = Collapse;
3884
exports.Dropdown = Dropdown;
3885
exports.Modal = Modal;
3886
exports.Popover = Popover;
3887
exports.Scrollspy = ScrollSpy;
3888
exports.Tab = Tab;
3889
exports.Tooltip = Tooltip;
3890
3891
Object.defineProperty(exports, '__esModule', { value: true });
3892
3893
})));
3894
//# sourceMappingURL=bootstrap.js.map
3895