PageRenderTime 197ms CodeModel.GetById 18ms app.highlight 155ms RepoModel.GetById 1ms app.codeStats 1ms

/js/bootstrap.js

https://bitbucket.org/denissilva/cgpdi_admin
JavaScript | 3894 lines | 2797 code | 743 blank | 354 comment | 447 complexity | d810a38ca2781735a27cba0625a027db MD5 | raw file
   1/*!
   2  * Bootstrap v4.0.0 (https://getbootstrap.com)
   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'] : $;
  13Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
  14
  15function _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
  25function _createClass(Constructor, protoProps, staticProps) {
  26  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  27  if (staticProps) _defineProperties(Constructor, staticProps);
  28  return Constructor;
  29}
  30
  31function _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
  49function _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
  62var 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
 202var 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
 374var 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
 537var 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
1036var 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
1405var 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
1870var 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
2446var 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
3111var 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
3304var 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
3615var 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
3879exports.Util = Util;
3880exports.Alert = Alert;
3881exports.Button = Button;
3882exports.Carousel = Carousel;
3883exports.Collapse = Collapse;
3884exports.Dropdown = Dropdown;
3885exports.Modal = Modal;
3886exports.Popover = Popover;
3887exports.Scrollspy = ScrollSpy;
3888exports.Tab = Tab;
3889exports.Tooltip = Tooltip;
3890
3891Object.defineProperty(exports, '__esModule', { value: true });
3892
3893})));
3894//# sourceMappingURL=bootstrap.js.map