From 369059c925560f0d46f21cc51336eed419fb4ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lie=20DELHAIE?= Date: Sat, 24 Feb 2024 11:39:56 +0100 Subject: [PATCH] add js script, remove vendor --- css/sb-admin-2.css | 64 +- favicon.ico | Bin 0 -> 25214 bytes img/nvidia-ai-art.jpg | Bin 298488 -> 0 bytes index.html | 269 +- js/demo/chart-area-demo.js | 93 - js/sb-admin-2.js | 56 - js/sb-admin-2.min.js | 7 - js/script.js | 112 + no_gpu.html | 13 +- vendor/bootstrap/js/bootstrap.bundle.js | 7045 ----- vendor/bootstrap/js/bootstrap.bundle.js.map | 1 - vendor/bootstrap/js/bootstrap.bundle.min.js | 7 - .../bootstrap/js/bootstrap.bundle.min.js.map | 1 - vendor/bootstrap/js/bootstrap.js | 4432 ---- vendor/bootstrap/js/bootstrap.js.map | 1 - vendor/bootstrap/js/bootstrap.min.js | 7 - vendor/bootstrap/js/bootstrap.min.js.map | 1 - vendor/bootstrap/scss/_alert.scss | 52 - vendor/bootstrap/scss/_badge.scss | 54 - vendor/bootstrap/scss/_breadcrumb.scss | 42 - vendor/bootstrap/scss/_button-group.scss | 163 - vendor/bootstrap/scss/_buttons.scss | 142 - vendor/bootstrap/scss/_card.scss | 286 - vendor/bootstrap/scss/_carousel.scss | 197 - vendor/bootstrap/scss/_close.scss | 40 - vendor/bootstrap/scss/_code.scss | 48 - vendor/bootstrap/scss/_custom-forms.scss | 526 - vendor/bootstrap/scss/_dropdown.scss | 192 - vendor/bootstrap/scss/_forms.scss | 347 - vendor/bootstrap/scss/_functions.scss | 144 - vendor/bootstrap/scss/_grid.scss | 73 - vendor/bootstrap/scss/_images.scss | 42 - vendor/bootstrap/scss/_input-group.scss | 208 - vendor/bootstrap/scss/_jumbotron.scss | 17 - vendor/bootstrap/scss/_list-group.scss | 154 - vendor/bootstrap/scss/_media.scss | 8 - vendor/bootstrap/scss/_mixins.scss | 47 - vendor/bootstrap/scss/_modal.scss | 240 - vendor/bootstrap/scss/_nav.scss | 120 - vendor/bootstrap/scss/_navbar.scss | 332 - vendor/bootstrap/scss/_pagination.scss | 74 - vendor/bootstrap/scss/_popover.scss | 170 - vendor/bootstrap/scss/_print.scss | 141 - vendor/bootstrap/scss/_progress.scss | 47 - vendor/bootstrap/scss/_reboot.scss | 484 - vendor/bootstrap/scss/_root.scss | 19 - vendor/bootstrap/scss/_spinners.scss | 65 - vendor/bootstrap/scss/_tables.scss | 185 - vendor/bootstrap/scss/_toasts.scss | 46 - vendor/bootstrap/scss/_tooltip.scss | 115 - vendor/bootstrap/scss/_transitions.scss | 20 - vendor/bootstrap/scss/_type.scss | 125 - vendor/bootstrap/scss/_utilities.scss | 18 - vendor/bootstrap/scss/_variables.scss | 1146 - vendor/bootstrap/scss/bootstrap-grid.scss | 30 - vendor/bootstrap/scss/bootstrap-reboot.scss | 12 - vendor/bootstrap/scss/bootstrap.scss | 44 - vendor/bootstrap/scss/mixins/_alert.scss | 13 - .../scss/mixins/_background-variant.scss | 23 - vendor/bootstrap/scss/mixins/_badge.scss | 17 - .../bootstrap/scss/mixins/_border-radius.scss | 76 - vendor/bootstrap/scss/mixins/_box-shadow.scss | 20 - .../bootstrap/scss/mixins/_breakpoints.scss | 123 - vendor/bootstrap/scss/mixins/_buttons.scss | 110 - vendor/bootstrap/scss/mixins/_caret.scss | 62 - vendor/bootstrap/scss/mixins/_clearfix.scss | 7 - vendor/bootstrap/scss/mixins/_deprecate.scss | 10 - vendor/bootstrap/scss/mixins/_float.scss | 14 - vendor/bootstrap/scss/mixins/_forms.scss | 185 - vendor/bootstrap/scss/mixins/_gradients.scss | 45 - .../scss/mixins/_grid-framework.scss | 80 - vendor/bootstrap/scss/mixins/_grid.scss | 69 - vendor/bootstrap/scss/mixins/_hover.scss | 37 - vendor/bootstrap/scss/mixins/_image.scss | 36 - vendor/bootstrap/scss/mixins/_list-group.scss | 21 - vendor/bootstrap/scss/mixins/_lists.scss | 7 - .../bootstrap/scss/mixins/_nav-divider.scss | 11 - vendor/bootstrap/scss/mixins/_pagination.scss | 22 - vendor/bootstrap/scss/mixins/_reset-text.scss | 17 - vendor/bootstrap/scss/mixins/_resize.scss | 6 - .../bootstrap/scss/mixins/_screen-reader.scss | 34 - vendor/bootstrap/scss/mixins/_size.scss | 7 - vendor/bootstrap/scss/mixins/_table-row.scss | 39 - .../bootstrap/scss/mixins/_text-emphasis.scss | 17 - vendor/bootstrap/scss/mixins/_text-hide.scss | 11 - .../bootstrap/scss/mixins/_text-truncate.scss | 8 - vendor/bootstrap/scss/mixins/_transition.scss | 26 - vendor/bootstrap/scss/mixins/_visibility.scss | 8 - vendor/bootstrap/scss/utilities/_align.scss | 8 - .../bootstrap/scss/utilities/_background.scss | 19 - vendor/bootstrap/scss/utilities/_borders.scss | 75 - .../bootstrap/scss/utilities/_clearfix.scss | 3 - vendor/bootstrap/scss/utilities/_display.scss | 26 - vendor/bootstrap/scss/utilities/_embed.scss | 39 - vendor/bootstrap/scss/utilities/_flex.scss | 51 - vendor/bootstrap/scss/utilities/_float.scss | 11 - .../scss/utilities/_interactions.scss | 5 - .../bootstrap/scss/utilities/_overflow.scss | 5 - .../bootstrap/scss/utilities/_position.scss | 32 - .../scss/utilities/_screenreaders.scss | 11 - vendor/bootstrap/scss/utilities/_shadows.scss | 6 - vendor/bootstrap/scss/utilities/_sizing.scss | 20 - vendor/bootstrap/scss/utilities/_spacing.scss | 73 - .../scss/utilities/_stretched-link.scss | 19 - vendor/bootstrap/scss/utilities/_text.scss | 72 - .../bootstrap/scss/utilities/_visibility.scss | 13 - vendor/bootstrap/scss/vendor/_rfs.scss | 204 - vendor/chart.js/Chart.bundle.js | 20776 --------------- vendor/chart.js/Chart.bundle.min.js | 7 - vendor/chart.js/Chart.js | 16172 ------------ vendor/chart.js/Chart.min.js | 7 - vendor/datatables/dataTables.bootstrap4.css | 210 - vendor/datatables/dataTables.bootstrap4.js | 184 - .../datatables/dataTables.bootstrap4.min.css | 1 - .../datatables/dataTables.bootstrap4.min.js | 8 - vendor/datatables/jquery.dataTables.js | 15387 ----------- vendor/datatables/jquery.dataTables.min.js | 168 - vendor/fontawesome-free/LICENSE.txt | 34 - vendor/fontawesome-free/attribution.js | 3 - vendor/fontawesome-free/css/all.css | 4619 ---- vendor/fontawesome-free/css/all.min.css | 5 - vendor/fontawesome-free/css/brands.css | 15 - vendor/fontawesome-free/css/brands.min.css | 5 - vendor/fontawesome-free/css/fontawesome.css | 4585 ---- .../fontawesome-free/css/fontawesome.min.css | 5 - vendor/fontawesome-free/css/regular.css | 15 - vendor/fontawesome-free/css/regular.min.css | 5 - vendor/fontawesome-free/css/solid.css | 16 - vendor/fontawesome-free/css/solid.min.css | 5 - vendor/fontawesome-free/css/svg-with-js.css | 371 - .../fontawesome-free/css/svg-with-js.min.css | 5 - vendor/fontawesome-free/css/v4-shims.css | 2172 -- vendor/fontawesome-free/css/v4-shims.min.css | 5 - vendor/fontawesome-free/js/all.js | 4467 ---- vendor/fontawesome-free/js/all.min.js | 5 - vendor/fontawesome-free/js/brands.js | 586 - vendor/fontawesome-free/js/brands.min.js | 5 - .../fontawesome-free/js/conflict-detection.js | 998 - .../js/conflict-detection.min.js | 5 - vendor/fontawesome-free/js/fontawesome.js | 2483 -- vendor/fontawesome-free/js/fontawesome.min.js | 5 - vendor/fontawesome-free/js/regular.js | 280 - vendor/fontawesome-free/js/regular.min.js | 5 - vendor/fontawesome-free/js/solid.js | 1130 - vendor/fontawesome-free/js/solid.min.js | 5 - vendor/fontawesome-free/js/v4-shims.js | 68 - vendor/fontawesome-free/js/v4-shims.min.js | 5 - vendor/fontawesome-free/less/_animated.less | 19 - .../less/_bordered-pulled.less | 16 - vendor/fontawesome-free/less/_core.less | 12 - .../fontawesome-free/less/_fixed-width.less | 6 - vendor/fontawesome-free/less/_icons.less | 1462 -- vendor/fontawesome-free/less/_larger.less | 27 - vendor/fontawesome-free/less/_list.less | 18 - vendor/fontawesome-free/less/_mixins.less | 56 - .../less/_rotated-flipped.less | 24 - .../fontawesome-free/less/_screen-reader.less | 5 - vendor/fontawesome-free/less/_shims.less | 2066 -- vendor/fontawesome-free/less/_stacked.less | 22 - vendor/fontawesome-free/less/_variables.less | 1474 -- vendor/fontawesome-free/less/brands.less | 23 - vendor/fontawesome-free/less/fontawesome.less | 16 - vendor/fontawesome-free/less/regular.less | 23 - vendor/fontawesome-free/less/solid.less | 24 - vendor/fontawesome-free/less/v4-shims.less | 6 - .../fontawesome-free/metadata/categories.yml | 2572 -- vendor/fontawesome-free/metadata/icons.yml | 21783 ---------------- vendor/fontawesome-free/metadata/shims.yml | 298 - vendor/fontawesome-free/metadata/sponsors.yml | 744 - vendor/fontawesome-free/package.json | 58 - vendor/fontawesome-free/scss/_animated.scss | 20 - .../scss/_bordered-pulled.scss | 20 - vendor/fontawesome-free/scss/_core.scss | 21 - .../fontawesome-free/scss/_fixed-width.scss | 6 - vendor/fontawesome-free/scss/_icons.scss | 1462 -- vendor/fontawesome-free/scss/_larger.scss | 23 - vendor/fontawesome-free/scss/_list.scss | 18 - vendor/fontawesome-free/scss/_mixins.scss | 56 - .../scss/_rotated-flipped.scss | 24 - .../fontawesome-free/scss/_screen-reader.scss | 5 - vendor/fontawesome-free/scss/_shims.scss | 2066 -- vendor/fontawesome-free/scss/_stacked.scss | 31 - vendor/fontawesome-free/scss/_variables.scss | 1479 -- vendor/fontawesome-free/scss/brands.scss | 23 - vendor/fontawesome-free/scss/fontawesome.scss | 16 - vendor/fontawesome-free/scss/regular.scss | 23 - vendor/fontawesome-free/scss/solid.scss | 24 - vendor/fontawesome-free/scss/v4-shims.scss | 6 - vendor/fontawesome-free/sprites/brands.svg | 1381 - vendor/fontawesome-free/sprites/regular.svg | 463 - vendor/fontawesome-free/sprites/solid.svg | 3013 --- vendor/fontawesome-free/svgs/brands/500px.svg | 1 - .../svgs/brands/accessible-icon.svg | 1 - .../fontawesome-free/svgs/brands/accusoft.svg | 1 - .../svgs/brands/acquisitions-incorporated.svg | 1 - vendor/fontawesome-free/svgs/brands/adn.svg | 1 - .../fontawesome-free/svgs/brands/adversal.svg | 1 - .../svgs/brands/affiliatetheme.svg | 1 - .../fontawesome-free/svgs/brands/airbnb.svg | 1 - .../fontawesome-free/svgs/brands/algolia.svg | 1 - .../fontawesome-free/svgs/brands/alipay.svg | 1 - .../svgs/brands/amazon-pay.svg | 1 - .../fontawesome-free/svgs/brands/amazon.svg | 1 - .../fontawesome-free/svgs/brands/amilia.svg | 1 - .../fontawesome-free/svgs/brands/android.svg | 1 - .../svgs/brands/angellist.svg | 1 - .../svgs/brands/angrycreative.svg | 1 - .../fontawesome-free/svgs/brands/angular.svg | 1 - .../svgs/brands/app-store-ios.svg | 1 - .../svgs/brands/app-store.svg | 1 - vendor/fontawesome-free/svgs/brands/apper.svg | 1 - .../svgs/brands/apple-pay.svg | 1 - vendor/fontawesome-free/svgs/brands/apple.svg | 1 - .../svgs/brands/artstation.svg | 1 - .../svgs/brands/asymmetrik.svg | 1 - .../svgs/brands/atlassian.svg | 1 - .../fontawesome-free/svgs/brands/audible.svg | 1 - .../svgs/brands/autoprefixer.svg | 1 - .../fontawesome-free/svgs/brands/avianex.svg | 1 - .../fontawesome-free/svgs/brands/aviato.svg | 1 - vendor/fontawesome-free/svgs/brands/aws.svg | 1 - .../fontawesome-free/svgs/brands/bandcamp.svg | 1 - .../svgs/brands/battle-net.svg | 1 - .../svgs/brands/behance-square.svg | 1 - .../fontawesome-free/svgs/brands/behance.svg | 1 - .../svgs/brands/bimobject.svg | 1 - .../svgs/brands/bitbucket.svg | 1 - .../fontawesome-free/svgs/brands/bitcoin.svg | 1 - vendor/fontawesome-free/svgs/brands/bity.svg | 1 - .../svgs/brands/black-tie.svg | 1 - .../svgs/brands/blackberry.svg | 1 - .../svgs/brands/blogger-b.svg | 1 - .../fontawesome-free/svgs/brands/blogger.svg | 1 - .../svgs/brands/bluetooth-b.svg | 1 - .../svgs/brands/bluetooth.svg | 1 - .../svgs/brands/bootstrap.svg | 1 - vendor/fontawesome-free/svgs/brands/btc.svg | 1 - .../fontawesome-free/svgs/brands/buffer.svg | 1 - .../svgs/brands/buromobelexperte.svg | 1 - .../svgs/brands/buy-n-large.svg | 1 - .../svgs/brands/buysellads.svg | 1 - .../svgs/brands/canadian-maple-leaf.svg | 1 - .../svgs/brands/cc-amazon-pay.svg | 1 - .../fontawesome-free/svgs/brands/cc-amex.svg | 1 - .../svgs/brands/cc-apple-pay.svg | 1 - .../svgs/brands/cc-diners-club.svg | 1 - .../svgs/brands/cc-discover.svg | 1 - .../fontawesome-free/svgs/brands/cc-jcb.svg | 1 - .../svgs/brands/cc-mastercard.svg | 1 - .../svgs/brands/cc-paypal.svg | 1 - .../svgs/brands/cc-stripe.svg | 1 - .../fontawesome-free/svgs/brands/cc-visa.svg | 1 - .../svgs/brands/centercode.svg | 1 - .../fontawesome-free/svgs/brands/centos.svg | 1 - .../fontawesome-free/svgs/brands/chrome.svg | 1 - .../svgs/brands/chromecast.svg | 1 - .../svgs/brands/cloudflare.svg | 1 - .../svgs/brands/cloudscale.svg | 1 - .../svgs/brands/cloudsmith.svg | 1 - .../svgs/brands/cloudversify.svg | 1 - .../fontawesome-free/svgs/brands/codepen.svg | 1 - .../fontawesome-free/svgs/brands/codiepie.svg | 1 - .../svgs/brands/confluence.svg | 1 - .../svgs/brands/connectdevelop.svg | 1 - .../fontawesome-free/svgs/brands/contao.svg | 1 - .../svgs/brands/cotton-bureau.svg | 1 - .../fontawesome-free/svgs/brands/cpanel.svg | 1 - .../svgs/brands/creative-commons-by.svg | 1 - .../svgs/brands/creative-commons-nc-eu.svg | 1 - .../svgs/brands/creative-commons-nc-jp.svg | 1 - .../svgs/brands/creative-commons-nc.svg | 1 - .../svgs/brands/creative-commons-nd.svg | 1 - .../svgs/brands/creative-commons-pd-alt.svg | 1 - .../svgs/brands/creative-commons-pd.svg | 1 - .../svgs/brands/creative-commons-remix.svg | 1 - .../svgs/brands/creative-commons-sa.svg | 1 - .../brands/creative-commons-sampling-plus.svg | 1 - .../svgs/brands/creative-commons-sampling.svg | 1 - .../svgs/brands/creative-commons-share.svg | 1 - .../svgs/brands/creative-commons-zero.svg | 1 - .../svgs/brands/creative-commons.svg | 1 - .../svgs/brands/critical-role.svg | 1 - .../fontawesome-free/svgs/brands/css3-alt.svg | 1 - vendor/fontawesome-free/svgs/brands/css3.svg | 1 - .../svgs/brands/cuttlefish.svg | 1 - .../svgs/brands/d-and-d-beyond.svg | 1 - .../fontawesome-free/svgs/brands/d-and-d.svg | 1 - .../svgs/brands/dailymotion.svg | 1 - .../fontawesome-free/svgs/brands/dashcube.svg | 1 - .../fontawesome-free/svgs/brands/deezer.svg | 1 - .../svgs/brands/delicious.svg | 1 - .../svgs/brands/deploydog.svg | 1 - .../fontawesome-free/svgs/brands/deskpro.svg | 1 - vendor/fontawesome-free/svgs/brands/dev.svg | 1 - .../svgs/brands/deviantart.svg | 1 - vendor/fontawesome-free/svgs/brands/dhl.svg | 1 - .../fontawesome-free/svgs/brands/diaspora.svg | 1 - vendor/fontawesome-free/svgs/brands/digg.svg | 1 - .../svgs/brands/digital-ocean.svg | 1 - .../fontawesome-free/svgs/brands/discord.svg | 1 - .../svgs/brands/discourse.svg | 1 - .../fontawesome-free/svgs/brands/dochub.svg | 1 - .../fontawesome-free/svgs/brands/docker.svg | 1 - .../svgs/brands/draft2digital.svg | 1 - .../svgs/brands/dribbble-square.svg | 1 - .../fontawesome-free/svgs/brands/dribbble.svg | 1 - .../fontawesome-free/svgs/brands/dropbox.svg | 1 - .../fontawesome-free/svgs/brands/drupal.svg | 1 - .../fontawesome-free/svgs/brands/dyalog.svg | 1 - .../svgs/brands/earlybirds.svg | 1 - vendor/fontawesome-free/svgs/brands/ebay.svg | 1 - .../svgs/brands/edge-legacy.svg | 1 - vendor/fontawesome-free/svgs/brands/edge.svg | 1 - .../svgs/brands/elementor.svg | 1 - vendor/fontawesome-free/svgs/brands/ello.svg | 1 - vendor/fontawesome-free/svgs/brands/ember.svg | 1 - .../fontawesome-free/svgs/brands/empire.svg | 1 - .../fontawesome-free/svgs/brands/envira.svg | 1 - .../fontawesome-free/svgs/brands/erlang.svg | 1 - .../fontawesome-free/svgs/brands/ethereum.svg | 1 - vendor/fontawesome-free/svgs/brands/etsy.svg | 1 - .../fontawesome-free/svgs/brands/evernote.svg | 1 - .../svgs/brands/expeditedssl.svg | 1 - .../svgs/brands/facebook-f.svg | 1 - .../svgs/brands/facebook-messenger.svg | 1 - .../svgs/brands/facebook-square.svg | 1 - .../fontawesome-free/svgs/brands/facebook.svg | 1 - .../svgs/brands/fantasy-flight-games.svg | 1 - vendor/fontawesome-free/svgs/brands/fedex.svg | 1 - .../fontawesome-free/svgs/brands/fedora.svg | 1 - vendor/fontawesome-free/svgs/brands/figma.svg | 1 - .../svgs/brands/firefox-browser.svg | 1 - .../fontawesome-free/svgs/brands/firefox.svg | 1 - .../svgs/brands/first-order-alt.svg | 1 - .../svgs/brands/first-order.svg | 1 - .../svgs/brands/firstdraft.svg | 1 - .../fontawesome-free/svgs/brands/flickr.svg | 1 - .../svgs/brands/flipboard.svg | 1 - vendor/fontawesome-free/svgs/brands/fly.svg | 1 - .../svgs/brands/font-awesome-alt.svg | 1 - .../svgs/brands/font-awesome-flag.svg | 1 - .../svgs/brands/font-awesome-logo-full.svg | 1 - .../svgs/brands/font-awesome.svg | 1 - .../svgs/brands/fonticons-fi.svg | 1 - .../svgs/brands/fonticons.svg | 1 - .../svgs/brands/fort-awesome-alt.svg | 1 - .../svgs/brands/fort-awesome.svg | 1 - .../fontawesome-free/svgs/brands/forumbee.svg | 1 - .../svgs/brands/foursquare.svg | 1 - .../svgs/brands/free-code-camp.svg | 1 - .../fontawesome-free/svgs/brands/freebsd.svg | 1 - .../fontawesome-free/svgs/brands/fulcrum.svg | 1 - .../svgs/brands/galactic-republic.svg | 1 - .../svgs/brands/galactic-senate.svg | 1 - .../svgs/brands/get-pocket.svg | 1 - .../svgs/brands/gg-circle.svg | 1 - vendor/fontawesome-free/svgs/brands/gg.svg | 1 - .../fontawesome-free/svgs/brands/git-alt.svg | 1 - .../svgs/brands/git-square.svg | 1 - vendor/fontawesome-free/svgs/brands/git.svg | 1 - .../svgs/brands/github-alt.svg | 1 - .../svgs/brands/github-square.svg | 1 - .../fontawesome-free/svgs/brands/github.svg | 1 - .../svgs/brands/gitkraken.svg | 1 - .../fontawesome-free/svgs/brands/gitlab.svg | 1 - .../fontawesome-free/svgs/brands/gitter.svg | 1 - .../fontawesome-free/svgs/brands/glide-g.svg | 1 - vendor/fontawesome-free/svgs/brands/glide.svg | 1 - .../fontawesome-free/svgs/brands/gofore.svg | 1 - .../svgs/brands/goodreads-g.svg | 1 - .../svgs/brands/goodreads.svg | 1 - .../svgs/brands/google-drive.svg | 1 - .../svgs/brands/google-pay.svg | 1 - .../svgs/brands/google-play.svg | 1 - .../svgs/brands/google-plus-g.svg | 1 - .../svgs/brands/google-plus-square.svg | 1 - .../svgs/brands/google-plus.svg | 1 - .../svgs/brands/google-wallet.svg | 1 - .../fontawesome-free/svgs/brands/google.svg | 1 - .../fontawesome-free/svgs/brands/gratipay.svg | 1 - vendor/fontawesome-free/svgs/brands/grav.svg | 1 - .../fontawesome-free/svgs/brands/gripfire.svg | 1 - vendor/fontawesome-free/svgs/brands/grunt.svg | 1 - .../fontawesome-free/svgs/brands/guilded.svg | 1 - vendor/fontawesome-free/svgs/brands/gulp.svg | 1 - .../svgs/brands/hacker-news-square.svg | 1 - .../svgs/brands/hacker-news.svg | 1 - .../svgs/brands/hackerrank.svg | 1 - vendor/fontawesome-free/svgs/brands/hips.svg | 1 - .../svgs/brands/hire-a-helper.svg | 1 - vendor/fontawesome-free/svgs/brands/hive.svg | 1 - vendor/fontawesome-free/svgs/brands/hooli.svg | 1 - .../fontawesome-free/svgs/brands/hornbill.svg | 1 - .../fontawesome-free/svgs/brands/hotjar.svg | 1 - vendor/fontawesome-free/svgs/brands/houzz.svg | 1 - vendor/fontawesome-free/svgs/brands/html5.svg | 1 - .../fontawesome-free/svgs/brands/hubspot.svg | 1 - vendor/fontawesome-free/svgs/brands/ideal.svg | 1 - vendor/fontawesome-free/svgs/brands/imdb.svg | 1 - .../fontawesome-free/svgs/brands/innosoft.svg | 1 - .../svgs/brands/instagram-square.svg | 1 - .../svgs/brands/instagram.svg | 1 - .../fontawesome-free/svgs/brands/instalod.svg | 1 - .../fontawesome-free/svgs/brands/intercom.svg | 1 - .../svgs/brands/internet-explorer.svg | 1 - .../fontawesome-free/svgs/brands/invision.svg | 1 - .../fontawesome-free/svgs/brands/ioxhost.svg | 1 - .../fontawesome-free/svgs/brands/itch-io.svg | 1 - .../svgs/brands/itunes-note.svg | 1 - .../fontawesome-free/svgs/brands/itunes.svg | 1 - vendor/fontawesome-free/svgs/brands/java.svg | 1 - .../svgs/brands/jedi-order.svg | 1 - .../fontawesome-free/svgs/brands/jenkins.svg | 1 - vendor/fontawesome-free/svgs/brands/jira.svg | 1 - vendor/fontawesome-free/svgs/brands/joget.svg | 1 - .../fontawesome-free/svgs/brands/joomla.svg | 1 - .../svgs/brands/js-square.svg | 1 - vendor/fontawesome-free/svgs/brands/js.svg | 1 - .../fontawesome-free/svgs/brands/jsfiddle.svg | 1 - .../fontawesome-free/svgs/brands/kaggle.svg | 1 - .../fontawesome-free/svgs/brands/keybase.svg | 1 - .../fontawesome-free/svgs/brands/keycdn.svg | 1 - .../svgs/brands/kickstarter-k.svg | 1 - .../svgs/brands/kickstarter.svg | 1 - .../fontawesome-free/svgs/brands/korvue.svg | 1 - .../fontawesome-free/svgs/brands/laravel.svg | 1 - .../svgs/brands/lastfm-square.svg | 1 - .../fontawesome-free/svgs/brands/lastfm.svg | 1 - .../fontawesome-free/svgs/brands/leanpub.svg | 1 - vendor/fontawesome-free/svgs/brands/less.svg | 1 - vendor/fontawesome-free/svgs/brands/line.svg | 1 - .../svgs/brands/linkedin-in.svg | 1 - .../fontawesome-free/svgs/brands/linkedin.svg | 1 - .../fontawesome-free/svgs/brands/linode.svg | 1 - vendor/fontawesome-free/svgs/brands/linux.svg | 1 - vendor/fontawesome-free/svgs/brands/lyft.svg | 1 - .../fontawesome-free/svgs/brands/magento.svg | 1 - .../svgs/brands/mailchimp.svg | 1 - .../svgs/brands/mandalorian.svg | 1 - .../fontawesome-free/svgs/brands/markdown.svg | 1 - .../fontawesome-free/svgs/brands/mastodon.svg | 1 - .../fontawesome-free/svgs/brands/maxcdn.svg | 1 - vendor/fontawesome-free/svgs/brands/mdb.svg | 1 - .../fontawesome-free/svgs/brands/medapps.svg | 1 - .../fontawesome-free/svgs/brands/medium-m.svg | 1 - .../fontawesome-free/svgs/brands/medium.svg | 1 - vendor/fontawesome-free/svgs/brands/medrt.svg | 1 - .../fontawesome-free/svgs/brands/meetup.svg | 1 - .../fontawesome-free/svgs/brands/megaport.svg | 1 - .../fontawesome-free/svgs/brands/mendeley.svg | 1 - .../svgs/brands/microblog.svg | 1 - .../svgs/brands/microsoft.svg | 1 - vendor/fontawesome-free/svgs/brands/mix.svg | 1 - .../fontawesome-free/svgs/brands/mixcloud.svg | 1 - vendor/fontawesome-free/svgs/brands/mixer.svg | 1 - .../fontawesome-free/svgs/brands/mizuni.svg | 1 - vendor/fontawesome-free/svgs/brands/modx.svg | 1 - .../fontawesome-free/svgs/brands/monero.svg | 1 - .../fontawesome-free/svgs/brands/napster.svg | 1 - vendor/fontawesome-free/svgs/brands/neos.svg | 1 - .../fontawesome-free/svgs/brands/nimblr.svg | 1 - .../fontawesome-free/svgs/brands/node-js.svg | 1 - vendor/fontawesome-free/svgs/brands/node.svg | 1 - vendor/fontawesome-free/svgs/brands/npm.svg | 1 - vendor/fontawesome-free/svgs/brands/ns8.svg | 1 - .../svgs/brands/nutritionix.svg | 1 - .../svgs/brands/octopus-deploy.svg | 1 - .../svgs/brands/odnoklassniki-square.svg | 1 - .../svgs/brands/odnoklassniki.svg | 1 - .../svgs/brands/old-republic.svg | 1 - .../fontawesome-free/svgs/brands/opencart.svg | 1 - .../fontawesome-free/svgs/brands/openid.svg | 1 - vendor/fontawesome-free/svgs/brands/opera.svg | 1 - .../svgs/brands/optin-monster.svg | 1 - vendor/fontawesome-free/svgs/brands/orcid.svg | 1 - vendor/fontawesome-free/svgs/brands/osi.svg | 1 - vendor/fontawesome-free/svgs/brands/page4.svg | 1 - .../svgs/brands/pagelines.svg | 1 - .../fontawesome-free/svgs/brands/palfed.svg | 1 - .../fontawesome-free/svgs/brands/patreon.svg | 1 - .../fontawesome-free/svgs/brands/paypal.svg | 1 - .../svgs/brands/penny-arcade.svg | 1 - .../fontawesome-free/svgs/brands/perbyte.svg | 1 - .../svgs/brands/periscope.svg | 1 - .../svgs/brands/phabricator.svg | 1 - .../svgs/brands/phoenix-framework.svg | 1 - .../svgs/brands/phoenix-squadron.svg | 1 - vendor/fontawesome-free/svgs/brands/php.svg | 1 - .../svgs/brands/pied-piper-alt.svg | 1 - .../svgs/brands/pied-piper-hat.svg | 1 - .../svgs/brands/pied-piper-pp.svg | 1 - .../svgs/brands/pied-piper-square.svg | 1 - .../svgs/brands/pied-piper.svg | 1 - .../svgs/brands/pinterest-p.svg | 1 - .../svgs/brands/pinterest-square.svg | 1 - .../svgs/brands/pinterest.svg | 1 - .../svgs/brands/playstation.svg | 1 - .../svgs/brands/product-hunt.svg | 1 - .../fontawesome-free/svgs/brands/pushed.svg | 1 - .../fontawesome-free/svgs/brands/python.svg | 1 - vendor/fontawesome-free/svgs/brands/qq.svg | 1 - .../svgs/brands/quinscape.svg | 1 - vendor/fontawesome-free/svgs/brands/quora.svg | 1 - .../svgs/brands/r-project.svg | 1 - .../svgs/brands/raspberry-pi.svg | 1 - .../fontawesome-free/svgs/brands/ravelry.svg | 1 - vendor/fontawesome-free/svgs/brands/react.svg | 1 - .../svgs/brands/reacteurope.svg | 1 - .../fontawesome-free/svgs/brands/readme.svg | 1 - vendor/fontawesome-free/svgs/brands/rebel.svg | 1 - .../svgs/brands/red-river.svg | 1 - .../svgs/brands/reddit-alien.svg | 1 - .../svgs/brands/reddit-square.svg | 1 - .../fontawesome-free/svgs/brands/reddit.svg | 1 - .../fontawesome-free/svgs/brands/redhat.svg | 1 - .../fontawesome-free/svgs/brands/renren.svg | 1 - .../fontawesome-free/svgs/brands/replyd.svg | 1 - .../svgs/brands/researchgate.svg | 1 - .../svgs/brands/resolving.svg | 1 - vendor/fontawesome-free/svgs/brands/rev.svg | 1 - .../svgs/brands/rocketchat.svg | 1 - .../fontawesome-free/svgs/brands/rockrms.svg | 1 - vendor/fontawesome-free/svgs/brands/rust.svg | 1 - .../fontawesome-free/svgs/brands/safari.svg | 1 - .../svgs/brands/salesforce.svg | 1 - vendor/fontawesome-free/svgs/brands/sass.svg | 1 - .../fontawesome-free/svgs/brands/schlix.svg | 1 - .../fontawesome-free/svgs/brands/scribd.svg | 1 - .../svgs/brands/searchengin.svg | 1 - .../fontawesome-free/svgs/brands/sellcast.svg | 1 - .../fontawesome-free/svgs/brands/sellsy.svg | 1 - .../svgs/brands/servicestack.svg | 1 - .../svgs/brands/shirtsinbulk.svg | 1 - .../fontawesome-free/svgs/brands/shopify.svg | 1 - .../fontawesome-free/svgs/brands/shopware.svg | 1 - .../svgs/brands/simplybuilt.svg | 1 - .../fontawesome-free/svgs/brands/sistrix.svg | 1 - vendor/fontawesome-free/svgs/brands/sith.svg | 1 - .../fontawesome-free/svgs/brands/sketch.svg | 1 - .../fontawesome-free/svgs/brands/skyatlas.svg | 1 - vendor/fontawesome-free/svgs/brands/skype.svg | 1 - .../svgs/brands/slack-hash.svg | 1 - vendor/fontawesome-free/svgs/brands/slack.svg | 1 - .../svgs/brands/slideshare.svg | 1 - .../svgs/brands/snapchat-ghost.svg | 1 - .../svgs/brands/snapchat-square.svg | 1 - .../fontawesome-free/svgs/brands/snapchat.svg | 1 - .../svgs/brands/soundcloud.svg | 1 - .../svgs/brands/sourcetree.svg | 1 - .../fontawesome-free/svgs/brands/speakap.svg | 1 - .../svgs/brands/speaker-deck.svg | 1 - .../fontawesome-free/svgs/brands/spotify.svg | 1 - .../svgs/brands/squarespace.svg | 1 - .../svgs/brands/stack-exchange.svg | 1 - .../svgs/brands/stack-overflow.svg | 1 - .../svgs/brands/stackpath.svg | 1 - .../svgs/brands/staylinked.svg | 1 - .../svgs/brands/steam-square.svg | 1 - .../svgs/brands/steam-symbol.svg | 1 - vendor/fontawesome-free/svgs/brands/steam.svg | 1 - .../svgs/brands/sticker-mule.svg | 1 - .../fontawesome-free/svgs/brands/strava.svg | 1 - .../fontawesome-free/svgs/brands/stripe-s.svg | 1 - .../fontawesome-free/svgs/brands/stripe.svg | 1 - .../svgs/brands/studiovinari.svg | 1 - .../svgs/brands/stumbleupon-circle.svg | 1 - .../svgs/brands/stumbleupon.svg | 1 - .../svgs/brands/superpowers.svg | 1 - .../fontawesome-free/svgs/brands/supple.svg | 1 - vendor/fontawesome-free/svgs/brands/suse.svg | 1 - vendor/fontawesome-free/svgs/brands/swift.svg | 1 - .../fontawesome-free/svgs/brands/symfony.svg | 1 - .../svgs/brands/teamspeak.svg | 1 - .../svgs/brands/telegram-plane.svg | 1 - .../fontawesome-free/svgs/brands/telegram.svg | 1 - .../svgs/brands/tencent-weibo.svg | 1 - .../svgs/brands/the-red-yeti.svg | 1 - .../fontawesome-free/svgs/brands/themeco.svg | 1 - .../svgs/brands/themeisle.svg | 1 - .../svgs/brands/think-peaks.svg | 1 - .../fontawesome-free/svgs/brands/tiktok.svg | 1 - .../svgs/brands/trade-federation.svg | 1 - .../fontawesome-free/svgs/brands/trello.svg | 1 - .../svgs/brands/tripadvisor.svg | 1 - .../svgs/brands/tumblr-square.svg | 1 - .../fontawesome-free/svgs/brands/tumblr.svg | 1 - .../fontawesome-free/svgs/brands/twitch.svg | 1 - .../svgs/brands/twitter-square.svg | 1 - .../fontawesome-free/svgs/brands/twitter.svg | 1 - vendor/fontawesome-free/svgs/brands/typo3.svg | 1 - vendor/fontawesome-free/svgs/brands/uber.svg | 1 - .../fontawesome-free/svgs/brands/ubuntu.svg | 1 - vendor/fontawesome-free/svgs/brands/uikit.svg | 1 - .../fontawesome-free/svgs/brands/umbraco.svg | 1 - .../svgs/brands/uncharted.svg | 1 - .../svgs/brands/uniregistry.svg | 1 - vendor/fontawesome-free/svgs/brands/unity.svg | 1 - .../fontawesome-free/svgs/brands/unsplash.svg | 1 - .../fontawesome-free/svgs/brands/untappd.svg | 1 - vendor/fontawesome-free/svgs/brands/ups.svg | 1 - vendor/fontawesome-free/svgs/brands/usb.svg | 1 - vendor/fontawesome-free/svgs/brands/usps.svg | 1 - .../fontawesome-free/svgs/brands/ussunnah.svg | 1 - .../fontawesome-free/svgs/brands/vaadin.svg | 1 - .../fontawesome-free/svgs/brands/viacoin.svg | 1 - .../svgs/brands/viadeo-square.svg | 1 - .../fontawesome-free/svgs/brands/viadeo.svg | 1 - vendor/fontawesome-free/svgs/brands/viber.svg | 1 - .../svgs/brands/vimeo-square.svg | 1 - .../fontawesome-free/svgs/brands/vimeo-v.svg | 1 - vendor/fontawesome-free/svgs/brands/vimeo.svg | 1 - vendor/fontawesome-free/svgs/brands/vine.svg | 1 - vendor/fontawesome-free/svgs/brands/vk.svg | 1 - vendor/fontawesome-free/svgs/brands/vnv.svg | 1 - vendor/fontawesome-free/svgs/brands/vuejs.svg | 1 - .../svgs/brands/watchman-monitoring.svg | 1 - vendor/fontawesome-free/svgs/brands/waze.svg | 1 - .../fontawesome-free/svgs/brands/weebly.svg | 1 - vendor/fontawesome-free/svgs/brands/weibo.svg | 1 - .../fontawesome-free/svgs/brands/weixin.svg | 1 - .../svgs/brands/whatsapp-square.svg | 1 - .../fontawesome-free/svgs/brands/whatsapp.svg | 1 - vendor/fontawesome-free/svgs/brands/whmcs.svg | 1 - .../svgs/brands/wikipedia-w.svg | 1 - .../fontawesome-free/svgs/brands/windows.svg | 1 - vendor/fontawesome-free/svgs/brands/wix.svg | 1 - .../svgs/brands/wizards-of-the-coast.svg | 1 - vendor/fontawesome-free/svgs/brands/wodu.svg | 1 - .../svgs/brands/wolf-pack-battalion.svg | 1 - .../svgs/brands/wordpress-simple.svg | 1 - .../svgs/brands/wordpress.svg | 1 - .../svgs/brands/wpbeginner.svg | 1 - .../svgs/brands/wpexplorer.svg | 1 - .../fontawesome-free/svgs/brands/wpforms.svg | 1 - .../fontawesome-free/svgs/brands/wpressr.svg | 1 - vendor/fontawesome-free/svgs/brands/xbox.svg | 1 - .../svgs/brands/xing-square.svg | 1 - vendor/fontawesome-free/svgs/brands/xing.svg | 1 - .../svgs/brands/y-combinator.svg | 1 - vendor/fontawesome-free/svgs/brands/yahoo.svg | 1 - .../fontawesome-free/svgs/brands/yammer.svg | 1 - .../svgs/brands/yandex-international.svg | 1 - .../fontawesome-free/svgs/brands/yandex.svg | 1 - vendor/fontawesome-free/svgs/brands/yarn.svg | 1 - vendor/fontawesome-free/svgs/brands/yelp.svg | 1 - vendor/fontawesome-free/svgs/brands/yoast.svg | 1 - .../svgs/brands/youtube-square.svg | 1 - .../fontawesome-free/svgs/brands/youtube.svg | 1 - vendor/fontawesome-free/svgs/brands/zhihu.svg | 1 - .../svgs/regular/address-book.svg | 1 - .../svgs/regular/address-card.svg | 1 - .../fontawesome-free/svgs/regular/angry.svg | 1 - .../svgs/regular/arrow-alt-circle-down.svg | 1 - .../svgs/regular/arrow-alt-circle-left.svg | 1 - .../svgs/regular/arrow-alt-circle-right.svg | 1 - .../svgs/regular/arrow-alt-circle-up.svg | 1 - .../svgs/regular/bell-slash.svg | 1 - vendor/fontawesome-free/svgs/regular/bell.svg | 1 - .../svgs/regular/bookmark.svg | 1 - .../svgs/regular/building.svg | 1 - .../svgs/regular/calendar-alt.svg | 1 - .../svgs/regular/calendar-check.svg | 1 - .../svgs/regular/calendar-minus.svg | 1 - .../svgs/regular/calendar-plus.svg | 1 - .../svgs/regular/calendar-times.svg | 1 - .../svgs/regular/calendar.svg | 1 - .../svgs/regular/caret-square-down.svg | 1 - .../svgs/regular/caret-square-left.svg | 1 - .../svgs/regular/caret-square-right.svg | 1 - .../svgs/regular/caret-square-up.svg | 1 - .../svgs/regular/chart-bar.svg | 1 - .../svgs/regular/check-circle.svg | 1 - .../svgs/regular/check-square.svg | 1 - .../fontawesome-free/svgs/regular/circle.svg | 1 - .../svgs/regular/clipboard.svg | 1 - .../fontawesome-free/svgs/regular/clock.svg | 1 - .../fontawesome-free/svgs/regular/clone.svg | 1 - .../svgs/regular/closed-captioning.svg | 1 - .../svgs/regular/comment-alt.svg | 1 - .../svgs/regular/comment-dots.svg | 1 - .../fontawesome-free/svgs/regular/comment.svg | 1 - .../svgs/regular/comments.svg | 1 - .../fontawesome-free/svgs/regular/compass.svg | 1 - vendor/fontawesome-free/svgs/regular/copy.svg | 1 - .../svgs/regular/copyright.svg | 1 - .../svgs/regular/credit-card.svg | 1 - .../fontawesome-free/svgs/regular/dizzy.svg | 1 - .../svgs/regular/dot-circle.svg | 1 - vendor/fontawesome-free/svgs/regular/edit.svg | 1 - .../svgs/regular/envelope-open.svg | 1 - .../svgs/regular/envelope.svg | 1 - .../svgs/regular/eye-slash.svg | 1 - vendor/fontawesome-free/svgs/regular/eye.svg | 1 - .../svgs/regular/file-alt.svg | 1 - .../svgs/regular/file-archive.svg | 1 - .../svgs/regular/file-audio.svg | 1 - .../svgs/regular/file-code.svg | 1 - .../svgs/regular/file-excel.svg | 1 - .../svgs/regular/file-image.svg | 1 - .../svgs/regular/file-pdf.svg | 1 - .../svgs/regular/file-powerpoint.svg | 1 - .../svgs/regular/file-video.svg | 1 - .../svgs/regular/file-word.svg | 1 - vendor/fontawesome-free/svgs/regular/file.svg | 1 - vendor/fontawesome-free/svgs/regular/flag.svg | 1 - .../fontawesome-free/svgs/regular/flushed.svg | 1 - .../svgs/regular/folder-open.svg | 1 - .../fontawesome-free/svgs/regular/folder.svg | 1 - .../svgs/regular/font-awesome-logo-full.svg | 1 - .../svgs/regular/frown-open.svg | 1 - .../fontawesome-free/svgs/regular/frown.svg | 1 - .../fontawesome-free/svgs/regular/futbol.svg | 1 - vendor/fontawesome-free/svgs/regular/gem.svg | 1 - .../fontawesome-free/svgs/regular/grimace.svg | 1 - .../svgs/regular/grin-alt.svg | 1 - .../svgs/regular/grin-beam-sweat.svg | 1 - .../svgs/regular/grin-beam.svg | 1 - .../svgs/regular/grin-hearts.svg | 1 - .../svgs/regular/grin-squint-tears.svg | 1 - .../svgs/regular/grin-squint.svg | 1 - .../svgs/regular/grin-stars.svg | 1 - .../svgs/regular/grin-tears.svg | 1 - .../svgs/regular/grin-tongue-squint.svg | 1 - .../svgs/regular/grin-tongue-wink.svg | 1 - .../svgs/regular/grin-tongue.svg | 1 - .../svgs/regular/grin-wink.svg | 1 - vendor/fontawesome-free/svgs/regular/grin.svg | 1 - .../svgs/regular/hand-lizard.svg | 1 - .../svgs/regular/hand-paper.svg | 1 - .../svgs/regular/hand-peace.svg | 1 - .../svgs/regular/hand-point-down.svg | 1 - .../svgs/regular/hand-point-left.svg | 1 - .../svgs/regular/hand-point-right.svg | 1 - .../svgs/regular/hand-point-up.svg | 1 - .../svgs/regular/hand-pointer.svg | 1 - .../svgs/regular/hand-rock.svg | 1 - .../svgs/regular/hand-scissors.svg | 1 - .../svgs/regular/hand-spock.svg | 1 - .../svgs/regular/handshake.svg | 1 - vendor/fontawesome-free/svgs/regular/hdd.svg | 1 - .../fontawesome-free/svgs/regular/heart.svg | 1 - .../svgs/regular/hospital.svg | 1 - .../svgs/regular/hourglass.svg | 1 - .../svgs/regular/id-badge.svg | 1 - .../fontawesome-free/svgs/regular/id-card.svg | 1 - .../fontawesome-free/svgs/regular/image.svg | 1 - .../fontawesome-free/svgs/regular/images.svg | 1 - .../svgs/regular/keyboard.svg | 1 - .../svgs/regular/kiss-beam.svg | 1 - .../svgs/regular/kiss-wink-heart.svg | 1 - vendor/fontawesome-free/svgs/regular/kiss.svg | 1 - .../svgs/regular/laugh-beam.svg | 1 - .../svgs/regular/laugh-squint.svg | 1 - .../svgs/regular/laugh-wink.svg | 1 - .../fontawesome-free/svgs/regular/laugh.svg | 1 - .../fontawesome-free/svgs/regular/lemon.svg | 1 - .../svgs/regular/life-ring.svg | 1 - .../svgs/regular/lightbulb.svg | 1 - .../svgs/regular/list-alt.svg | 1 - vendor/fontawesome-free/svgs/regular/map.svg | 1 - .../svgs/regular/meh-blank.svg | 1 - .../svgs/regular/meh-rolling-eyes.svg | 1 - vendor/fontawesome-free/svgs/regular/meh.svg | 1 - .../svgs/regular/minus-square.svg | 1 - .../svgs/regular/money-bill-alt.svg | 1 - vendor/fontawesome-free/svgs/regular/moon.svg | 1 - .../svgs/regular/newspaper.svg | 1 - .../svgs/regular/object-group.svg | 1 - .../svgs/regular/object-ungroup.svg | 1 - .../svgs/regular/paper-plane.svg | 1 - .../svgs/regular/pause-circle.svg | 1 - .../svgs/regular/play-circle.svg | 1 - .../svgs/regular/plus-square.svg | 1 - .../svgs/regular/question-circle.svg | 1 - .../svgs/regular/registered.svg | 1 - .../fontawesome-free/svgs/regular/sad-cry.svg | 1 - .../svgs/regular/sad-tear.svg | 1 - vendor/fontawesome-free/svgs/regular/save.svg | 1 - .../svgs/regular/share-square.svg | 1 - .../svgs/regular/smile-beam.svg | 1 - .../svgs/regular/smile-wink.svg | 1 - .../fontawesome-free/svgs/regular/smile.svg | 1 - .../svgs/regular/snowflake.svg | 1 - .../fontawesome-free/svgs/regular/square.svg | 1 - .../svgs/regular/star-half.svg | 1 - vendor/fontawesome-free/svgs/regular/star.svg | 1 - .../svgs/regular/sticky-note.svg | 1 - .../svgs/regular/stop-circle.svg | 1 - vendor/fontawesome-free/svgs/regular/sun.svg | 1 - .../svgs/regular/surprise.svg | 1 - .../svgs/regular/thumbs-down.svg | 1 - .../svgs/regular/thumbs-up.svg | 1 - .../svgs/regular/times-circle.svg | 1 - .../fontawesome-free/svgs/regular/tired.svg | 1 - .../svgs/regular/trash-alt.svg | 1 - .../svgs/regular/user-circle.svg | 1 - vendor/fontawesome-free/svgs/regular/user.svg | 1 - .../svgs/regular/window-close.svg | 1 - .../svgs/regular/window-maximize.svg | 1 - .../svgs/regular/window-minimize.svg | 1 - .../svgs/regular/window-restore.svg | 1 - vendor/fontawesome-free/svgs/solid/ad.svg | 1 - .../svgs/solid/address-book.svg | 1 - .../svgs/solid/address-card.svg | 1 - vendor/fontawesome-free/svgs/solid/adjust.svg | 1 - .../svgs/solid/air-freshener.svg | 1 - .../svgs/solid/align-center.svg | 1 - .../svgs/solid/align-justify.svg | 1 - .../svgs/solid/align-left.svg | 1 - .../svgs/solid/align-right.svg | 1 - .../fontawesome-free/svgs/solid/allergies.svg | 1 - .../fontawesome-free/svgs/solid/ambulance.svg | 1 - .../american-sign-language-interpreting.svg | 1 - vendor/fontawesome-free/svgs/solid/anchor.svg | 1 - .../svgs/solid/angle-double-down.svg | 1 - .../svgs/solid/angle-double-left.svg | 1 - .../svgs/solid/angle-double-right.svg | 1 - .../svgs/solid/angle-double-up.svg | 1 - .../svgs/solid/angle-down.svg | 1 - .../svgs/solid/angle-left.svg | 1 - .../svgs/solid/angle-right.svg | 1 - .../fontawesome-free/svgs/solid/angle-up.svg | 1 - vendor/fontawesome-free/svgs/solid/angry.svg | 1 - vendor/fontawesome-free/svgs/solid/ankh.svg | 1 - .../fontawesome-free/svgs/solid/apple-alt.svg | 1 - .../fontawesome-free/svgs/solid/archive.svg | 1 - .../fontawesome-free/svgs/solid/archway.svg | 1 - .../svgs/solid/arrow-alt-circle-down.svg | 1 - .../svgs/solid/arrow-alt-circle-left.svg | 1 - .../svgs/solid/arrow-alt-circle-right.svg | 1 - .../svgs/solid/arrow-alt-circle-up.svg | 1 - .../svgs/solid/arrow-circle-down.svg | 1 - .../svgs/solid/arrow-circle-left.svg | 1 - .../svgs/solid/arrow-circle-right.svg | 1 - .../svgs/solid/arrow-circle-up.svg | 1 - .../svgs/solid/arrow-down.svg | 1 - .../svgs/solid/arrow-left.svg | 1 - .../svgs/solid/arrow-right.svg | 1 - .../fontawesome-free/svgs/solid/arrow-up.svg | 1 - .../svgs/solid/arrows-alt-h.svg | 1 - .../svgs/solid/arrows-alt-v.svg | 1 - .../svgs/solid/arrows-alt.svg | 1 - .../solid/assistive-listening-systems.svg | 1 - .../fontawesome-free/svgs/solid/asterisk.svg | 1 - vendor/fontawesome-free/svgs/solid/at.svg | 1 - vendor/fontawesome-free/svgs/solid/atlas.svg | 1 - vendor/fontawesome-free/svgs/solid/atom.svg | 1 - .../svgs/solid/audio-description.svg | 1 - vendor/fontawesome-free/svgs/solid/award.svg | 1 - .../svgs/solid/baby-carriage.svg | 1 - vendor/fontawesome-free/svgs/solid/baby.svg | 1 - .../fontawesome-free/svgs/solid/backspace.svg | 1 - .../fontawesome-free/svgs/solid/backward.svg | 1 - vendor/fontawesome-free/svgs/solid/bacon.svg | 1 - .../fontawesome-free/svgs/solid/bacteria.svg | 1 - .../fontawesome-free/svgs/solid/bacterium.svg | 1 - vendor/fontawesome-free/svgs/solid/bahai.svg | 1 - .../svgs/solid/balance-scale-left.svg | 1 - .../svgs/solid/balance-scale-right.svg | 1 - .../svgs/solid/balance-scale.svg | 1 - vendor/fontawesome-free/svgs/solid/ban.svg | 1 - .../fontawesome-free/svgs/solid/band-aid.svg | 1 - .../fontawesome-free/svgs/solid/barcode.svg | 1 - vendor/fontawesome-free/svgs/solid/bars.svg | 1 - .../svgs/solid/baseball-ball.svg | 1 - .../svgs/solid/basketball-ball.svg | 1 - vendor/fontawesome-free/svgs/solid/bath.svg | 1 - .../svgs/solid/battery-empty.svg | 1 - .../svgs/solid/battery-full.svg | 1 - .../svgs/solid/battery-half.svg | 1 - .../svgs/solid/battery-quarter.svg | 1 - .../svgs/solid/battery-three-quarters.svg | 1 - vendor/fontawesome-free/svgs/solid/bed.svg | 1 - vendor/fontawesome-free/svgs/solid/beer.svg | 1 - .../svgs/solid/bell-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/bell.svg | 1 - .../svgs/solid/bezier-curve.svg | 1 - vendor/fontawesome-free/svgs/solid/bible.svg | 1 - .../fontawesome-free/svgs/solid/bicycle.svg | 1 - vendor/fontawesome-free/svgs/solid/biking.svg | 1 - .../svgs/solid/binoculars.svg | 1 - .../fontawesome-free/svgs/solid/biohazard.svg | 1 - .../svgs/solid/birthday-cake.svg | 1 - .../svgs/solid/blender-phone.svg | 1 - .../fontawesome-free/svgs/solid/blender.svg | 1 - vendor/fontawesome-free/svgs/solid/blind.svg | 1 - vendor/fontawesome-free/svgs/solid/blog.svg | 1 - vendor/fontawesome-free/svgs/solid/bold.svg | 1 - vendor/fontawesome-free/svgs/solid/bolt.svg | 1 - vendor/fontawesome-free/svgs/solid/bomb.svg | 1 - vendor/fontawesome-free/svgs/solid/bone.svg | 1 - vendor/fontawesome-free/svgs/solid/bong.svg | 1 - .../fontawesome-free/svgs/solid/book-dead.svg | 1 - .../svgs/solid/book-medical.svg | 1 - .../fontawesome-free/svgs/solid/book-open.svg | 1 - .../svgs/solid/book-reader.svg | 1 - vendor/fontawesome-free/svgs/solid/book.svg | 1 - .../fontawesome-free/svgs/solid/bookmark.svg | 1 - .../svgs/solid/border-all.svg | 1 - .../svgs/solid/border-none.svg | 1 - .../svgs/solid/border-style.svg | 1 - .../svgs/solid/bowling-ball.svg | 1 - .../fontawesome-free/svgs/solid/box-open.svg | 1 - .../svgs/solid/box-tissue.svg | 1 - vendor/fontawesome-free/svgs/solid/box.svg | 1 - vendor/fontawesome-free/svgs/solid/boxes.svg | 1 - .../fontawesome-free/svgs/solid/braille.svg | 1 - vendor/fontawesome-free/svgs/solid/brain.svg | 1 - .../svgs/solid/bread-slice.svg | 1 - .../svgs/solid/briefcase-medical.svg | 1 - .../fontawesome-free/svgs/solid/briefcase.svg | 1 - .../svgs/solid/broadcast-tower.svg | 1 - vendor/fontawesome-free/svgs/solid/broom.svg | 1 - vendor/fontawesome-free/svgs/solid/brush.svg | 1 - vendor/fontawesome-free/svgs/solid/bug.svg | 1 - .../fontawesome-free/svgs/solid/building.svg | 1 - .../fontawesome-free/svgs/solid/bullhorn.svg | 1 - .../fontawesome-free/svgs/solid/bullseye.svg | 1 - vendor/fontawesome-free/svgs/solid/burn.svg | 1 - .../fontawesome-free/svgs/solid/bus-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/bus.svg | 1 - .../svgs/solid/business-time.svg | 1 - .../svgs/solid/calculator.svg | 1 - .../svgs/solid/calendar-alt.svg | 1 - .../svgs/solid/calendar-check.svg | 1 - .../svgs/solid/calendar-day.svg | 1 - .../svgs/solid/calendar-minus.svg | 1 - .../svgs/solid/calendar-plus.svg | 1 - .../svgs/solid/calendar-times.svg | 1 - .../svgs/solid/calendar-week.svg | 1 - .../fontawesome-free/svgs/solid/calendar.svg | 1 - .../svgs/solid/camera-retro.svg | 1 - vendor/fontawesome-free/svgs/solid/camera.svg | 1 - .../svgs/solid/campground.svg | 1 - .../svgs/solid/candy-cane.svg | 1 - .../fontawesome-free/svgs/solid/cannabis.svg | 1 - .../fontawesome-free/svgs/solid/capsules.svg | 1 - .../fontawesome-free/svgs/solid/car-alt.svg | 1 - .../svgs/solid/car-battery.svg | 1 - .../fontawesome-free/svgs/solid/car-crash.svg | 1 - .../fontawesome-free/svgs/solid/car-side.svg | 1 - vendor/fontawesome-free/svgs/solid/car.svg | 1 - .../fontawesome-free/svgs/solid/caravan.svg | 1 - .../svgs/solid/caret-down.svg | 1 - .../svgs/solid/caret-left.svg | 1 - .../svgs/solid/caret-right.svg | 1 - .../svgs/solid/caret-square-down.svg | 1 - .../svgs/solid/caret-square-left.svg | 1 - .../svgs/solid/caret-square-right.svg | 1 - .../svgs/solid/caret-square-up.svg | 1 - .../fontawesome-free/svgs/solid/caret-up.svg | 1 - vendor/fontawesome-free/svgs/solid/carrot.svg | 1 - .../svgs/solid/cart-arrow-down.svg | 1 - .../fontawesome-free/svgs/solid/cart-plus.svg | 1 - .../svgs/solid/cash-register.svg | 1 - vendor/fontawesome-free/svgs/solid/cat.svg | 1 - .../svgs/solid/certificate.svg | 1 - vendor/fontawesome-free/svgs/solid/chair.svg | 1 - .../svgs/solid/chalkboard-teacher.svg | 1 - .../svgs/solid/chalkboard.svg | 1 - .../svgs/solid/charging-station.svg | 1 - .../svgs/solid/chart-area.svg | 1 - .../fontawesome-free/svgs/solid/chart-bar.svg | 1 - .../svgs/solid/chart-line.svg | 1 - .../fontawesome-free/svgs/solid/chart-pie.svg | 1 - .../svgs/solid/check-circle.svg | 1 - .../svgs/solid/check-double.svg | 1 - .../svgs/solid/check-square.svg | 1 - vendor/fontawesome-free/svgs/solid/check.svg | 1 - vendor/fontawesome-free/svgs/solid/cheese.svg | 1 - .../svgs/solid/chess-bishop.svg | 1 - .../svgs/solid/chess-board.svg | 1 - .../svgs/solid/chess-king.svg | 1 - .../svgs/solid/chess-knight.svg | 1 - .../svgs/solid/chess-pawn.svg | 1 - .../svgs/solid/chess-queen.svg | 1 - .../svgs/solid/chess-rook.svg | 1 - vendor/fontawesome-free/svgs/solid/chess.svg | 1 - .../svgs/solid/chevron-circle-down.svg | 1 - .../svgs/solid/chevron-circle-left.svg | 1 - .../svgs/solid/chevron-circle-right.svg | 1 - .../svgs/solid/chevron-circle-up.svg | 1 - .../svgs/solid/chevron-down.svg | 1 - .../svgs/solid/chevron-left.svg | 1 - .../svgs/solid/chevron-right.svg | 1 - .../svgs/solid/chevron-up.svg | 1 - vendor/fontawesome-free/svgs/solid/child.svg | 1 - vendor/fontawesome-free/svgs/solid/church.svg | 1 - .../svgs/solid/circle-notch.svg | 1 - vendor/fontawesome-free/svgs/solid/circle.svg | 1 - vendor/fontawesome-free/svgs/solid/city.svg | 1 - .../svgs/solid/clinic-medical.svg | 1 - .../svgs/solid/clipboard-check.svg | 1 - .../svgs/solid/clipboard-list.svg | 1 - .../fontawesome-free/svgs/solid/clipboard.svg | 1 - vendor/fontawesome-free/svgs/solid/clock.svg | 1 - vendor/fontawesome-free/svgs/solid/clone.svg | 1 - .../svgs/solid/closed-captioning.svg | 1 - .../svgs/solid/cloud-download-alt.svg | 1 - .../svgs/solid/cloud-meatball.svg | 1 - .../svgs/solid/cloud-moon-rain.svg | 1 - .../svgs/solid/cloud-moon.svg | 1 - .../svgs/solid/cloud-rain.svg | 1 - .../svgs/solid/cloud-showers-heavy.svg | 1 - .../svgs/solid/cloud-sun-rain.svg | 1 - .../fontawesome-free/svgs/solid/cloud-sun.svg | 1 - .../svgs/solid/cloud-upload-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/cloud.svg | 1 - .../fontawesome-free/svgs/solid/cocktail.svg | 1 - .../svgs/solid/code-branch.svg | 1 - vendor/fontawesome-free/svgs/solid/code.svg | 1 - vendor/fontawesome-free/svgs/solid/coffee.svg | 1 - vendor/fontawesome-free/svgs/solid/cog.svg | 1 - vendor/fontawesome-free/svgs/solid/cogs.svg | 1 - vendor/fontawesome-free/svgs/solid/coins.svg | 1 - .../fontawesome-free/svgs/solid/columns.svg | 1 - .../svgs/solid/comment-alt.svg | 1 - .../svgs/solid/comment-dollar.svg | 1 - .../svgs/solid/comment-dots.svg | 1 - .../svgs/solid/comment-medical.svg | 1 - .../svgs/solid/comment-slash.svg | 1 - .../fontawesome-free/svgs/solid/comment.svg | 1 - .../svgs/solid/comments-dollar.svg | 1 - .../fontawesome-free/svgs/solid/comments.svg | 1 - .../svgs/solid/compact-disc.svg | 1 - .../fontawesome-free/svgs/solid/compass.svg | 1 - .../svgs/solid/compress-alt.svg | 1 - .../svgs/solid/compress-arrows-alt.svg | 1 - .../fontawesome-free/svgs/solid/compress.svg | 1 - .../svgs/solid/concierge-bell.svg | 1 - .../svgs/solid/cookie-bite.svg | 1 - vendor/fontawesome-free/svgs/solid/cookie.svg | 1 - vendor/fontawesome-free/svgs/solid/copy.svg | 1 - .../fontawesome-free/svgs/solid/copyright.svg | 1 - vendor/fontawesome-free/svgs/solid/couch.svg | 1 - .../svgs/solid/credit-card.svg | 1 - .../fontawesome-free/svgs/solid/crop-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/crop.svg | 1 - vendor/fontawesome-free/svgs/solid/cross.svg | 1 - .../svgs/solid/crosshairs.svg | 1 - vendor/fontawesome-free/svgs/solid/crow.svg | 1 - vendor/fontawesome-free/svgs/solid/crown.svg | 1 - vendor/fontawesome-free/svgs/solid/crutch.svg | 1 - vendor/fontawesome-free/svgs/solid/cube.svg | 1 - vendor/fontawesome-free/svgs/solid/cubes.svg | 1 - vendor/fontawesome-free/svgs/solid/cut.svg | 1 - .../fontawesome-free/svgs/solid/database.svg | 1 - vendor/fontawesome-free/svgs/solid/deaf.svg | 1 - .../fontawesome-free/svgs/solid/democrat.svg | 1 - .../fontawesome-free/svgs/solid/desktop.svg | 1 - .../svgs/solid/dharmachakra.svg | 1 - .../fontawesome-free/svgs/solid/diagnoses.svg | 1 - .../fontawesome-free/svgs/solid/dice-d20.svg | 1 - .../fontawesome-free/svgs/solid/dice-d6.svg | 1 - .../fontawesome-free/svgs/solid/dice-five.svg | 1 - .../fontawesome-free/svgs/solid/dice-four.svg | 1 - .../fontawesome-free/svgs/solid/dice-one.svg | 1 - .../fontawesome-free/svgs/solid/dice-six.svg | 1 - .../svgs/solid/dice-three.svg | 1 - .../fontawesome-free/svgs/solid/dice-two.svg | 1 - vendor/fontawesome-free/svgs/solid/dice.svg | 1 - .../svgs/solid/digital-tachograph.svg | 1 - .../svgs/solid/directions.svg | 1 - .../fontawesome-free/svgs/solid/disease.svg | 1 - vendor/fontawesome-free/svgs/solid/divide.svg | 1 - vendor/fontawesome-free/svgs/solid/dizzy.svg | 1 - vendor/fontawesome-free/svgs/solid/dna.svg | 1 - vendor/fontawesome-free/svgs/solid/dog.svg | 1 - .../svgs/solid/dollar-sign.svg | 1 - .../svgs/solid/dolly-flatbed.svg | 1 - vendor/fontawesome-free/svgs/solid/dolly.svg | 1 - vendor/fontawesome-free/svgs/solid/donate.svg | 1 - .../svgs/solid/door-closed.svg | 1 - .../fontawesome-free/svgs/solid/door-open.svg | 1 - .../svgs/solid/dot-circle.svg | 1 - vendor/fontawesome-free/svgs/solid/dove.svg | 1 - .../fontawesome-free/svgs/solid/download.svg | 1 - .../svgs/solid/drafting-compass.svg | 1 - vendor/fontawesome-free/svgs/solid/dragon.svg | 1 - .../svgs/solid/draw-polygon.svg | 1 - .../svgs/solid/drum-steelpan.svg | 1 - vendor/fontawesome-free/svgs/solid/drum.svg | 1 - .../svgs/solid/drumstick-bite.svg | 1 - .../fontawesome-free/svgs/solid/dumbbell.svg | 1 - .../svgs/solid/dumpster-fire.svg | 1 - .../fontawesome-free/svgs/solid/dumpster.svg | 1 - .../fontawesome-free/svgs/solid/dungeon.svg | 1 - vendor/fontawesome-free/svgs/solid/edit.svg | 1 - vendor/fontawesome-free/svgs/solid/egg.svg | 1 - vendor/fontawesome-free/svgs/solid/eject.svg | 1 - .../svgs/solid/ellipsis-h.svg | 1 - .../svgs/solid/ellipsis-v.svg | 1 - .../svgs/solid/envelope-open-text.svg | 1 - .../svgs/solid/envelope-open.svg | 1 - .../svgs/solid/envelope-square.svg | 1 - .../fontawesome-free/svgs/solid/envelope.svg | 1 - vendor/fontawesome-free/svgs/solid/equals.svg | 1 - vendor/fontawesome-free/svgs/solid/eraser.svg | 1 - .../fontawesome-free/svgs/solid/ethernet.svg | 1 - .../fontawesome-free/svgs/solid/euro-sign.svg | 1 - .../svgs/solid/exchange-alt.svg | 1 - .../svgs/solid/exclamation-circle.svg | 1 - .../svgs/solid/exclamation-triangle.svg | 1 - .../svgs/solid/exclamation.svg | 1 - .../svgs/solid/expand-alt.svg | 1 - .../svgs/solid/expand-arrows-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/expand.svg | 1 - .../svgs/solid/external-link-alt.svg | 1 - .../svgs/solid/external-link-square-alt.svg | 1 - .../svgs/solid/eye-dropper.svg | 1 - .../fontawesome-free/svgs/solid/eye-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/eye.svg | 1 - vendor/fontawesome-free/svgs/solid/fan.svg | 1 - .../svgs/solid/fast-backward.svg | 1 - .../svgs/solid/fast-forward.svg | 1 - vendor/fontawesome-free/svgs/solid/faucet.svg | 1 - vendor/fontawesome-free/svgs/solid/fax.svg | 1 - .../svgs/solid/feather-alt.svg | 1 - .../fontawesome-free/svgs/solid/feather.svg | 1 - vendor/fontawesome-free/svgs/solid/female.svg | 1 - .../svgs/solid/fighter-jet.svg | 1 - .../fontawesome-free/svgs/solid/file-alt.svg | 1 - .../svgs/solid/file-archive.svg | 1 - .../svgs/solid/file-audio.svg | 1 - .../fontawesome-free/svgs/solid/file-code.svg | 1 - .../svgs/solid/file-contract.svg | 1 - .../fontawesome-free/svgs/solid/file-csv.svg | 1 - .../svgs/solid/file-download.svg | 1 - .../svgs/solid/file-excel.svg | 1 - .../svgs/solid/file-export.svg | 1 - .../svgs/solid/file-image.svg | 1 - .../svgs/solid/file-import.svg | 1 - .../svgs/solid/file-invoice-dollar.svg | 1 - .../svgs/solid/file-invoice.svg | 1 - .../svgs/solid/file-medical-alt.svg | 1 - .../svgs/solid/file-medical.svg | 1 - .../fontawesome-free/svgs/solid/file-pdf.svg | 1 - .../svgs/solid/file-powerpoint.svg | 1 - .../svgs/solid/file-prescription.svg | 1 - .../svgs/solid/file-signature.svg | 1 - .../svgs/solid/file-upload.svg | 1 - .../svgs/solid/file-video.svg | 1 - .../fontawesome-free/svgs/solid/file-word.svg | 1 - vendor/fontawesome-free/svgs/solid/file.svg | 1 - .../fontawesome-free/svgs/solid/fill-drip.svg | 1 - vendor/fontawesome-free/svgs/solid/fill.svg | 1 - vendor/fontawesome-free/svgs/solid/film.svg | 1 - vendor/fontawesome-free/svgs/solid/filter.svg | 1 - .../svgs/solid/fingerprint.svg | 1 - .../fontawesome-free/svgs/solid/fire-alt.svg | 1 - .../svgs/solid/fire-extinguisher.svg | 1 - vendor/fontawesome-free/svgs/solid/fire.svg | 1 - .../fontawesome-free/svgs/solid/first-aid.svg | 1 - vendor/fontawesome-free/svgs/solid/fish.svg | 1 - .../svgs/solid/fist-raised.svg | 1 - .../svgs/solid/flag-checkered.svg | 1 - .../fontawesome-free/svgs/solid/flag-usa.svg | 1 - vendor/fontawesome-free/svgs/solid/flag.svg | 1 - vendor/fontawesome-free/svgs/solid/flask.svg | 1 - .../fontawesome-free/svgs/solid/flushed.svg | 1 - .../svgs/solid/folder-minus.svg | 1 - .../svgs/solid/folder-open.svg | 1 - .../svgs/solid/folder-plus.svg | 1 - vendor/fontawesome-free/svgs/solid/folder.svg | 1 - .../svgs/solid/font-awesome-logo-full.svg | 1 - vendor/fontawesome-free/svgs/solid/font.svg | 1 - .../svgs/solid/football-ball.svg | 1 - .../fontawesome-free/svgs/solid/forward.svg | 1 - vendor/fontawesome-free/svgs/solid/frog.svg | 1 - .../svgs/solid/frown-open.svg | 1 - vendor/fontawesome-free/svgs/solid/frown.svg | 1 - .../svgs/solid/funnel-dollar.svg | 1 - vendor/fontawesome-free/svgs/solid/futbol.svg | 1 - .../fontawesome-free/svgs/solid/gamepad.svg | 1 - .../fontawesome-free/svgs/solid/gas-pump.svg | 1 - vendor/fontawesome-free/svgs/solid/gavel.svg | 1 - vendor/fontawesome-free/svgs/solid/gem.svg | 1 - .../svgs/solid/genderless.svg | 1 - vendor/fontawesome-free/svgs/solid/ghost.svg | 1 - vendor/fontawesome-free/svgs/solid/gift.svg | 1 - vendor/fontawesome-free/svgs/solid/gifts.svg | 1 - .../svgs/solid/glass-cheers.svg | 1 - .../svgs/solid/glass-martini-alt.svg | 1 - .../svgs/solid/glass-martini.svg | 1 - .../svgs/solid/glass-whiskey.svg | 1 - .../fontawesome-free/svgs/solid/glasses.svg | 1 - .../svgs/solid/globe-africa.svg | 1 - .../svgs/solid/globe-americas.svg | 1 - .../svgs/solid/globe-asia.svg | 1 - .../svgs/solid/globe-europe.svg | 1 - vendor/fontawesome-free/svgs/solid/globe.svg | 1 - .../fontawesome-free/svgs/solid/golf-ball.svg | 1 - .../fontawesome-free/svgs/solid/gopuram.svg | 1 - .../svgs/solid/graduation-cap.svg | 1 - .../svgs/solid/greater-than-equal.svg | 1 - .../svgs/solid/greater-than.svg | 1 - .../fontawesome-free/svgs/solid/grimace.svg | 1 - .../fontawesome-free/svgs/solid/grin-alt.svg | 1 - .../svgs/solid/grin-beam-sweat.svg | 1 - .../fontawesome-free/svgs/solid/grin-beam.svg | 1 - .../svgs/solid/grin-hearts.svg | 1 - .../svgs/solid/grin-squint-tears.svg | 1 - .../svgs/solid/grin-squint.svg | 1 - .../svgs/solid/grin-stars.svg | 1 - .../svgs/solid/grin-tears.svg | 1 - .../svgs/solid/grin-tongue-squint.svg | 1 - .../svgs/solid/grin-tongue-wink.svg | 1 - .../svgs/solid/grin-tongue.svg | 1 - .../fontawesome-free/svgs/solid/grin-wink.svg | 1 - vendor/fontawesome-free/svgs/solid/grin.svg | 1 - .../svgs/solid/grip-horizontal.svg | 1 - .../svgs/solid/grip-lines-vertical.svg | 1 - .../svgs/solid/grip-lines.svg | 1 - .../svgs/solid/grip-vertical.svg | 1 - vendor/fontawesome-free/svgs/solid/guitar.svg | 1 - .../fontawesome-free/svgs/solid/h-square.svg | 1 - .../fontawesome-free/svgs/solid/hamburger.svg | 1 - vendor/fontawesome-free/svgs/solid/hammer.svg | 1 - vendor/fontawesome-free/svgs/solid/hamsa.svg | 1 - .../svgs/solid/hand-holding-heart.svg | 1 - .../svgs/solid/hand-holding-medical.svg | 1 - .../svgs/solid/hand-holding-usd.svg | 1 - .../svgs/solid/hand-holding-water.svg | 1 - .../svgs/solid/hand-holding.svg | 1 - .../svgs/solid/hand-lizard.svg | 1 - .../svgs/solid/hand-middle-finger.svg | 1 - .../svgs/solid/hand-paper.svg | 1 - .../svgs/solid/hand-peace.svg | 1 - .../svgs/solid/hand-point-down.svg | 1 - .../svgs/solid/hand-point-left.svg | 1 - .../svgs/solid/hand-point-right.svg | 1 - .../svgs/solid/hand-point-up.svg | 1 - .../svgs/solid/hand-pointer.svg | 1 - .../fontawesome-free/svgs/solid/hand-rock.svg | 1 - .../svgs/solid/hand-scissors.svg | 1 - .../svgs/solid/hand-sparkles.svg | 1 - .../svgs/solid/hand-spock.svg | 1 - .../svgs/solid/hands-helping.svg | 1 - .../svgs/solid/hands-wash.svg | 1 - vendor/fontawesome-free/svgs/solid/hands.svg | 1 - .../svgs/solid/handshake-alt-slash.svg | 1 - .../svgs/solid/handshake-slash.svg | 1 - .../fontawesome-free/svgs/solid/handshake.svg | 1 - .../fontawesome-free/svgs/solid/hanukiah.svg | 1 - .../fontawesome-free/svgs/solid/hard-hat.svg | 1 - .../fontawesome-free/svgs/solid/hashtag.svg | 1 - .../svgs/solid/hat-cowboy-side.svg | 1 - .../svgs/solid/hat-cowboy.svg | 1 - .../svgs/solid/hat-wizard.svg | 1 - vendor/fontawesome-free/svgs/solid/hdd.svg | 1 - .../svgs/solid/head-side-cough-slash.svg | 1 - .../svgs/solid/head-side-cough.svg | 1 - .../svgs/solid/head-side-mask.svg | 1 - .../svgs/solid/head-side-virus.svg | 1 - .../fontawesome-free/svgs/solid/heading.svg | 1 - .../svgs/solid/headphones-alt.svg | 1 - .../svgs/solid/headphones.svg | 1 - .../fontawesome-free/svgs/solid/headset.svg | 1 - .../svgs/solid/heart-broken.svg | 1 - vendor/fontawesome-free/svgs/solid/heart.svg | 1 - .../fontawesome-free/svgs/solid/heartbeat.svg | 1 - .../svgs/solid/helicopter.svg | 1 - .../svgs/solid/highlighter.svg | 1 - vendor/fontawesome-free/svgs/solid/hiking.svg | 1 - vendor/fontawesome-free/svgs/solid/hippo.svg | 1 - .../fontawesome-free/svgs/solid/history.svg | 1 - .../svgs/solid/hockey-puck.svg | 1 - .../svgs/solid/holly-berry.svg | 1 - vendor/fontawesome-free/svgs/solid/home.svg | 1 - .../svgs/solid/horse-head.svg | 1 - vendor/fontawesome-free/svgs/solid/horse.svg | 1 - .../svgs/solid/hospital-alt.svg | 1 - .../svgs/solid/hospital-symbol.svg | 1 - .../svgs/solid/hospital-user.svg | 1 - .../fontawesome-free/svgs/solid/hospital.svg | 1 - .../fontawesome-free/svgs/solid/hot-tub.svg | 1 - vendor/fontawesome-free/svgs/solid/hotdog.svg | 1 - vendor/fontawesome-free/svgs/solid/hotel.svg | 1 - .../svgs/solid/hourglass-end.svg | 1 - .../svgs/solid/hourglass-half.svg | 1 - .../svgs/solid/hourglass-start.svg | 1 - .../fontawesome-free/svgs/solid/hourglass.svg | 1 - .../svgs/solid/house-damage.svg | 1 - .../svgs/solid/house-user.svg | 1 - .../fontawesome-free/svgs/solid/hryvnia.svg | 1 - .../fontawesome-free/svgs/solid/i-cursor.svg | 1 - .../fontawesome-free/svgs/solid/ice-cream.svg | 1 - .../fontawesome-free/svgs/solid/icicles.svg | 1 - vendor/fontawesome-free/svgs/solid/icons.svg | 1 - .../fontawesome-free/svgs/solid/id-badge.svg | 1 - .../svgs/solid/id-card-alt.svg | 1 - .../fontawesome-free/svgs/solid/id-card.svg | 1 - vendor/fontawesome-free/svgs/solid/igloo.svg | 1 - vendor/fontawesome-free/svgs/solid/image.svg | 1 - vendor/fontawesome-free/svgs/solid/images.svg | 1 - vendor/fontawesome-free/svgs/solid/inbox.svg | 1 - vendor/fontawesome-free/svgs/solid/indent.svg | 1 - .../fontawesome-free/svgs/solid/industry.svg | 1 - .../fontawesome-free/svgs/solid/infinity.svg | 1 - .../svgs/solid/info-circle.svg | 1 - vendor/fontawesome-free/svgs/solid/info.svg | 1 - vendor/fontawesome-free/svgs/solid/italic.svg | 1 - vendor/fontawesome-free/svgs/solid/jedi.svg | 1 - vendor/fontawesome-free/svgs/solid/joint.svg | 1 - .../svgs/solid/journal-whills.svg | 1 - vendor/fontawesome-free/svgs/solid/kaaba.svg | 1 - vendor/fontawesome-free/svgs/solid/key.svg | 1 - .../fontawesome-free/svgs/solid/keyboard.svg | 1 - vendor/fontawesome-free/svgs/solid/khanda.svg | 1 - .../fontawesome-free/svgs/solid/kiss-beam.svg | 1 - .../svgs/solid/kiss-wink-heart.svg | 1 - vendor/fontawesome-free/svgs/solid/kiss.svg | 1 - .../fontawesome-free/svgs/solid/kiwi-bird.svg | 1 - .../fontawesome-free/svgs/solid/landmark.svg | 1 - .../fontawesome-free/svgs/solid/language.svg | 1 - .../svgs/solid/laptop-code.svg | 1 - .../svgs/solid/laptop-house.svg | 1 - .../svgs/solid/laptop-medical.svg | 1 - vendor/fontawesome-free/svgs/solid/laptop.svg | 1 - .../svgs/solid/laugh-beam.svg | 1 - .../svgs/solid/laugh-squint.svg | 1 - .../svgs/solid/laugh-wink.svg | 1 - vendor/fontawesome-free/svgs/solid/laugh.svg | 1 - .../svgs/solid/layer-group.svg | 1 - vendor/fontawesome-free/svgs/solid/leaf.svg | 1 - vendor/fontawesome-free/svgs/solid/lemon.svg | 1 - .../svgs/solid/less-than-equal.svg | 1 - .../fontawesome-free/svgs/solid/less-than.svg | 1 - .../svgs/solid/level-down-alt.svg | 1 - .../svgs/solid/level-up-alt.svg | 1 - .../fontawesome-free/svgs/solid/life-ring.svg | 1 - .../fontawesome-free/svgs/solid/lightbulb.svg | 1 - vendor/fontawesome-free/svgs/solid/link.svg | 1 - .../fontawesome-free/svgs/solid/lira-sign.svg | 1 - .../fontawesome-free/svgs/solid/list-alt.svg | 1 - .../fontawesome-free/svgs/solid/list-ol.svg | 1 - .../fontawesome-free/svgs/solid/list-ul.svg | 1 - vendor/fontawesome-free/svgs/solid/list.svg | 1 - .../svgs/solid/location-arrow.svg | 1 - .../fontawesome-free/svgs/solid/lock-open.svg | 1 - vendor/fontawesome-free/svgs/solid/lock.svg | 1 - .../svgs/solid/long-arrow-alt-down.svg | 1 - .../svgs/solid/long-arrow-alt-left.svg | 1 - .../svgs/solid/long-arrow-alt-right.svg | 1 - .../svgs/solid/long-arrow-alt-up.svg | 1 - .../svgs/solid/low-vision.svg | 1 - .../svgs/solid/luggage-cart.svg | 1 - .../svgs/solid/lungs-virus.svg | 1 - vendor/fontawesome-free/svgs/solid/lungs.svg | 1 - vendor/fontawesome-free/svgs/solid/magic.svg | 1 - vendor/fontawesome-free/svgs/solid/magnet.svg | 1 - .../fontawesome-free/svgs/solid/mail-bulk.svg | 1 - vendor/fontawesome-free/svgs/solid/male.svg | 1 - .../svgs/solid/map-marked-alt.svg | 1 - .../svgs/solid/map-marked.svg | 1 - .../svgs/solid/map-marker-alt.svg | 1 - .../svgs/solid/map-marker.svg | 1 - .../fontawesome-free/svgs/solid/map-pin.svg | 1 - .../fontawesome-free/svgs/solid/map-signs.svg | 1 - vendor/fontawesome-free/svgs/solid/map.svg | 1 - vendor/fontawesome-free/svgs/solid/marker.svg | 1 - .../svgs/solid/mars-double.svg | 1 - .../svgs/solid/mars-stroke-h.svg | 1 - .../svgs/solid/mars-stroke-v.svg | 1 - .../svgs/solid/mars-stroke.svg | 1 - vendor/fontawesome-free/svgs/solid/mars.svg | 1 - vendor/fontawesome-free/svgs/solid/mask.svg | 1 - vendor/fontawesome-free/svgs/solid/medal.svg | 1 - vendor/fontawesome-free/svgs/solid/medkit.svg | 1 - .../fontawesome-free/svgs/solid/meh-blank.svg | 1 - .../svgs/solid/meh-rolling-eyes.svg | 1 - vendor/fontawesome-free/svgs/solid/meh.svg | 1 - vendor/fontawesome-free/svgs/solid/memory.svg | 1 - .../fontawesome-free/svgs/solid/menorah.svg | 1 - .../fontawesome-free/svgs/solid/mercury.svg | 1 - vendor/fontawesome-free/svgs/solid/meteor.svg | 1 - .../fontawesome-free/svgs/solid/microchip.svg | 1 - .../svgs/solid/microphone-alt-slash.svg | 1 - .../svgs/solid/microphone-alt.svg | 1 - .../svgs/solid/microphone-slash.svg | 1 - .../svgs/solid/microphone.svg | 1 - .../svgs/solid/microscope.svg | 1 - .../svgs/solid/minus-circle.svg | 1 - .../svgs/solid/minus-square.svg | 1 - vendor/fontawesome-free/svgs/solid/minus.svg | 1 - vendor/fontawesome-free/svgs/solid/mitten.svg | 1 - .../svgs/solid/mobile-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/mobile.svg | 1 - .../svgs/solid/money-bill-alt.svg | 1 - .../svgs/solid/money-bill-wave-alt.svg | 1 - .../svgs/solid/money-bill-wave.svg | 1 - .../svgs/solid/money-bill.svg | 1 - .../svgs/solid/money-check-alt.svg | 1 - .../svgs/solid/money-check.svg | 1 - .../fontawesome-free/svgs/solid/monument.svg | 1 - vendor/fontawesome-free/svgs/solid/moon.svg | 1 - .../svgs/solid/mortar-pestle.svg | 1 - vendor/fontawesome-free/svgs/solid/mosque.svg | 1 - .../svgs/solid/motorcycle.svg | 1 - .../fontawesome-free/svgs/solid/mountain.svg | 1 - .../svgs/solid/mouse-pointer.svg | 1 - vendor/fontawesome-free/svgs/solid/mouse.svg | 1 - .../fontawesome-free/svgs/solid/mug-hot.svg | 1 - vendor/fontawesome-free/svgs/solid/music.svg | 1 - .../svgs/solid/network-wired.svg | 1 - vendor/fontawesome-free/svgs/solid/neuter.svg | 1 - .../fontawesome-free/svgs/solid/newspaper.svg | 1 - .../fontawesome-free/svgs/solid/not-equal.svg | 1 - .../svgs/solid/notes-medical.svg | 1 - .../svgs/solid/object-group.svg | 1 - .../svgs/solid/object-ungroup.svg | 1 - .../fontawesome-free/svgs/solid/oil-can.svg | 1 - vendor/fontawesome-free/svgs/solid/om.svg | 1 - vendor/fontawesome-free/svgs/solid/otter.svg | 1 - .../fontawesome-free/svgs/solid/outdent.svg | 1 - vendor/fontawesome-free/svgs/solid/pager.svg | 1 - .../svgs/solid/paint-brush.svg | 1 - .../svgs/solid/paint-roller.svg | 1 - .../fontawesome-free/svgs/solid/palette.svg | 1 - vendor/fontawesome-free/svgs/solid/pallet.svg | 1 - .../svgs/solid/paper-plane.svg | 1 - .../fontawesome-free/svgs/solid/paperclip.svg | 1 - .../svgs/solid/parachute-box.svg | 1 - .../fontawesome-free/svgs/solid/paragraph.svg | 1 - .../fontawesome-free/svgs/solid/parking.svg | 1 - .../fontawesome-free/svgs/solid/passport.svg | 1 - .../svgs/solid/pastafarianism.svg | 1 - vendor/fontawesome-free/svgs/solid/paste.svg | 1 - .../svgs/solid/pause-circle.svg | 1 - vendor/fontawesome-free/svgs/solid/pause.svg | 1 - vendor/fontawesome-free/svgs/solid/paw.svg | 1 - vendor/fontawesome-free/svgs/solid/peace.svg | 1 - .../fontawesome-free/svgs/solid/pen-alt.svg | 1 - .../fontawesome-free/svgs/solid/pen-fancy.svg | 1 - .../fontawesome-free/svgs/solid/pen-nib.svg | 1 - .../svgs/solid/pen-square.svg | 1 - vendor/fontawesome-free/svgs/solid/pen.svg | 1 - .../svgs/solid/pencil-alt.svg | 1 - .../svgs/solid/pencil-ruler.svg | 1 - .../svgs/solid/people-arrows.svg | 1 - .../svgs/solid/people-carry.svg | 1 - .../svgs/solid/pepper-hot.svg | 1 - .../fontawesome-free/svgs/solid/percent.svg | 1 - .../svgs/solid/percentage.svg | 1 - .../svgs/solid/person-booth.svg | 1 - .../fontawesome-free/svgs/solid/phone-alt.svg | 1 - .../svgs/solid/phone-slash.svg | 1 - .../svgs/solid/phone-square-alt.svg | 1 - .../svgs/solid/phone-square.svg | 1 - .../svgs/solid/phone-volume.svg | 1 - vendor/fontawesome-free/svgs/solid/phone.svg | 1 - .../svgs/solid/photo-video.svg | 1 - .../svgs/solid/piggy-bank.svg | 1 - vendor/fontawesome-free/svgs/solid/pills.svg | 1 - .../svgs/solid/pizza-slice.svg | 1 - .../svgs/solid/place-of-worship.svg | 1 - .../svgs/solid/plane-arrival.svg | 1 - .../svgs/solid/plane-departure.svg | 1 - .../svgs/solid/plane-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/plane.svg | 1 - .../svgs/solid/play-circle.svg | 1 - vendor/fontawesome-free/svgs/solid/play.svg | 1 - vendor/fontawesome-free/svgs/solid/plug.svg | 1 - .../svgs/solid/plus-circle.svg | 1 - .../svgs/solid/plus-square.svg | 1 - vendor/fontawesome-free/svgs/solid/plus.svg | 1 - .../fontawesome-free/svgs/solid/podcast.svg | 1 - vendor/fontawesome-free/svgs/solid/poll-h.svg | 1 - vendor/fontawesome-free/svgs/solid/poll.svg | 1 - .../fontawesome-free/svgs/solid/poo-storm.svg | 1 - vendor/fontawesome-free/svgs/solid/poo.svg | 1 - vendor/fontawesome-free/svgs/solid/poop.svg | 1 - .../fontawesome-free/svgs/solid/portrait.svg | 1 - .../svgs/solid/pound-sign.svg | 1 - .../fontawesome-free/svgs/solid/power-off.svg | 1 - vendor/fontawesome-free/svgs/solid/pray.svg | 1 - .../svgs/solid/praying-hands.svg | 1 - .../svgs/solid/prescription-bottle-alt.svg | 1 - .../svgs/solid/prescription-bottle.svg | 1 - .../svgs/solid/prescription.svg | 1 - vendor/fontawesome-free/svgs/solid/print.svg | 1 - .../svgs/solid/procedures.svg | 1 - .../svgs/solid/project-diagram.svg | 1 - .../svgs/solid/pump-medical.svg | 1 - .../fontawesome-free/svgs/solid/pump-soap.svg | 1 - .../svgs/solid/puzzle-piece.svg | 1 - vendor/fontawesome-free/svgs/solid/qrcode.svg | 1 - .../svgs/solid/question-circle.svg | 1 - .../fontawesome-free/svgs/solid/question.svg | 1 - .../fontawesome-free/svgs/solid/quidditch.svg | 1 - .../svgs/solid/quote-left.svg | 1 - .../svgs/solid/quote-right.svg | 1 - vendor/fontawesome-free/svgs/solid/quran.svg | 1 - .../svgs/solid/radiation-alt.svg | 1 - .../fontawesome-free/svgs/solid/radiation.svg | 1 - .../fontawesome-free/svgs/solid/rainbow.svg | 1 - vendor/fontawesome-free/svgs/solid/random.svg | 1 - .../fontawesome-free/svgs/solid/receipt.svg | 1 - .../svgs/solid/record-vinyl.svg | 1 - .../fontawesome-free/svgs/solid/recycle.svg | 1 - .../fontawesome-free/svgs/solid/redo-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/redo.svg | 1 - .../svgs/solid/registered.svg | 1 - .../svgs/solid/remove-format.svg | 1 - .../fontawesome-free/svgs/solid/reply-all.svg | 1 - vendor/fontawesome-free/svgs/solid/reply.svg | 1 - .../svgs/solid/republican.svg | 1 - .../fontawesome-free/svgs/solid/restroom.svg | 1 - .../fontawesome-free/svgs/solid/retweet.svg | 1 - vendor/fontawesome-free/svgs/solid/ribbon.svg | 1 - vendor/fontawesome-free/svgs/solid/ring.svg | 1 - vendor/fontawesome-free/svgs/solid/road.svg | 1 - vendor/fontawesome-free/svgs/solid/robot.svg | 1 - vendor/fontawesome-free/svgs/solid/rocket.svg | 1 - vendor/fontawesome-free/svgs/solid/route.svg | 1 - .../svgs/solid/rss-square.svg | 1 - vendor/fontawesome-free/svgs/solid/rss.svg | 1 - .../svgs/solid/ruble-sign.svg | 1 - .../svgs/solid/ruler-combined.svg | 1 - .../svgs/solid/ruler-horizontal.svg | 1 - .../svgs/solid/ruler-vertical.svg | 1 - vendor/fontawesome-free/svgs/solid/ruler.svg | 1 - .../fontawesome-free/svgs/solid/running.svg | 1 - .../svgs/solid/rupee-sign.svg | 1 - .../fontawesome-free/svgs/solid/sad-cry.svg | 1 - .../fontawesome-free/svgs/solid/sad-tear.svg | 1 - .../svgs/solid/satellite-dish.svg | 1 - .../fontawesome-free/svgs/solid/satellite.svg | 1 - vendor/fontawesome-free/svgs/solid/save.svg | 1 - vendor/fontawesome-free/svgs/solid/school.svg | 1 - .../svgs/solid/screwdriver.svg | 1 - vendor/fontawesome-free/svgs/solid/scroll.svg | 1 - .../fontawesome-free/svgs/solid/sd-card.svg | 1 - .../svgs/solid/search-dollar.svg | 1 - .../svgs/solid/search-location.svg | 1 - .../svgs/solid/search-minus.svg | 1 - .../svgs/solid/search-plus.svg | 1 - vendor/fontawesome-free/svgs/solid/search.svg | 1 - .../fontawesome-free/svgs/solid/seedling.svg | 1 - vendor/fontawesome-free/svgs/solid/server.svg | 1 - vendor/fontawesome-free/svgs/solid/shapes.svg | 1 - .../svgs/solid/share-alt-square.svg | 1 - .../fontawesome-free/svgs/solid/share-alt.svg | 1 - .../svgs/solid/share-square.svg | 1 - vendor/fontawesome-free/svgs/solid/share.svg | 1 - .../svgs/solid/shekel-sign.svg | 1 - .../svgs/solid/shield-alt.svg | 1 - .../svgs/solid/shield-virus.svg | 1 - vendor/fontawesome-free/svgs/solid/ship.svg | 1 - .../svgs/solid/shipping-fast.svg | 1 - .../svgs/solid/shoe-prints.svg | 1 - .../svgs/solid/shopping-bag.svg | 1 - .../svgs/solid/shopping-basket.svg | 1 - .../svgs/solid/shopping-cart.svg | 1 - vendor/fontawesome-free/svgs/solid/shower.svg | 1 - .../svgs/solid/shuttle-van.svg | 1 - .../svgs/solid/sign-in-alt.svg | 1 - .../svgs/solid/sign-language.svg | 1 - .../svgs/solid/sign-out-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/sign.svg | 1 - vendor/fontawesome-free/svgs/solid/signal.svg | 1 - .../fontawesome-free/svgs/solid/signature.svg | 1 - .../fontawesome-free/svgs/solid/sim-card.svg | 1 - vendor/fontawesome-free/svgs/solid/sink.svg | 1 - .../fontawesome-free/svgs/solid/sitemap.svg | 1 - .../fontawesome-free/svgs/solid/skating.svg | 1 - .../svgs/solid/skiing-nordic.svg | 1 - vendor/fontawesome-free/svgs/solid/skiing.svg | 1 - .../svgs/solid/skull-crossbones.svg | 1 - vendor/fontawesome-free/svgs/solid/skull.svg | 1 - vendor/fontawesome-free/svgs/solid/slash.svg | 1 - vendor/fontawesome-free/svgs/solid/sleigh.svg | 1 - .../fontawesome-free/svgs/solid/sliders-h.svg | 1 - .../svgs/solid/smile-beam.svg | 1 - .../svgs/solid/smile-wink.svg | 1 - vendor/fontawesome-free/svgs/solid/smile.svg | 1 - vendor/fontawesome-free/svgs/solid/smog.svg | 1 - .../svgs/solid/smoking-ban.svg | 1 - .../fontawesome-free/svgs/solid/smoking.svg | 1 - vendor/fontawesome-free/svgs/solid/sms.svg | 1 - .../svgs/solid/snowboarding.svg | 1 - .../fontawesome-free/svgs/solid/snowflake.svg | 1 - .../fontawesome-free/svgs/solid/snowman.svg | 1 - .../fontawesome-free/svgs/solid/snowplow.svg | 1 - vendor/fontawesome-free/svgs/solid/soap.svg | 1 - vendor/fontawesome-free/svgs/solid/socks.svg | 1 - .../svgs/solid/solar-panel.svg | 1 - .../svgs/solid/sort-alpha-down-alt.svg | 1 - .../svgs/solid/sort-alpha-down.svg | 1 - .../svgs/solid/sort-alpha-up-alt.svg | 1 - .../svgs/solid/sort-alpha-up.svg | 1 - .../svgs/solid/sort-amount-down-alt.svg | 1 - .../svgs/solid/sort-amount-down.svg | 1 - .../svgs/solid/sort-amount-up-alt.svg | 1 - .../svgs/solid/sort-amount-up.svg | 1 - .../fontawesome-free/svgs/solid/sort-down.svg | 1 - .../svgs/solid/sort-numeric-down-alt.svg | 1 - .../svgs/solid/sort-numeric-down.svg | 1 - .../svgs/solid/sort-numeric-up-alt.svg | 1 - .../svgs/solid/sort-numeric-up.svg | 1 - .../fontawesome-free/svgs/solid/sort-up.svg | 1 - vendor/fontawesome-free/svgs/solid/sort.svg | 1 - vendor/fontawesome-free/svgs/solid/spa.svg | 1 - .../svgs/solid/space-shuttle.svg | 1 - .../svgs/solid/spell-check.svg | 1 - vendor/fontawesome-free/svgs/solid/spider.svg | 1 - .../fontawesome-free/svgs/solid/spinner.svg | 1 - .../fontawesome-free/svgs/solid/splotch.svg | 1 - .../fontawesome-free/svgs/solid/spray-can.svg | 1 - .../svgs/solid/square-full.svg | 1 - .../svgs/solid/square-root-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/square.svg | 1 - vendor/fontawesome-free/svgs/solid/stamp.svg | 1 - .../svgs/solid/star-and-crescent.svg | 1 - .../svgs/solid/star-half-alt.svg | 1 - .../fontawesome-free/svgs/solid/star-half.svg | 1 - .../svgs/solid/star-of-david.svg | 1 - .../svgs/solid/star-of-life.svg | 1 - vendor/fontawesome-free/svgs/solid/star.svg | 1 - .../svgs/solid/step-backward.svg | 1 - .../svgs/solid/step-forward.svg | 1 - .../svgs/solid/stethoscope.svg | 1 - .../svgs/solid/sticky-note.svg | 1 - .../svgs/solid/stop-circle.svg | 1 - vendor/fontawesome-free/svgs/solid/stop.svg | 1 - .../svgs/solid/stopwatch-20.svg | 1 - .../fontawesome-free/svgs/solid/stopwatch.svg | 1 - .../svgs/solid/store-alt-slash.svg | 1 - .../fontawesome-free/svgs/solid/store-alt.svg | 1 - .../svgs/solid/store-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/store.svg | 1 - vendor/fontawesome-free/svgs/solid/stream.svg | 1 - .../svgs/solid/street-view.svg | 1 - .../svgs/solid/strikethrough.svg | 1 - .../svgs/solid/stroopwafel.svg | 1 - .../fontawesome-free/svgs/solid/subscript.svg | 1 - vendor/fontawesome-free/svgs/solid/subway.svg | 1 - .../svgs/solid/suitcase-rolling.svg | 1 - .../fontawesome-free/svgs/solid/suitcase.svg | 1 - vendor/fontawesome-free/svgs/solid/sun.svg | 1 - .../svgs/solid/superscript.svg | 1 - .../fontawesome-free/svgs/solid/surprise.svg | 1 - .../svgs/solid/swatchbook.svg | 1 - .../fontawesome-free/svgs/solid/swimmer.svg | 1 - .../svgs/solid/swimming-pool.svg | 1 - .../fontawesome-free/svgs/solid/synagogue.svg | 1 - .../fontawesome-free/svgs/solid/sync-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/sync.svg | 1 - .../fontawesome-free/svgs/solid/syringe.svg | 1 - .../svgs/solid/table-tennis.svg | 1 - vendor/fontawesome-free/svgs/solid/table.svg | 1 - .../svgs/solid/tablet-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/tablet.svg | 1 - .../fontawesome-free/svgs/solid/tablets.svg | 1 - .../svgs/solid/tachometer-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/tag.svg | 1 - vendor/fontawesome-free/svgs/solid/tags.svg | 1 - vendor/fontawesome-free/svgs/solid/tape.svg | 1 - vendor/fontawesome-free/svgs/solid/tasks.svg | 1 - vendor/fontawesome-free/svgs/solid/taxi.svg | 1 - .../svgs/solid/teeth-open.svg | 1 - vendor/fontawesome-free/svgs/solid/teeth.svg | 1 - .../svgs/solid/temperature-high.svg | 1 - .../svgs/solid/temperature-low.svg | 1 - vendor/fontawesome-free/svgs/solid/tenge.svg | 1 - .../fontawesome-free/svgs/solid/terminal.svg | 1 - .../svgs/solid/text-height.svg | 1 - .../svgs/solid/text-width.svg | 1 - .../fontawesome-free/svgs/solid/th-large.svg | 1 - .../fontawesome-free/svgs/solid/th-list.svg | 1 - vendor/fontawesome-free/svgs/solid/th.svg | 1 - .../svgs/solid/theater-masks.svg | 1 - .../svgs/solid/thermometer-empty.svg | 1 - .../svgs/solid/thermometer-full.svg | 1 - .../svgs/solid/thermometer-half.svg | 1 - .../svgs/solid/thermometer-quarter.svg | 1 - .../svgs/solid/thermometer-three-quarters.svg | 1 - .../svgs/solid/thermometer.svg | 1 - .../svgs/solid/thumbs-down.svg | 1 - .../fontawesome-free/svgs/solid/thumbs-up.svg | 1 - .../fontawesome-free/svgs/solid/thumbtack.svg | 1 - .../svgs/solid/ticket-alt.svg | 1 - .../svgs/solid/times-circle.svg | 1 - vendor/fontawesome-free/svgs/solid/times.svg | 1 - .../svgs/solid/tint-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/tint.svg | 1 - vendor/fontawesome-free/svgs/solid/tired.svg | 1 - .../svgs/solid/toggle-off.svg | 1 - .../fontawesome-free/svgs/solid/toggle-on.svg | 1 - .../svgs/solid/toilet-paper-slash.svg | 1 - .../svgs/solid/toilet-paper.svg | 1 - vendor/fontawesome-free/svgs/solid/toilet.svg | 1 - .../fontawesome-free/svgs/solid/toolbox.svg | 1 - vendor/fontawesome-free/svgs/solid/tools.svg | 1 - vendor/fontawesome-free/svgs/solid/tooth.svg | 1 - vendor/fontawesome-free/svgs/solid/torah.svg | 1 - .../svgs/solid/torii-gate.svg | 1 - .../fontawesome-free/svgs/solid/tractor.svg | 1 - .../fontawesome-free/svgs/solid/trademark.svg | 1 - .../svgs/solid/traffic-light.svg | 1 - .../fontawesome-free/svgs/solid/trailer.svg | 1 - vendor/fontawesome-free/svgs/solid/train.svg | 1 - vendor/fontawesome-free/svgs/solid/tram.svg | 1 - .../svgs/solid/transgender-alt.svg | 1 - .../svgs/solid/transgender.svg | 1 - .../fontawesome-free/svgs/solid/trash-alt.svg | 1 - .../svgs/solid/trash-restore-alt.svg | 1 - .../svgs/solid/trash-restore.svg | 1 - vendor/fontawesome-free/svgs/solid/trash.svg | 1 - vendor/fontawesome-free/svgs/solid/tree.svg | 1 - vendor/fontawesome-free/svgs/solid/trophy.svg | 1 - .../svgs/solid/truck-loading.svg | 1 - .../svgs/solid/truck-monster.svg | 1 - .../svgs/solid/truck-moving.svg | 1 - .../svgs/solid/truck-pickup.svg | 1 - vendor/fontawesome-free/svgs/solid/truck.svg | 1 - vendor/fontawesome-free/svgs/solid/tshirt.svg | 1 - vendor/fontawesome-free/svgs/solid/tty.svg | 1 - vendor/fontawesome-free/svgs/solid/tv.svg | 1 - .../svgs/solid/umbrella-beach.svg | 1 - .../fontawesome-free/svgs/solid/umbrella.svg | 1 - .../fontawesome-free/svgs/solid/underline.svg | 1 - .../fontawesome-free/svgs/solid/undo-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/undo.svg | 1 - .../svgs/solid/universal-access.svg | 1 - .../svgs/solid/university.svg | 1 - vendor/fontawesome-free/svgs/solid/unlink.svg | 1 - .../svgs/solid/unlock-alt.svg | 1 - vendor/fontawesome-free/svgs/solid/unlock.svg | 1 - vendor/fontawesome-free/svgs/solid/upload.svg | 1 - .../svgs/solid/user-alt-slash.svg | 1 - .../fontawesome-free/svgs/solid/user-alt.svg | 1 - .../svgs/solid/user-astronaut.svg | 1 - .../svgs/solid/user-check.svg | 1 - .../svgs/solid/user-circle.svg | 1 - .../svgs/solid/user-clock.svg | 1 - .../fontawesome-free/svgs/solid/user-cog.svg | 1 - .../fontawesome-free/svgs/solid/user-edit.svg | 1 - .../svgs/solid/user-friends.svg | 1 - .../svgs/solid/user-graduate.svg | 1 - .../svgs/solid/user-injured.svg | 1 - .../fontawesome-free/svgs/solid/user-lock.svg | 1 - .../fontawesome-free/svgs/solid/user-md.svg | 1 - .../svgs/solid/user-minus.svg | 1 - .../svgs/solid/user-ninja.svg | 1 - .../svgs/solid/user-nurse.svg | 1 - .../fontawesome-free/svgs/solid/user-plus.svg | 1 - .../svgs/solid/user-secret.svg | 1 - .../svgs/solid/user-shield.svg | 1 - .../svgs/solid/user-slash.svg | 1 - .../fontawesome-free/svgs/solid/user-tag.svg | 1 - .../fontawesome-free/svgs/solid/user-tie.svg | 1 - .../svgs/solid/user-times.svg | 1 - vendor/fontawesome-free/svgs/solid/user.svg | 1 - .../fontawesome-free/svgs/solid/users-cog.svg | 1 - .../svgs/solid/users-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/users.svg | 1 - .../svgs/solid/utensil-spoon.svg | 1 - .../fontawesome-free/svgs/solid/utensils.svg | 1 - .../svgs/solid/vector-square.svg | 1 - .../svgs/solid/venus-double.svg | 1 - .../svgs/solid/venus-mars.svg | 1 - vendor/fontawesome-free/svgs/solid/venus.svg | 1 - .../svgs/solid/vest-patches.svg | 1 - vendor/fontawesome-free/svgs/solid/vest.svg | 1 - vendor/fontawesome-free/svgs/solid/vial.svg | 1 - vendor/fontawesome-free/svgs/solid/vials.svg | 1 - .../svgs/solid/video-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/video.svg | 1 - vendor/fontawesome-free/svgs/solid/vihara.svg | 1 - .../svgs/solid/virus-slash.svg | 1 - vendor/fontawesome-free/svgs/solid/virus.svg | 1 - .../fontawesome-free/svgs/solid/viruses.svg | 1 - .../fontawesome-free/svgs/solid/voicemail.svg | 1 - .../svgs/solid/volleyball-ball.svg | 1 - .../svgs/solid/volume-down.svg | 1 - .../svgs/solid/volume-mute.svg | 1 - .../svgs/solid/volume-off.svg | 1 - .../fontawesome-free/svgs/solid/volume-up.svg | 1 - .../fontawesome-free/svgs/solid/vote-yea.svg | 1 - .../svgs/solid/vr-cardboard.svg | 1 - .../fontawesome-free/svgs/solid/walking.svg | 1 - vendor/fontawesome-free/svgs/solid/wallet.svg | 1 - .../fontawesome-free/svgs/solid/warehouse.svg | 1 - vendor/fontawesome-free/svgs/solid/water.svg | 1 - .../svgs/solid/wave-square.svg | 1 - .../svgs/solid/weight-hanging.svg | 1 - vendor/fontawesome-free/svgs/solid/weight.svg | 1 - .../svgs/solid/wheelchair.svg | 1 - vendor/fontawesome-free/svgs/solid/wifi.svg | 1 - vendor/fontawesome-free/svgs/solid/wind.svg | 1 - .../svgs/solid/window-close.svg | 1 - .../svgs/solid/window-maximize.svg | 1 - .../svgs/solid/window-minimize.svg | 1 - .../svgs/solid/window-restore.svg | 1 - .../svgs/solid/wine-bottle.svg | 1 - .../svgs/solid/wine-glass-alt.svg | 1 - .../svgs/solid/wine-glass.svg | 1 - .../fontawesome-free/svgs/solid/won-sign.svg | 1 - vendor/fontawesome-free/svgs/solid/wrench.svg | 1 - vendor/fontawesome-free/svgs/solid/x-ray.svg | 1 - .../fontawesome-free/svgs/solid/yen-sign.svg | 1 - .../fontawesome-free/svgs/solid/yin-yang.svg | 1 - .../webfonts/fa-brands-400.eot | Bin 134346 -> 0 bytes .../webfonts/fa-brands-400.svg | 3717 --- .../webfonts/fa-brands-400.ttf | Bin 134040 -> 0 bytes .../webfonts/fa-brands-400.woff | Bin 90060 -> 0 bytes .../webfonts/fa-brands-400.woff2 | Bin 76764 -> 0 bytes .../webfonts/fa-regular-400.eot | Bin 34034 -> 0 bytes .../webfonts/fa-regular-400.svg | 801 - .../webfonts/fa-regular-400.ttf | Bin 33736 -> 0 bytes .../webfonts/fa-regular-400.woff | Bin 16276 -> 0 bytes .../webfonts/fa-regular-400.woff2 | Bin 13276 -> 0 bytes .../webfonts/fa-solid-900.eot | Bin 203030 -> 0 bytes .../webfonts/fa-solid-900.svg | 5034 ---- .../webfonts/fa-solid-900.ttf | Bin 202744 -> 0 bytes .../webfonts/fa-solid-900.woff | Bin 101652 -> 0 bytes .../webfonts/fa-solid-900.woff2 | Bin 78196 -> 0 bytes .../jquery.easing.compatibility.js | 59 - vendor/jquery-easing/jquery.easing.js | 166 - vendor/jquery-easing/jquery.easing.min.js | 1 - vendor/jquery/jquery.js | 10881 -------- vendor/jquery/jquery.min.js | 2 - vendor/jquery/jquery.min.map | 1 - vendor/jquery/jquery.slim.js | 8782 ------- vendor/jquery/jquery.slim.min.js | 2 - vendor/jquery/jquery.slim.min.map | 1 - 1827 files changed, 289 insertions(+), 166713 deletions(-) create mode 100644 favicon.ico delete mode 100644 img/nvidia-ai-art.jpg delete mode 100644 js/demo/chart-area-demo.js delete mode 100644 js/sb-admin-2.js delete mode 100644 js/sb-admin-2.min.js create mode 100644 js/script.js delete mode 100644 vendor/bootstrap/js/bootstrap.bundle.js delete mode 100644 vendor/bootstrap/js/bootstrap.bundle.js.map delete mode 100644 vendor/bootstrap/js/bootstrap.bundle.min.js delete mode 100644 vendor/bootstrap/js/bootstrap.bundle.min.js.map delete mode 100644 vendor/bootstrap/js/bootstrap.js delete mode 100644 vendor/bootstrap/js/bootstrap.js.map delete mode 100644 vendor/bootstrap/js/bootstrap.min.js delete mode 100644 vendor/bootstrap/js/bootstrap.min.js.map delete mode 100644 vendor/bootstrap/scss/_alert.scss delete mode 100644 vendor/bootstrap/scss/_badge.scss delete mode 100644 vendor/bootstrap/scss/_breadcrumb.scss delete mode 100644 vendor/bootstrap/scss/_button-group.scss delete mode 100644 vendor/bootstrap/scss/_buttons.scss delete mode 100644 vendor/bootstrap/scss/_card.scss delete mode 100644 vendor/bootstrap/scss/_carousel.scss delete mode 100644 vendor/bootstrap/scss/_close.scss delete mode 100644 vendor/bootstrap/scss/_code.scss delete mode 100644 vendor/bootstrap/scss/_custom-forms.scss delete mode 100644 vendor/bootstrap/scss/_dropdown.scss delete mode 100644 vendor/bootstrap/scss/_forms.scss delete mode 100644 vendor/bootstrap/scss/_functions.scss delete mode 100644 vendor/bootstrap/scss/_grid.scss delete mode 100644 vendor/bootstrap/scss/_images.scss delete mode 100644 vendor/bootstrap/scss/_input-group.scss delete mode 100644 vendor/bootstrap/scss/_jumbotron.scss delete mode 100644 vendor/bootstrap/scss/_list-group.scss delete mode 100644 vendor/bootstrap/scss/_media.scss delete mode 100644 vendor/bootstrap/scss/_mixins.scss delete mode 100644 vendor/bootstrap/scss/_modal.scss delete mode 100644 vendor/bootstrap/scss/_nav.scss delete mode 100644 vendor/bootstrap/scss/_navbar.scss delete mode 100644 vendor/bootstrap/scss/_pagination.scss delete mode 100644 vendor/bootstrap/scss/_popover.scss delete mode 100644 vendor/bootstrap/scss/_print.scss delete mode 100644 vendor/bootstrap/scss/_progress.scss delete mode 100644 vendor/bootstrap/scss/_reboot.scss delete mode 100644 vendor/bootstrap/scss/_root.scss delete mode 100644 vendor/bootstrap/scss/_spinners.scss delete mode 100644 vendor/bootstrap/scss/_tables.scss delete mode 100644 vendor/bootstrap/scss/_toasts.scss delete mode 100644 vendor/bootstrap/scss/_tooltip.scss delete mode 100644 vendor/bootstrap/scss/_transitions.scss delete mode 100644 vendor/bootstrap/scss/_type.scss delete mode 100644 vendor/bootstrap/scss/_utilities.scss delete mode 100644 vendor/bootstrap/scss/_variables.scss delete mode 100644 vendor/bootstrap/scss/bootstrap-grid.scss delete mode 100644 vendor/bootstrap/scss/bootstrap-reboot.scss delete mode 100644 vendor/bootstrap/scss/bootstrap.scss delete mode 100644 vendor/bootstrap/scss/mixins/_alert.scss delete mode 100644 vendor/bootstrap/scss/mixins/_background-variant.scss delete mode 100644 vendor/bootstrap/scss/mixins/_badge.scss delete mode 100644 vendor/bootstrap/scss/mixins/_border-radius.scss delete mode 100644 vendor/bootstrap/scss/mixins/_box-shadow.scss delete mode 100644 vendor/bootstrap/scss/mixins/_breakpoints.scss delete mode 100644 vendor/bootstrap/scss/mixins/_buttons.scss delete mode 100644 vendor/bootstrap/scss/mixins/_caret.scss delete mode 100644 vendor/bootstrap/scss/mixins/_clearfix.scss delete mode 100644 vendor/bootstrap/scss/mixins/_deprecate.scss delete mode 100644 vendor/bootstrap/scss/mixins/_float.scss delete mode 100644 vendor/bootstrap/scss/mixins/_forms.scss delete mode 100644 vendor/bootstrap/scss/mixins/_gradients.scss delete mode 100644 vendor/bootstrap/scss/mixins/_grid-framework.scss delete mode 100644 vendor/bootstrap/scss/mixins/_grid.scss delete mode 100644 vendor/bootstrap/scss/mixins/_hover.scss delete mode 100644 vendor/bootstrap/scss/mixins/_image.scss delete mode 100644 vendor/bootstrap/scss/mixins/_list-group.scss delete mode 100644 vendor/bootstrap/scss/mixins/_lists.scss delete mode 100644 vendor/bootstrap/scss/mixins/_nav-divider.scss delete mode 100644 vendor/bootstrap/scss/mixins/_pagination.scss delete mode 100644 vendor/bootstrap/scss/mixins/_reset-text.scss delete mode 100644 vendor/bootstrap/scss/mixins/_resize.scss delete mode 100644 vendor/bootstrap/scss/mixins/_screen-reader.scss delete mode 100644 vendor/bootstrap/scss/mixins/_size.scss delete mode 100644 vendor/bootstrap/scss/mixins/_table-row.scss delete mode 100644 vendor/bootstrap/scss/mixins/_text-emphasis.scss delete mode 100644 vendor/bootstrap/scss/mixins/_text-hide.scss delete mode 100644 vendor/bootstrap/scss/mixins/_text-truncate.scss delete mode 100644 vendor/bootstrap/scss/mixins/_transition.scss delete mode 100644 vendor/bootstrap/scss/mixins/_visibility.scss delete mode 100644 vendor/bootstrap/scss/utilities/_align.scss delete mode 100644 vendor/bootstrap/scss/utilities/_background.scss delete mode 100644 vendor/bootstrap/scss/utilities/_borders.scss delete mode 100644 vendor/bootstrap/scss/utilities/_clearfix.scss delete mode 100644 vendor/bootstrap/scss/utilities/_display.scss delete mode 100644 vendor/bootstrap/scss/utilities/_embed.scss delete mode 100644 vendor/bootstrap/scss/utilities/_flex.scss delete mode 100644 vendor/bootstrap/scss/utilities/_float.scss delete mode 100644 vendor/bootstrap/scss/utilities/_interactions.scss delete mode 100644 vendor/bootstrap/scss/utilities/_overflow.scss delete mode 100644 vendor/bootstrap/scss/utilities/_position.scss delete mode 100644 vendor/bootstrap/scss/utilities/_screenreaders.scss delete mode 100644 vendor/bootstrap/scss/utilities/_shadows.scss delete mode 100644 vendor/bootstrap/scss/utilities/_sizing.scss delete mode 100644 vendor/bootstrap/scss/utilities/_spacing.scss delete mode 100644 vendor/bootstrap/scss/utilities/_stretched-link.scss delete mode 100644 vendor/bootstrap/scss/utilities/_text.scss delete mode 100644 vendor/bootstrap/scss/utilities/_visibility.scss delete mode 100644 vendor/bootstrap/scss/vendor/_rfs.scss delete mode 100755 vendor/chart.js/Chart.bundle.js delete mode 100755 vendor/chart.js/Chart.bundle.min.js delete mode 100755 vendor/chart.js/Chart.js delete mode 100755 vendor/chart.js/Chart.min.js delete mode 100644 vendor/datatables/dataTables.bootstrap4.css delete mode 100644 vendor/datatables/dataTables.bootstrap4.js delete mode 100644 vendor/datatables/dataTables.bootstrap4.min.css delete mode 100644 vendor/datatables/dataTables.bootstrap4.min.js delete mode 100644 vendor/datatables/jquery.dataTables.js delete mode 100644 vendor/datatables/jquery.dataTables.min.js delete mode 100644 vendor/fontawesome-free/LICENSE.txt delete mode 100644 vendor/fontawesome-free/attribution.js delete mode 100644 vendor/fontawesome-free/css/all.css delete mode 100644 vendor/fontawesome-free/css/all.min.css delete mode 100644 vendor/fontawesome-free/css/brands.css delete mode 100644 vendor/fontawesome-free/css/brands.min.css delete mode 100644 vendor/fontawesome-free/css/fontawesome.css delete mode 100644 vendor/fontawesome-free/css/fontawesome.min.css delete mode 100644 vendor/fontawesome-free/css/regular.css delete mode 100644 vendor/fontawesome-free/css/regular.min.css delete mode 100644 vendor/fontawesome-free/css/solid.css delete mode 100644 vendor/fontawesome-free/css/solid.min.css delete mode 100644 vendor/fontawesome-free/css/svg-with-js.css delete mode 100644 vendor/fontawesome-free/css/svg-with-js.min.css delete mode 100644 vendor/fontawesome-free/css/v4-shims.css delete mode 100644 vendor/fontawesome-free/css/v4-shims.min.css delete mode 100644 vendor/fontawesome-free/js/all.js delete mode 100644 vendor/fontawesome-free/js/all.min.js delete mode 100644 vendor/fontawesome-free/js/brands.js delete mode 100644 vendor/fontawesome-free/js/brands.min.js delete mode 100644 vendor/fontawesome-free/js/conflict-detection.js delete mode 100644 vendor/fontawesome-free/js/conflict-detection.min.js delete mode 100644 vendor/fontawesome-free/js/fontawesome.js delete mode 100644 vendor/fontawesome-free/js/fontawesome.min.js delete mode 100644 vendor/fontawesome-free/js/regular.js delete mode 100644 vendor/fontawesome-free/js/regular.min.js delete mode 100644 vendor/fontawesome-free/js/solid.js delete mode 100644 vendor/fontawesome-free/js/solid.min.js delete mode 100644 vendor/fontawesome-free/js/v4-shims.js delete mode 100644 vendor/fontawesome-free/js/v4-shims.min.js delete mode 100644 vendor/fontawesome-free/less/_animated.less delete mode 100644 vendor/fontawesome-free/less/_bordered-pulled.less delete mode 100644 vendor/fontawesome-free/less/_core.less delete mode 100644 vendor/fontawesome-free/less/_fixed-width.less delete mode 100644 vendor/fontawesome-free/less/_icons.less delete mode 100644 vendor/fontawesome-free/less/_larger.less delete mode 100644 vendor/fontawesome-free/less/_list.less delete mode 100644 vendor/fontawesome-free/less/_mixins.less delete mode 100644 vendor/fontawesome-free/less/_rotated-flipped.less delete mode 100644 vendor/fontawesome-free/less/_screen-reader.less delete mode 100644 vendor/fontawesome-free/less/_shims.less delete mode 100644 vendor/fontawesome-free/less/_stacked.less delete mode 100644 vendor/fontawesome-free/less/_variables.less delete mode 100644 vendor/fontawesome-free/less/brands.less delete mode 100644 vendor/fontawesome-free/less/fontawesome.less delete mode 100644 vendor/fontawesome-free/less/regular.less delete mode 100644 vendor/fontawesome-free/less/solid.less delete mode 100644 vendor/fontawesome-free/less/v4-shims.less delete mode 100644 vendor/fontawesome-free/metadata/categories.yml delete mode 100644 vendor/fontawesome-free/metadata/icons.yml delete mode 100644 vendor/fontawesome-free/metadata/shims.yml delete mode 100644 vendor/fontawesome-free/metadata/sponsors.yml delete mode 100644 vendor/fontawesome-free/package.json delete mode 100644 vendor/fontawesome-free/scss/_animated.scss delete mode 100644 vendor/fontawesome-free/scss/_bordered-pulled.scss delete mode 100644 vendor/fontawesome-free/scss/_core.scss delete mode 100644 vendor/fontawesome-free/scss/_fixed-width.scss delete mode 100644 vendor/fontawesome-free/scss/_icons.scss delete mode 100644 vendor/fontawesome-free/scss/_larger.scss delete mode 100644 vendor/fontawesome-free/scss/_list.scss delete mode 100644 vendor/fontawesome-free/scss/_mixins.scss delete mode 100644 vendor/fontawesome-free/scss/_rotated-flipped.scss delete mode 100644 vendor/fontawesome-free/scss/_screen-reader.scss delete mode 100644 vendor/fontawesome-free/scss/_shims.scss delete mode 100644 vendor/fontawesome-free/scss/_stacked.scss delete mode 100644 vendor/fontawesome-free/scss/_variables.scss delete mode 100644 vendor/fontawesome-free/scss/brands.scss delete mode 100644 vendor/fontawesome-free/scss/fontawesome.scss delete mode 100644 vendor/fontawesome-free/scss/regular.scss delete mode 100644 vendor/fontawesome-free/scss/solid.scss delete mode 100644 vendor/fontawesome-free/scss/v4-shims.scss delete mode 100644 vendor/fontawesome-free/sprites/brands.svg delete mode 100644 vendor/fontawesome-free/sprites/regular.svg delete mode 100644 vendor/fontawesome-free/sprites/solid.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/500px.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/accessible-icon.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/accusoft.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/acquisitions-incorporated.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/adn.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/adversal.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/affiliatetheme.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/airbnb.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/algolia.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/alipay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/amazon-pay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/amazon.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/amilia.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/android.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/angellist.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/angrycreative.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/angular.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/app-store-ios.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/app-store.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/apper.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/apple-pay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/apple.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/artstation.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/asymmetrik.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/atlassian.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/audible.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/autoprefixer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/avianex.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/aviato.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/aws.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bandcamp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/battle-net.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/behance-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/behance.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bimobject.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bitbucket.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bitcoin.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bity.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/black-tie.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/blackberry.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/blogger-b.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/blogger.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bluetooth-b.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bluetooth.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/bootstrap.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/btc.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/buffer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/buromobelexperte.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/buy-n-large.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/buysellads.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/canadian-maple-leaf.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-amazon-pay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-amex.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-apple-pay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-diners-club.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-discover.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-jcb.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-mastercard.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-paypal.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-stripe.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cc-visa.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/centercode.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/centos.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/chrome.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/chromecast.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cloudflare.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cloudscale.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cloudsmith.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cloudversify.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/codepen.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/codiepie.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/confluence.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/connectdevelop.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/contao.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cotton-bureau.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cpanel.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-by.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-nc-eu.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-nc-jp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-nc.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-nd.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-pd-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-pd.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-remix.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-sa.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-sampling-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-sampling.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-share.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons-zero.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/creative-commons.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/critical-role.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/css3-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/css3.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/cuttlefish.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/d-and-d-beyond.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/d-and-d.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dailymotion.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dashcube.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/deezer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/delicious.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/deploydog.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/deskpro.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dev.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/deviantart.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dhl.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/diaspora.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/digg.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/digital-ocean.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/discord.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/discourse.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dochub.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/docker.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/draft2digital.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dribbble-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dribbble.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dropbox.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/drupal.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/dyalog.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/earlybirds.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ebay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/edge-legacy.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/edge.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/elementor.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ello.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ember.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/empire.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/envira.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/erlang.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ethereum.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/etsy.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/evernote.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/expeditedssl.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/facebook-f.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/facebook-messenger.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/facebook-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/facebook.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fantasy-flight-games.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fedex.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fedora.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/figma.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/firefox-browser.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/firefox.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/first-order-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/first-order.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/firstdraft.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/flickr.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/flipboard.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fly.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/font-awesome-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/font-awesome-flag.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/font-awesome-logo-full.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/font-awesome.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fonticons-fi.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fonticons.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fort-awesome-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fort-awesome.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/forumbee.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/foursquare.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/free-code-camp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/freebsd.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/fulcrum.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/galactic-republic.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/galactic-senate.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/get-pocket.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gg-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gg.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/git-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/git-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/git.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/github-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/github-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/github.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gitkraken.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gitlab.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gitter.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/glide-g.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/glide.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gofore.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/goodreads-g.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/goodreads.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-drive.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-pay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-play.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-plus-g.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-plus-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google-wallet.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/google.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gratipay.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/grav.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gripfire.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/grunt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/guilded.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/gulp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hacker-news-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hacker-news.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hackerrank.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hips.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hire-a-helper.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hive.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hooli.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hornbill.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hotjar.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/houzz.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/html5.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/hubspot.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ideal.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/imdb.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/innosoft.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/instagram-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/instagram.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/instalod.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/intercom.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/internet-explorer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/invision.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ioxhost.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/itch-io.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/itunes-note.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/itunes.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/java.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/jedi-order.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/jenkins.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/jira.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/joget.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/joomla.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/js-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/js.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/jsfiddle.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/kaggle.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/keybase.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/keycdn.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/kickstarter-k.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/kickstarter.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/korvue.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/laravel.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/lastfm-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/lastfm.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/leanpub.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/less.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/line.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/linkedin-in.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/linkedin.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/linode.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/linux.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/lyft.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/magento.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mailchimp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mandalorian.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/markdown.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mastodon.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/maxcdn.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mdb.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/medapps.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/medium-m.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/medium.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/medrt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/meetup.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/megaport.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mendeley.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/microblog.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/microsoft.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mix.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mixcloud.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mixer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/mizuni.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/modx.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/monero.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/napster.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/neos.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/nimblr.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/node-js.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/node.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/npm.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ns8.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/nutritionix.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/octopus-deploy.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/odnoklassniki-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/odnoklassniki.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/old-republic.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/opencart.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/openid.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/opera.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/optin-monster.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/orcid.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/osi.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/page4.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pagelines.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/palfed.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/patreon.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/paypal.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/penny-arcade.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/perbyte.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/periscope.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/phabricator.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/phoenix-framework.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/phoenix-squadron.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/php.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pied-piper-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pied-piper-hat.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pied-piper-pp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pied-piper-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pied-piper.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pinterest-p.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pinterest-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pinterest.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/playstation.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/product-hunt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/pushed.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/python.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/qq.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/quinscape.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/quora.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/r-project.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/raspberry-pi.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ravelry.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/react.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/reacteurope.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/readme.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/rebel.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/red-river.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/reddit-alien.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/reddit-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/reddit.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/redhat.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/renren.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/replyd.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/researchgate.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/resolving.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/rev.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/rocketchat.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/rockrms.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/rust.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/safari.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/salesforce.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sass.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/schlix.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/scribd.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/searchengin.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sellcast.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sellsy.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/servicestack.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/shirtsinbulk.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/shopify.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/shopware.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/simplybuilt.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sistrix.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sith.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sketch.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/skyatlas.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/skype.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/slack-hash.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/slack.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/slideshare.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/snapchat-ghost.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/snapchat-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/snapchat.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/soundcloud.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sourcetree.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/speakap.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/speaker-deck.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/spotify.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/squarespace.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stack-exchange.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stack-overflow.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stackpath.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/staylinked.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/steam-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/steam-symbol.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/steam.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/sticker-mule.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/strava.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stripe-s.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stripe.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/studiovinari.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stumbleupon-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/stumbleupon.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/superpowers.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/supple.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/suse.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/swift.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/symfony.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/teamspeak.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/telegram-plane.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/telegram.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/tencent-weibo.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/the-red-yeti.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/themeco.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/themeisle.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/think-peaks.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/tiktok.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/trade-federation.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/trello.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/tripadvisor.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/tumblr-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/tumblr.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/twitch.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/twitter-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/twitter.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/typo3.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/uber.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ubuntu.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/uikit.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/umbraco.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/uncharted.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/uniregistry.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/unity.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/unsplash.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/untappd.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ups.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/usb.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/usps.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/ussunnah.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vaadin.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/viacoin.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/viadeo-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/viadeo.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/viber.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vimeo-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vimeo-v.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vimeo.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vine.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vk.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vnv.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/vuejs.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/watchman-monitoring.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/waze.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/weebly.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/weibo.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/weixin.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/whatsapp-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/whatsapp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/whmcs.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wikipedia-w.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/windows.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wix.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wizards-of-the-coast.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wodu.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wolf-pack-battalion.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wordpress-simple.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wordpress.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wpbeginner.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wpexplorer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wpforms.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/wpressr.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/xbox.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/xing-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/xing.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/y-combinator.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yahoo.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yammer.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yandex-international.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yandex.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yarn.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yelp.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/yoast.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/youtube-square.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/youtube.svg delete mode 100644 vendor/fontawesome-free/svgs/brands/zhihu.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/address-book.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/address-card.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/angry.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/arrow-alt-circle-down.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/arrow-alt-circle-left.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/arrow-alt-circle-right.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/arrow-alt-circle-up.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/bell-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/bell.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/bookmark.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/building.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/calendar-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/calendar-check.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/calendar-minus.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/calendar-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/calendar-times.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/calendar.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/caret-square-down.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/caret-square-left.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/caret-square-right.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/caret-square-up.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/chart-bar.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/check-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/check-square.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/clipboard.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/clock.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/clone.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/closed-captioning.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/comment-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/comment-dots.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/comment.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/comments.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/compass.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/copy.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/copyright.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/credit-card.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/dizzy.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/dot-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/edit.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/envelope-open.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/envelope.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/eye-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/eye.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-archive.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-audio.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-code.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-excel.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-image.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-pdf.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-powerpoint.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-video.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file-word.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/file.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/flag.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/flushed.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/folder-open.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/folder.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/font-awesome-logo-full.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/frown-open.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/frown.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/futbol.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/gem.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grimace.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-beam-sweat.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-hearts.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-squint-tears.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-squint.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-stars.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-tears.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-tongue-squint.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-tongue-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-tongue.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/grin.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-lizard.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-paper.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-peace.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-point-down.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-point-left.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-point-right.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-point-up.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-pointer.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-rock.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-scissors.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hand-spock.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/handshake.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hdd.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/heart.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hospital.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/hourglass.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/id-badge.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/id-card.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/image.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/images.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/keyboard.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/kiss-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/kiss-wink-heart.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/kiss.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/laugh-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/laugh-squint.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/laugh-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/laugh.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/lemon.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/life-ring.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/lightbulb.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/list-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/map.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/meh-blank.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/meh-rolling-eyes.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/meh.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/minus-square.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/money-bill-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/moon.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/newspaper.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/object-group.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/object-ungroup.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/paper-plane.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/pause-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/play-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/plus-square.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/question-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/registered.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/sad-cry.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/sad-tear.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/save.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/share-square.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/smile-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/smile-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/smile.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/snowflake.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/square.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/star-half.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/star.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/sticky-note.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/stop-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/sun.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/surprise.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/thumbs-down.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/thumbs-up.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/times-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/tired.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/trash-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/user-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/user.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/window-close.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/window-maximize.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/window-minimize.svg delete mode 100644 vendor/fontawesome-free/svgs/regular/window-restore.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ad.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/address-book.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/address-card.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/adjust.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/air-freshener.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/align-center.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/align-justify.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/align-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/align-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/allergies.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ambulance.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/american-sign-language-interpreting.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/anchor.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-double-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-double-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-double-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-double-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angle-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/angry.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ankh.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/apple-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/archive.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/archway.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-alt-circle-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-alt-circle-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-alt-circle-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-alt-circle-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-circle-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-circle-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-circle-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-circle-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrow-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrows-alt-h.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrows-alt-v.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/arrows-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/assistive-listening-systems.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/asterisk.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/at.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/atlas.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/atom.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/audio-description.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/award.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/baby-carriage.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/baby.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/backspace.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/backward.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bacon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bacteria.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bacterium.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bahai.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/balance-scale-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/balance-scale-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/balance-scale.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ban.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/band-aid.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/barcode.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bars.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/baseball-ball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/basketball-ball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bath.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/battery-empty.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/battery-full.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/battery-half.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/battery-quarter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/battery-three-quarters.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bed.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/beer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bell-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bell.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bezier-curve.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bible.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bicycle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/biking.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/binoculars.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/biohazard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/birthday-cake.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/blender-phone.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/blender.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/blind.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/blog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bold.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bolt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bomb.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bone.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bong.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/book-dead.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/book-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/book-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/book-reader.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/book.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bookmark.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/border-all.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/border-none.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/border-style.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bowling-ball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/box-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/box-tissue.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/box.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/boxes.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/braille.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/brain.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bread-slice.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/briefcase-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/briefcase.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/broadcast-tower.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/broom.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/brush.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bug.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/building.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bullhorn.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bullseye.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/burn.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bus-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/bus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/business-time.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calculator.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-check.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-day.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-minus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-times.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar-week.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/calendar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/camera-retro.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/camera.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/campground.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/candy-cane.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cannabis.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/capsules.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/car-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/car-battery.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/car-crash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/car-side.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/car.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caravan.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-square-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-square-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-square-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-square-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/caret-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/carrot.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cart-arrow-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cart-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cash-register.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cat.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/certificate.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chair.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chalkboard-teacher.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chalkboard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/charging-station.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chart-area.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chart-bar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chart-line.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chart-pie.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/check-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/check-double.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/check-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/check.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cheese.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-bishop.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-board.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-king.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-knight.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-pawn.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-queen.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess-rook.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chess.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-circle-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-circle-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-circle-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-circle-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/chevron-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/child.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/church.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/circle-notch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/city.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/clinic-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/clipboard-check.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/clipboard-list.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/clipboard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/clock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/clone.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/closed-captioning.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-download-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-meatball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-moon-rain.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-moon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-rain.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-showers-heavy.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-sun-rain.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-sun.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud-upload-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cloud.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cocktail.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/code-branch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/code.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/coffee.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cogs.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/coins.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/columns.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comment-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comment-dollar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comment-dots.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comment-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comment-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comment.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comments-dollar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/comments.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/compact-disc.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/compass.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/compress-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/compress-arrows-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/compress.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/concierge-bell.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cookie-bite.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cookie.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/copy.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/copyright.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/couch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/credit-card.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/crop-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/crop.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cross.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/crosshairs.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/crow.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/crown.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/crutch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cube.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cubes.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/cut.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/database.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/deaf.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/democrat.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/desktop.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dharmachakra.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/diagnoses.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-d20.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-d6.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-five.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-four.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-one.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-six.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-three.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice-two.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dice.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/digital-tachograph.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/directions.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/disease.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/divide.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dizzy.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dna.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dollar-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dolly-flatbed.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dolly.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/donate.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/door-closed.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/door-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dot-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dove.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/download.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/drafting-compass.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dragon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/draw-polygon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/drum-steelpan.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/drum.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/drumstick-bite.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dumbbell.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dumpster-fire.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dumpster.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/dungeon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/edit.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/egg.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/eject.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ellipsis-h.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ellipsis-v.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/envelope-open-text.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/envelope-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/envelope-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/envelope.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/equals.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/eraser.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ethernet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/euro-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/exchange-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/exclamation-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/exclamation-triangle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/exclamation.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/expand-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/expand-arrows-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/expand.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/external-link-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/external-link-square-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/eye-dropper.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/eye-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/eye.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fan.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fast-backward.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fast-forward.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/faucet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fax.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/feather-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/feather.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/female.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fighter-jet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-archive.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-audio.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-code.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-contract.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-csv.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-download.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-excel.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-export.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-image.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-import.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-invoice-dollar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-invoice.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-medical-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-pdf.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-powerpoint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-prescription.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-signature.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-upload.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-video.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file-word.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/file.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fill-drip.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fill.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/film.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/filter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fingerprint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fire-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fire-extinguisher.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fire.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/first-aid.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fish.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/fist-raised.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/flag-checkered.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/flag-usa.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/flag.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/flask.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/flushed.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/folder-minus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/folder-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/folder-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/folder.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/font-awesome-logo-full.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/font.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/football-ball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/forward.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/frog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/frown-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/frown.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/funnel-dollar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/futbol.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gamepad.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gas-pump.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gavel.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gem.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/genderless.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ghost.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gift.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gifts.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/glass-cheers.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/glass-martini-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/glass-martini.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/glass-whiskey.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/glasses.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/globe-africa.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/globe-americas.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/globe-asia.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/globe-europe.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/globe.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/golf-ball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/gopuram.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/graduation-cap.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/greater-than-equal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/greater-than.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grimace.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-beam-sweat.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-hearts.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-squint-tears.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-squint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-stars.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-tears.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-tongue-squint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-tongue-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-tongue.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grin.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grip-horizontal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grip-lines-vertical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grip-lines.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/grip-vertical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/guitar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/h-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hamburger.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hammer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hamsa.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-holding-heart.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-holding-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-holding-usd.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-holding-water.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-holding.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-lizard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-middle-finger.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-paper.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-peace.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-point-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-point-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-point-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-point-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-pointer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-rock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-scissors.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-sparkles.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hand-spock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hands-helping.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hands-wash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hands.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/handshake-alt-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/handshake-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/handshake.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hanukiah.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hard-hat.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hashtag.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hat-cowboy-side.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hat-cowboy.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hat-wizard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hdd.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/head-side-cough-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/head-side-cough.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/head-side-mask.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/head-side-virus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/heading.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/headphones-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/headphones.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/headset.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/heart-broken.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/heart.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/heartbeat.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/helicopter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/highlighter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hiking.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hippo.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/history.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hockey-puck.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/holly-berry.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/home.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/horse-head.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/horse.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hospital-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hospital-symbol.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hospital-user.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hospital.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hot-tub.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hotdog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hotel.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hourglass-end.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hourglass-half.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hourglass-start.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hourglass.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/house-damage.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/house-user.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/hryvnia.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/i-cursor.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ice-cream.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/icicles.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/icons.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/id-badge.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/id-card-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/id-card.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/igloo.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/image.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/images.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/inbox.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/indent.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/industry.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/infinity.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/info-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/info.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/italic.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/jedi.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/joint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/journal-whills.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/kaaba.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/key.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/keyboard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/khanda.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/kiss-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/kiss-wink-heart.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/kiss.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/kiwi-bird.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/landmark.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/language.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laptop-code.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laptop-house.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laptop-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laptop.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laugh-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laugh-squint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laugh-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/laugh.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/layer-group.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/leaf.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lemon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/less-than-equal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/less-than.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/level-down-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/level-up-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/life-ring.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lightbulb.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/link.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lira-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/list-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/list-ol.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/list-ul.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/list.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/location-arrow.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lock-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/long-arrow-alt-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/long-arrow-alt-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/long-arrow-alt-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/long-arrow-alt-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/low-vision.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/luggage-cart.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lungs-virus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/lungs.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/magic.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/magnet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mail-bulk.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/male.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map-marked-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map-marked.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map-marker-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map-marker.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map-pin.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map-signs.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/map.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/marker.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mars-double.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mars-stroke-h.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mars-stroke-v.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mars-stroke.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mars.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mask.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/medal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/medkit.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/meh-blank.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/meh-rolling-eyes.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/meh.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/memory.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/menorah.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mercury.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/meteor.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/microchip.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/microphone-alt-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/microphone-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/microphone-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/microphone.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/microscope.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/minus-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/minus-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/minus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mitten.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mobile-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mobile.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/money-bill-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/money-bill-wave-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/money-bill-wave.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/money-bill.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/money-check-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/money-check.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/monument.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/moon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mortar-pestle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mosque.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/motorcycle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mountain.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mouse-pointer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mouse.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/mug-hot.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/music.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/network-wired.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/neuter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/newspaper.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/not-equal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/notes-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/object-group.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/object-ungroup.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/oil-can.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/om.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/otter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/outdent.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pager.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paint-brush.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paint-roller.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/palette.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pallet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paper-plane.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paperclip.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/parachute-box.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paragraph.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/parking.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/passport.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pastafarianism.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paste.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pause-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pause.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/paw.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/peace.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pen-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pen-fancy.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pen-nib.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pen-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pen.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pencil-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pencil-ruler.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/people-arrows.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/people-carry.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pepper-hot.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/percent.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/percentage.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/person-booth.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/phone-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/phone-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/phone-square-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/phone-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/phone-volume.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/phone.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/photo-video.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/piggy-bank.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pills.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pizza-slice.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/place-of-worship.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plane-arrival.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plane-departure.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plane-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plane.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/play-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/play.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plug.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plus-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plus-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/plus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/podcast.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/poll-h.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/poll.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/poo-storm.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/poo.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/poop.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/portrait.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pound-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/power-off.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pray.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/praying-hands.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/prescription-bottle-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/prescription-bottle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/prescription.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/print.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/procedures.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/project-diagram.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pump-medical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/pump-soap.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/puzzle-piece.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/qrcode.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/question-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/question.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/quidditch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/quote-left.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/quote-right.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/quran.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/radiation-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/radiation.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/rainbow.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/random.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/receipt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/record-vinyl.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/recycle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/redo-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/redo.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/registered.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/remove-format.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/reply-all.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/reply.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/republican.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/restroom.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/retweet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ribbon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ring.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/road.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/robot.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/rocket.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/route.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/rss-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/rss.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ruble-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ruler-combined.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ruler-horizontal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ruler-vertical.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ruler.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/running.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/rupee-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sad-cry.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sad-tear.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/satellite-dish.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/satellite.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/save.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/school.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/screwdriver.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/scroll.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sd-card.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/search-dollar.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/search-location.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/search-minus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/search-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/search.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/seedling.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/server.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shapes.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/share-alt-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/share-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/share-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/share.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shekel-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shield-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shield-virus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ship.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shipping-fast.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shoe-prints.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shopping-bag.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shopping-basket.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shopping-cart.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shower.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/shuttle-van.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sign-in-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sign-language.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sign-out-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/signal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/signature.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sim-card.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sink.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sitemap.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/skating.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/skiing-nordic.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/skiing.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/skull-crossbones.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/skull.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sleigh.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sliders-h.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/smile-beam.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/smile-wink.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/smile.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/smog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/smoking-ban.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/smoking.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sms.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/snowboarding.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/snowflake.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/snowman.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/snowplow.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/soap.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/socks.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/solar-panel.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-alpha-down-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-alpha-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-alpha-up-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-alpha-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-amount-down-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-amount-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-amount-up-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-amount-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-numeric-down-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-numeric-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-numeric-up-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-numeric-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sort.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/spa.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/space-shuttle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/spell-check.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/spider.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/spinner.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/splotch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/spray-can.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/square-full.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/square-root-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stamp.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/star-and-crescent.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/star-half-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/star-half.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/star-of-david.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/star-of-life.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/star.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/step-backward.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/step-forward.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stethoscope.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sticky-note.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stop-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stop.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stopwatch-20.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stopwatch.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/store-alt-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/store-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/store-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/store.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stream.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/street-view.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/strikethrough.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/stroopwafel.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/subscript.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/subway.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/suitcase-rolling.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/suitcase.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sun.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/superscript.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/surprise.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/swatchbook.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/swimmer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/swimming-pool.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/synagogue.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sync-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/sync.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/syringe.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/table-tennis.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/table.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tablet-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tablet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tablets.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tachometer-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tag.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tags.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tape.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tasks.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/taxi.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/teeth-open.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/teeth.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/temperature-high.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/temperature-low.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tenge.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/terminal.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/text-height.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/text-width.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/th-large.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/th-list.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/th.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/theater-masks.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thermometer-empty.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thermometer-full.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thermometer-half.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thermometer-quarter.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thermometer-three-quarters.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thermometer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thumbs-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thumbs-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/thumbtack.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/ticket-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/times-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/times.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tint-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tint.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tired.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/toggle-off.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/toggle-on.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/toilet-paper-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/toilet-paper.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/toilet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/toolbox.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tools.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tooth.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/torah.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/torii-gate.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tractor.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trademark.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/traffic-light.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trailer.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/train.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tram.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/transgender-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/transgender.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trash-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trash-restore-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trash-restore.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tree.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/trophy.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/truck-loading.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/truck-monster.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/truck-moving.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/truck-pickup.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/truck.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tshirt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tty.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/tv.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/umbrella-beach.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/umbrella.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/underline.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/undo-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/undo.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/universal-access.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/university.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/unlink.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/unlock-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/unlock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/upload.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-alt-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-astronaut.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-check.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-circle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-clock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-cog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-edit.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-friends.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-graduate.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-injured.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-lock.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-md.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-minus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-ninja.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-nurse.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-plus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-secret.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-shield.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-tag.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-tie.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user-times.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/user.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/users-cog.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/users-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/users.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/utensil-spoon.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/utensils.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vector-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/venus-double.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/venus-mars.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/venus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vest-patches.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vest.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vial.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vials.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/video-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/video.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vihara.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/virus-slash.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/virus.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/viruses.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/voicemail.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/volleyball-ball.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/volume-down.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/volume-mute.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/volume-off.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/volume-up.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vote-yea.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/vr-cardboard.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/walking.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wallet.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/warehouse.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/water.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wave-square.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/weight-hanging.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/weight.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wheelchair.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wifi.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wind.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/window-close.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/window-maximize.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/window-minimize.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/window-restore.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wine-bottle.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wine-glass-alt.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wine-glass.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/won-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/wrench.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/x-ray.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/yen-sign.svg delete mode 100644 vendor/fontawesome-free/svgs/solid/yin-yang.svg delete mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.eot delete mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.svg delete mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.ttf delete mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.woff delete mode 100644 vendor/fontawesome-free/webfonts/fa-brands-400.woff2 delete mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.eot delete mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.svg delete mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.ttf delete mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.woff delete mode 100644 vendor/fontawesome-free/webfonts/fa-regular-400.woff2 delete mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.eot delete mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.svg delete mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.ttf delete mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.woff delete mode 100644 vendor/fontawesome-free/webfonts/fa-solid-900.woff2 delete mode 100755 vendor/jquery-easing/jquery.easing.compatibility.js delete mode 100755 vendor/jquery-easing/jquery.easing.js delete mode 100755 vendor/jquery-easing/jquery.easing.min.js delete mode 100644 vendor/jquery/jquery.js delete mode 100644 vendor/jquery/jquery.min.js delete mode 100644 vendor/jquery/jquery.min.map delete mode 100644 vendor/jquery/jquery.slim.js delete mode 100644 vendor/jquery/jquery.slim.min.js delete mode 100644 vendor/jquery/jquery.slim.min.map diff --git a/css/sb-admin-2.css b/css/sb-admin-2.css index cc0a1cb..3881e41 100644 --- a/css/sb-admin-2.css +++ b/css/sb-admin-2.css @@ -18,7 +18,7 @@ --red: #e74a3b; --orange: #fd7e14; --yellow: #f6c23e; - --green: #1cc88a; + --green: #76B900; --teal: #20c9a6; --cyan: #36b9cc; --white: #fff; @@ -26,7 +26,7 @@ --gray-dark: #5a5c69; --primary: #4e73df; --secondary: #858796; - --success: #1cc88a; + --success: #76B900; --info: #36b9cc; --warning: #f6c23e; --danger: #e74a3b; @@ -2041,7 +2041,7 @@ textarea.form-control { width: 100%; margin-top: 0.25rem; font-size: 80%; - color: #1cc88a; + color: #76B900; } .valid-tooltip { @@ -2073,7 +2073,7 @@ textarea.form-control { } .was-validated .form-control:valid, .form-control.is-valid { - border-color: #1cc88a; + border-color: #76B900; padding-right: calc(1.5em + 0.75rem); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); background-repeat: no-repeat; @@ -2082,7 +2082,7 @@ textarea.form-control { } .was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #1cc88a; + border-color: #76B900; box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); } @@ -2092,18 +2092,18 @@ textarea.form-control { } .was-validated .custom-select:valid, .custom-select.is-valid { - border-color: #1cc88a; + border-color: #76B900; padding-right: calc(0.75em + 2.3125rem); background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat; } .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { - border-color: #1cc88a; + border-color: #76B900; box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); } .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #1cc88a; + color: #76B900; } .was-validated .form-check-input:valid ~ .valid-feedback, @@ -2113,11 +2113,11 @@ textarea.form-control { } .was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { - color: #1cc88a; + color: #76B900; } .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { - border-color: #1cc88a; + border-color: #76B900; } .was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { @@ -2130,15 +2130,15 @@ textarea.form-control { } .was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { - border-color: #1cc88a; + border-color: #76B900; } .was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { - border-color: #1cc88a; + border-color: #76B900; } .was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { - border-color: #1cc88a; + border-color: #76B900; box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.25); } @@ -2431,8 +2431,8 @@ fieldset:disabled a.btn { .btn-success { color: #fff; - background-color: #1cc88a; - border-color: #1cc88a; + background-color: #76B900; + border-color: #76B900; } .btn-success:hover { @@ -2450,8 +2450,8 @@ fieldset:disabled a.btn { .btn-success.disabled, .btn-success:disabled { color: #fff; - background-color: #1cc88a; - border-color: #1cc88a; + background-color: #76B900; + border-color: #76B900; } .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, @@ -2716,14 +2716,14 @@ fieldset:disabled a.btn { } .btn-outline-success { - color: #1cc88a; - border-color: #1cc88a; + color: #76B900; + border-color: #76B900; } .btn-outline-success:hover { color: #fff; - background-color: #1cc88a; - border-color: #1cc88a; + background-color: #76B900; + border-color: #76B900; } .btn-outline-success:focus, .btn-outline-success.focus { @@ -2731,15 +2731,15 @@ fieldset:disabled a.btn { } .btn-outline-success.disabled, .btn-outline-success:disabled { - color: #1cc88a; + color: #76B900; background-color: transparent; } .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { color: #fff; - background-color: #1cc88a; - border-color: #1cc88a; + background-color: #76B900; + border-color: #76B900; } .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, @@ -4909,7 +4909,7 @@ a.badge-secondary:focus, a.badge-secondary.focus { .badge-success { color: #fff; - background-color: #1cc88a; + background-color: #76B900; } a.badge-success:hover, a.badge-success:focus { @@ -6431,7 +6431,7 @@ button.bg-secondary:focus { } .bg-success { - background-color: #1cc88a !important; + background-color: #76B900 !important; } a.bg-success:hover, a.bg-success:focus, @@ -6547,7 +6547,7 @@ button.bg-dark:focus { } .border-success { - border-color: #1cc88a !important; + border-color: #76B900 !important; } .border-info { @@ -9608,7 +9608,7 @@ a.text-secondary:hover, a.text-secondary:focus { } .text-success { - color: #1cc88a !important; + color: #76B900 !important; } a.text-success:hover, a.text-success:focus { @@ -9912,8 +9912,8 @@ a:focus { } .bg-gradient-success { - background-color: #1cc88a; - background-image: linear-gradient(180deg, #1cc88a 10%, #13855c 100%); + background-color: #76B900; + background-image: linear-gradient(180deg, #76B900 10%, #13855c 100%); background-size: cover; } @@ -10057,11 +10057,11 @@ a:focus { } .border-left-success { - border-left: 0.25rem solid #1cc88a !important; + border-left: 0.25rem solid #76B900 !important; } .border-bottom-success { - border-bottom: 0.25rem solid #1cc88a !important; + border-bottom: 0.25rem solid #76B900 !important; } .border-left-info { diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..424df87200c706460f9ad1c7722ef0d35f286f2b GIT binary patch literal 25214 zcmeHP33MFAnf_ZXd&ZV!naGC>!X8`L#s@^339*=AG3F%%2(Td`0YYHKZfwp41JlG< zfZ7Zop2Zoiut~6CAT|+s5lq4~av)>Gz1)X6mVj6i!b{kVI1-e^So?idUDG|%Sh8iv zVs^^ullRHy1IHiB9@Gi#>NTAE9Jz|BG-vXET-#kRfuc`ZNday-`x^9UJMedqPeqBFtl*n;24S!75%@TQVj^Rfge5W01_+xTnrO4#tM0SS{ zFd@wV{bF);rpm=1E*e2`U7g_*MZlGOK97ce^(X!PECKjO5j<(oQS!wW=KN zXcRk>iRV~@NJl2ik`1y{wYPwv8nW?36ASS;$ZJr@#xtx(JK|)pVKb7UKhl*{2JH^| zPxfRo63@6IiG*q=KiTb!Tb0S8A(Bm?Rq?0eosw-5I}y)R7LDp|y3Y&=eWNh&1^J3+QH_*CNnxv^}dM=*(!ok?QU7|(WcVWzhy*e5+~ zDzYj9Rq;$5)5Qfgn}vOmvyxmF(pdT8^cUS-gDO`f|2`y$M@KTAp?;OBIL2uDvCqeHz{h?d2R-&fIrOm`s=BfpP>!9sw+|BNr}9 zemoIaFni0Xl*Q_biVCafFR0a(5ZG4!n(FF^wS_cgp#FwhY-x3h)l~XkZONb65jt-8 znKz85NNN7L^rAW@^%E!6#R8%EH6hhQ9{RkpL$f3jLi;3UpRjb6HY!t)H&Z5In9YU3uyUYgbm-SgWYYf9T*K z&92a0R`G;wU7HV=tlE0o!5<|jqc9UWoW-a1r$)%3T?aq@0)83-+dNP;zb?!L*%wf* zs1Nv457`@LErsOsQymUa;CG|AJSqVnW;hF7fhnZYQ$iDFuxkBh#5y64(&@U zhz(0dDRhp*gx;0LI9}saiE3!5C_ZG-iH(sOP6DJ^ zSP-iXIT0!rf^E2woB3HneYn2`2{k``&xi3}$!shC+*rfR1`R(m)tR{Z%4r9SfPT#6 za~9J`au-X+5a&GQbE_faT6}KhKc`lPCJ`4Hv&irn_3rP=Xg;HM;Td&(i;OqVsC+)X zr&T?lPQCX6nU=p$W^QPcIe0$Zy?d3+@4nQ3M!iBl_rR617oJm_9=clgdH7n{56`KK z@tk_VfBd_8PCfXsAIV{l-zZ;y@+Lf|X5=V5rylprTKQ)@qaF_|#WU(jct$-H�&2 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 nWL_HXEG6Bbq^?LwNP~ocbc&#$NVif_A|R;( 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

c(Wr#VR4$KNBs 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ʏIN0 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

rfXzTO@C8W~dbpY3|Hvku74D$p02eWMg4 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

QqW+aQ7oiqH!41}HEZ=c+1sDfi$bNE@uWs~E# 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%0A8joq*h6pBm$Iw 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 Vjo_buI-YhoJzyONA%&CS{{oUo^GE;y diff --git a/index.html b/index.html index ef301d5..57fc394 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,9 @@ NVIDIA Dashboard - + @@ -36,9 +38,12 @@

- - + + +
+ v{{ .Version }} +
{{ range .GPUs }} @@ -148,7 +153,8 @@
Usage
-
{{ .GPU.Utilization.Rate }}%
+
{{ + .GPU.Utilization.Compute }}%
@@ -159,160 +165,159 @@
- -
+ +
+ +
- -
-
Load
- +
+
Summary
-
-
- +

Temperature + + {{ .GPU.CoreTemperature }}°C + +

+
+ +

+ VRAM + + {{ ConvertByteSize .GPU.Memory.Used }}/{{ + ConvertByteSize .GPU.Memory.Total }} + +

+
+
+
+

+ GPU Usage + + {{ .GPU.Utilization.Compute }}% + +

+
+
+
+

+ Encoder Usage + + {{ .GPU.Utilization.Encoder }}% + +

+
+
+
+

+ Decoder Usage + + {{ .GPU.Utilization.Decoder }}% + +

+
+
+
- -
- - -
- - -
-
-
Summary
-
-
-

Temperature - {{ .GPU.CoreTemperature }}°C

-

VRAM - {{ ConvertByteSize .GPU.Memory.Used }}/{{ ConvertByteSize .GPU.Memory.Total }}

-
-
-
-

GPU Usage - {{ .GPU.Utilization.Rate }}%

-
-
-
-

Encoder Usage - {{ .GPU.Utilization.Encode }}%

-
-
-
-

Decoder Usage - {{ .GPU.Utilization.Decode }}%

-
-
-
+ + +
+
+
Processes
+
+
+
+ + + + + + + + + + + {{ range .GPU.Processes }} + + + + + + + {{ end }} + +
PIDTypeCommandlineGPU Memory Usage
{{ .PID }}{{ .Type }}{{ .Name }}{{ ConvertByteSize .MemoryUsed }}
-
- - - -
-
-
Processes
-
-
-
- - - - - - - - - - - {{ range .GPU.Processes }} - - - - - - - {{ end }} - -
PIDTypeCommandlineGPU Memory Usage
{{ .PID }}{{ .Type }}{{ .Name }}{{ ConvertByteSize .MemoryUsed }}
-
-
-
-
-
-
- - - - - +
- + + + + +
- + - - - - +
+ - - - + + + + - - + + + + - - + - - - - - + diff --git a/js/demo/chart-area-demo.js b/js/demo/chart-area-demo.js deleted file mode 100644 index 58971c5..0000000 --- a/js/demo/chart-area-demo.js +++ /dev/null @@ -1,93 +0,0 @@ -// Set new default font family and font color to mimic Bootstrap's default styling -Chart.defaults.global.defaultFontFamily = 'Nunito', '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif'; -Chart.defaults.global.defaultFontColor = '#858796'; - -// Area Chart Example -var ctx = document.getElementById("myAreaChart"); -var myLineChart = new Chart(ctx, { - type: 'line', - data: { - labels: [], - datasets: [{ - label: "Usage", - lineTension: 0.3, - backgroundColor: "rgba(78, 115, 223, 0.05)", - borderColor: "rgba(78, 115, 223, 1)", - pointRadius: 3, - pointBackgroundColor: "rgba(78, 115, 223, 1)", - pointBorderColor: "rgba(78, 115, 223, 1)", - pointHoverRadius: 3, - pointHoverBackgroundColor: "rgba(78, 115, 223, 1)", - pointHoverBorderColor: "rgba(78, 115, 223, 1)", - pointHitRadius: 10, - pointBorderWidth: 2, - data: [], - }], - }, - options: { - maintainAspectRatio: false, - layout: { - padding: { - left: 10, - right: 25, - top: 25, - bottom: 0 - } - }, - scales: { - xAxes: [{ - time: { - unit: 'date' - }, - gridLines: { - display: false, - drawBorder: false - }, - ticks: { - maxTicksLimit: 7 - } - }], - yAxes: [{ - ticks: { - maxTicksLimit: 5, - padding: 10, - // Include a dollar sign in the ticks - callback: function(value, index, values) { - return value+"%"; - } - }, - gridLines: { - color: "rgb(234, 236, 244)", - zeroLineColor: "rgb(234, 236, 244)", - drawBorder: false, - borderDash: [2], - zeroLineBorderDash: [2] - } - }], - }, - legend: { - display: false - }, - tooltips: { - backgroundColor: "rgb(255,255,255)", - bodyFontColor: "#858796", - titleMarginBottom: 10, - titleFontColor: '#6e707e', - titleFontSize: 14, - borderColor: '#dddfeb', - borderWidth: 1, - xPadding: 15, - yPadding: 15, - displayColors: false, - intersect: false, - mode: 'index', - caretPadding: 10, - callbacks: { - label: function(tooltipItem, chart) { - var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || ''; - return datasetLabel + tooltipItem.yLabel+"%"; - } - } - } - } -}); diff --git a/js/sb-admin-2.js b/js/sb-admin-2.js deleted file mode 100644 index b0412d1..0000000 --- a/js/sb-admin-2.js +++ /dev/null @@ -1,56 +0,0 @@ -(function($) { - "use strict"; // Start of use strict - - // Toggle the side navigation - $("#sidebarToggle, #sidebarToggleTop").on('click', function(e) { - $("body").toggleClass("sidebar-toggled"); - $(".sidebar").toggleClass("toggled"); - if ($(".sidebar").hasClass("toggled")) { - $('.sidebar .collapse').collapse('hide'); - }; - }); - - // Close any open menu accordions when window is resized below 768px - $(window).resize(function() { - if ($(window).width() < 768) { - $('.sidebar .collapse').collapse('hide'); - }; - - // Toggle the side navigation when window is resized below 480px - if ($(window).width() < 480 && !$(".sidebar").hasClass("toggled")) { - $("body").addClass("sidebar-toggled"); - $(".sidebar").addClass("toggled"); - $('.sidebar .collapse').collapse('hide'); - }; - }); - - // Prevent the content wrapper from scrolling when the fixed side navigation hovered over - $('body.fixed-nav .sidebar').on('mousewheel DOMMouseScroll wheel', function(e) { - if ($(window).width() > 768) { - var e0 = e.originalEvent, - delta = e0.wheelDelta || -e0.detail; - this.scrollTop += (delta < 0 ? 1 : -1) * 30; - e.preventDefault(); - } - }); - - // Scroll to top button appear - $(document).on('scroll', function() { - var scrollDistance = $(this).scrollTop(); - if (scrollDistance > 100) { - $('.scroll-to-top').fadeIn(); - } else { - $('.scroll-to-top').fadeOut(); - } - }); - - // Smooth scrolling using jQuery easing - $(document).on('click', 'a.scroll-to-top', function(e) { - var $anchor = $(this); - $('html, body').stop().animate({ - scrollTop: ($($anchor.attr('href')).offset().top) - }, 1000, 'easeInOutExpo'); - e.preventDefault(); - }); - -})(jQuery); // End of use strict diff --git a/js/sb-admin-2.min.js b/js/sb-admin-2.min.js deleted file mode 100644 index e7ffba9..0000000 --- a/js/sb-admin-2.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Start Bootstrap - SB Admin 2 v4.1.4 (https://startbootstrap.com/theme/sb-admin-2) - * Copyright 2013-2021 Start Bootstrap - * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-sb-admin-2/blob/master/LICENSE) - */ - -!function(l){"use strict";l("#sidebarToggle, #sidebarToggleTop").on("click",function(e){l("body").toggleClass("sidebar-toggled"),l(".sidebar").toggleClass("toggled"),l(".sidebar").hasClass("toggled")&&l(".sidebar .collapse").collapse("hide")}),l(window).resize(function(){l(window).width()<768&&l(".sidebar .collapse").collapse("hide"),l(window).width()<480&&!l(".sidebar").hasClass("toggled")&&(l("body").addClass("sidebar-toggled"),l(".sidebar").addClass("toggled"),l(".sidebar .collapse").collapse("hide"))}),l("body.fixed-nav .sidebar").on("mousewheel DOMMouseScroll wheel",function(e){var o;768 { + loadElements(); + setTimeout(tick, 2000); +}); + +function loadElements() { + sumCompute = document.getElementById("sum-compute"); + detailCompute = document.getElementById("detail-compute"); + pgCompute = document.getElementById("pg-compute"); + + detailEncoder = document.getElementById("detail-encoder"); + pgEncoder = document.getElementById("pg-encoder"); + + detailDecoder = document.getElementById("detail-decoder"); + pgDecoder = document.getElementById("pg-decoder"); + + coreTemp = document.getElementById("core-temp"); + + memoryUsed = document.getElementById("memory-used"); + pgMemory = document.getElementById("pg-memory"); + + procList = document.getElementById("proc-list"); +} + +function tick() { + update(); + setTimeout(tick, 2000); +} + +function update() { + const jsonURL = location.href + "/json" + + axios({ + method: 'get', + url: jsonURL + }).then((res) => { + const gpu = res.data; + setCompute(gpu.usage.compute); + setEncoder(gpu.usage.encoder); + setDecoder(gpu.usage.decoder); + setCoreTemp(gpu.coreTemperature); + setMemory(gpu.memory.used, gpu.memory.total); + setProcessList(gpu.processes); + }) +} + +function setCompute(value) { + const placeholder = `${value}%`; + sumCompute.innerText = placeholder; + detailCompute.innerText = placeholder; + pgCompute.style.width = placeholder; + pgCompute.setAttribute("aria-valuenow", value); +} + +function setEncoder(value) { + const placeholder = `${value}%`; + detailEncoder.innerText = placeholder; + pgEncoder.style.width = placeholder; + pgEncoder.setAttribute("aria-valuenow", value); +} + +function setDecoder(value) { + const placeholder = `${value}%`; + detailDecoder.innerText = placeholder; + pgDecoder.style.width = placeholder; + pgDecoder.setAttribute("aria-valuenow", value); +} + +function setCoreTemp(value) { + const placeholder = `${value}°C`; + coreTemp.innerText = placeholder; +} + +function setMemory(used, total) { + const placeholder = formatBytes(used); + const p = (used/total)*100; + memoryUsed.innerText = placeholder; + pgMemory.style.width = p+'%'; + pgMemory.setAttribute("aria-valuenow", p); +} + +function setProcessList(processes) { + procList.innerHTML = ""; + for (const process of processes) { + const row = document.createElement("tr"); + + const pid = document.createElement("td"); + pid.innerText = process.pid; + const type = document.createElement("td"); + type.innerText = process.type; + const name = document.createElement("td"); + name.innerText = process.commandLine; + const mem = document.createElement("td"); + mem.innerText = formatBytes(process.memoryUsed); + row.append(pid, type, name, mem); + procList.append(row); + } +} + +function formatBytes(bytes, decimals = 2) { + if (!+bytes) return '0 Bytes' + + const k = 1024 + const dm = decimals < 0 ? 0 : decimals + const sizes = ['B', 'KB', 'MB', 'GB'] + + const i = Math.floor(Math.log(bytes) / Math.log(k)) + + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))}${sizes[i]}` +} \ No newline at end of file diff --git a/no_gpu.html b/no_gpu.html index a79ccd0..f9bd0e4 100644 --- a/no_gpu.html +++ b/no_gpu.html @@ -12,7 +12,7 @@ NVIDIA Dashboard - + @@ -37,8 +37,9 @@
- - +
+ v{{ .Version }} +
@@ -105,8 +106,10 @@ - - + + + + diff --git a/vendor/bootstrap/js/bootstrap.bundle.js b/vendor/bootstrap/js/bootstrap.bundle.js deleted file mode 100644 index d5c1983..0000000 --- a/vendor/bootstrap/js/bootstrap.bundle.js +++ /dev/null @@ -1,7045 +0,0 @@ -/*! - * Bootstrap v4.6.0 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) : - typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery)); -}(this, (function (exports, $) { 'use strict'; - - function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - - var $__default = /*#__PURE__*/_interopDefaultLegacy($); - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); - } - - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; - } - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.6.0): util.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - /** - * ------------------------------------------------------------------------ - * Private TransitionEnd Helpers - * ------------------------------------------------------------------------ - */ - - var TRANSITION_END = 'transitionend'; - var MAX_UID = 1000000; - var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - - function toType(obj) { - if (obj === null || typeof obj === 'undefined') { - return "" + obj; - } - - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); - } - - function getSpecialTransitionEndEvent() { - return { - bindType: TRANSITION_END, - delegateType: TRANSITION_END, - handle: function handle(event) { - if ($__default['default'](event.target).is(this)) { - return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params - } - - return undefined; - } - }; - } - - function transitionEndEmulator(duration) { - var _this = this; - - var called = false; - $__default['default'](this).one(Util.TRANSITION_END, function () { - called = true; - }); - setTimeout(function () { - if (!called) { - Util.triggerTransitionEnd(_this); - } - }, duration); - return this; - } - - function setTransitionEndSupport() { - $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator; - $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); - } - /** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ - - - var Util = { - TRANSITION_END: 'bsTransitionEnd', - getUID: function getUID(prefix) { - do { - prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here - } while (document.getElementById(prefix)); - - return prefix; - }, - getSelectorFromElement: function getSelectorFromElement(element) { - var selector = element.getAttribute('data-target'); - - if (!selector || selector === '#') { - var hrefAttr = element.getAttribute('href'); - selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; - } - - try { - return document.querySelector(selector) ? selector : null; - } catch (_) { - return null; - } - }, - getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } // Get transition-duration of the element - - - var transitionDuration = $__default['default'](element).css('transition-duration'); - var transitionDelay = $__default['default'](element).css('transition-delay'); - var floatTransitionDuration = parseFloat(transitionDuration); - var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found - - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } // If multiple durations are defined, take the first - - - transitionDuration = transitionDuration.split(',')[0]; - transitionDelay = transitionDelay.split(',')[0]; - return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; - }, - reflow: function reflow(element) { - return element.offsetHeight; - }, - triggerTransitionEnd: function triggerTransitionEnd(element) { - $__default['default'](element).trigger(TRANSITION_END); - }, - supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(TRANSITION_END); - }, - isElement: function isElement(obj) { - return (obj[0] || obj).nodeType; - }, - typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { - for (var property in configTypes) { - if (Object.prototype.hasOwnProperty.call(configTypes, property)) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && Util.isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); - } - } - } - }, - findShadowRoot: function findShadowRoot(element) { - if (!document.documentElement.attachShadow) { - return null; - } // Can find the shadow root otherwise it'll return the document - - - if (typeof element.getRootNode === 'function') { - var root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; - } - - if (element instanceof ShadowRoot) { - return element; - } // when we don't find a shadow root - - - if (!element.parentNode) { - return null; - } - - return Util.findShadowRoot(element.parentNode); - }, - jQueryDetection: function jQueryDetection() { - if (typeof $__default['default'] === 'undefined') { - throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); - } - - var version = $__default['default'].fn.jquery.split(' ')[0].split('.'); - var minMajor = 1; - var ltMajor = 2; - var minMinor = 9; - var minPatch = 1; - var maxMajor = 4; - - if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { - throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); - } - } - }; - Util.jQueryDetection(); - setTransitionEndSupport(); - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME = 'alert'; - var VERSION = '4.6.0'; - var DATA_KEY = 'bs.alert'; - var EVENT_KEY = "." + DATA_KEY; - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME]; - var SELECTOR_DISMISS = '[data-dismiss="alert"]'; - var EVENT_CLOSE = "close" + EVENT_KEY; - var EVENT_CLOSED = "closed" + EVENT_KEY; - var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; - var CLASS_NAME_ALERT = 'alert'; - var CLASS_NAME_FADE = 'fade'; - var CLASS_NAME_SHOW = 'show'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Alert = /*#__PURE__*/function () { - function Alert(element) { - this._element = element; - } // Getters - - - var _proto = Alert.prototype; - - // Public - _proto.close = function close(element) { - var rootElement = this._element; - - if (element) { - rootElement = this._getRootElement(element); - } - - var customEvent = this._triggerCloseEvent(rootElement); - - if (customEvent.isDefaultPrevented()) { - return; - } - - this._removeElement(rootElement); - }; - - _proto.dispose = function dispose() { - $__default['default'].removeData(this._element, DATA_KEY); - this._element = null; - } // Private - ; - - _proto._getRootElement = function _getRootElement(element) { - var selector = Util.getSelectorFromElement(element); - var parent = false; - - if (selector) { - parent = document.querySelector(selector); - } - - if (!parent) { - parent = $__default['default'](element).closest("." + CLASS_NAME_ALERT)[0]; - } - - return parent; - }; - - _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - var closeEvent = $__default['default'].Event(EVENT_CLOSE); - $__default['default'](element).trigger(closeEvent); - return closeEvent; - }; - - _proto._removeElement = function _removeElement(element) { - var _this = this; - - $__default['default'](element).removeClass(CLASS_NAME_SHOW); - - if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) { - this._destroyElement(element); - - return; - } - - var transitionDuration = Util.getTransitionDurationFromElement(element); - $__default['default'](element).one(Util.TRANSITION_END, function (event) { - return _this._destroyElement(element, event); - }).emulateTransitionEnd(transitionDuration); - }; - - _proto._destroyElement = function _destroyElement(element) { - $__default['default'](element).detach().trigger(EVENT_CLOSED).remove(); - } // Static - ; - - Alert._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $__default['default'](this); - var data = $element.data(DATA_KEY); - - if (!data) { - data = new Alert(this); - $element.data(DATA_KEY, data); - } - - if (config === 'close') { - data[config](this); - } - }); - }; - - Alert._handleDismiss = function _handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); - } - - alertInstance.close(this); - }; - }; - - _createClass(Alert, null, [{ - key: "VERSION", - get: function get() { - return VERSION; - } - }]); - - return Alert; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert())); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default['default'].fn[NAME] = Alert._jQueryInterface; - $__default['default'].fn[NAME].Constructor = Alert; - - $__default['default'].fn[NAME].noConflict = function () { - $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$1 = 'button'; - var VERSION$1 = '4.6.0'; - var DATA_KEY$1 = 'bs.button'; - var EVENT_KEY$1 = "." + DATA_KEY$1; - var DATA_API_KEY$1 = '.data-api'; - var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1]; - var CLASS_NAME_ACTIVE = 'active'; - var CLASS_NAME_BUTTON = 'btn'; - var CLASS_NAME_FOCUS = 'focus'; - var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; - var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; - var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]'; - var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; - var SELECTOR_INPUT = 'input:not([type="hidden"])'; - var SELECTOR_ACTIVE = '.active'; - var SELECTOR_BUTTON = '.btn'; - var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1; - var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1); - var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$1 + DATA_API_KEY$1; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Button = /*#__PURE__*/function () { - function Button(element) { - this._element = element; - this.shouldAvoidTriggerChange = false; - } // Getters - - - var _proto = Button.prototype; - - // Public - _proto.toggle = function toggle() { - var triggerChangeEvent = true; - var addAriaPressed = true; - var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0]; - - if (rootElement) { - var input = this._element.querySelector(SELECTOR_INPUT); - - if (input) { - if (input.type === 'radio') { - if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) { - triggerChangeEvent = false; - } else { - var activeElement = rootElement.querySelector(SELECTOR_ACTIVE); - - if (activeElement) { - $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE); - } - } - } - - if (triggerChangeEvent) { - // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input - if (input.type === 'checkbox' || input.type === 'radio') { - input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE); - } - - if (!this.shouldAvoidTriggerChange) { - $__default['default'](input).trigger('change'); - } - } - - input.focus(); - addAriaPressed = false; - } - } - - if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) { - if (addAriaPressed) { - this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE)); - } - - if (triggerChangeEvent) { - $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE); - } - } - }; - - _proto.dispose = function dispose() { - $__default['default'].removeData(this._element, DATA_KEY$1); - this._element = null; - } // Static - ; - - Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) { - return this.each(function () { - var $element = $__default['default'](this); - var data = $element.data(DATA_KEY$1); - - if (!data) { - data = new Button(this); - $element.data(DATA_KEY$1, data); - } - - data.shouldAvoidTriggerChange = avoidTriggerChange; - - if (config === 'toggle') { - data[config](); - } - }); - }; - - _createClass(Button, null, [{ - key: "VERSION", - get: function get() { - return VERSION$1; - } - }]); - - return Button; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) { - var button = event.target; - var initialButton = button; - - if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) { - button = $__default['default'](button).closest(SELECTOR_BUTTON)[0]; - } - - if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) { - event.preventDefault(); // work around Firefox bug #1540995 - } else { - var inputBtn = button.querySelector(SELECTOR_INPUT); - - if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) { - event.preventDefault(); // work around Firefox bug #1540995 - - return; - } - - if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') { - Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT'); - } - } - }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) { - var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0]; - $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type)); - }); - $__default['default'](window).on(EVENT_LOAD_DATA_API, function () { - // ensure correct active class is set to match the controls' actual values/states - // find all checkboxes/readio buttons inside data-toggle groups - var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS)); - - for (var i = 0, len = buttons.length; i < len; i++) { - var button = buttons[i]; - var input = button.querySelector(SELECTOR_INPUT); - - if (input.checked || input.hasAttribute('checked')) { - button.classList.add(CLASS_NAME_ACTIVE); - } else { - button.classList.remove(CLASS_NAME_ACTIVE); - } - } // find all button toggles - - - buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); - - for (var _i = 0, _len = buttons.length; _i < _len; _i++) { - var _button = buttons[_i]; - - if (_button.getAttribute('aria-pressed') === 'true') { - _button.classList.add(CLASS_NAME_ACTIVE); - } else { - _button.classList.remove(CLASS_NAME_ACTIVE); - } - } - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default['default'].fn[NAME$1] = Button._jQueryInterface; - $__default['default'].fn[NAME$1].Constructor = Button; - - $__default['default'].fn[NAME$1].noConflict = function () { - $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1; - return Button._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$2 = 'carousel'; - var VERSION$2 = '4.6.0'; - var DATA_KEY$2 = 'bs.carousel'; - var EVENT_KEY$2 = "." + DATA_KEY$2; - var DATA_API_KEY$2 = '.data-api'; - var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2]; - var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key - - var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key - - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - - var SWIPE_THRESHOLD = 40; - var Default = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true, - touch: true - }; - var DefaultType = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean', - touch: 'boolean' - }; - var DIRECTION_NEXT = 'next'; - var DIRECTION_PREV = 'prev'; - var DIRECTION_LEFT = 'left'; - var DIRECTION_RIGHT = 'right'; - var EVENT_SLIDE = "slide" + EVENT_KEY$2; - var EVENT_SLID = "slid" + EVENT_KEY$2; - var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2; - var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2; - var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2; - var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2; - var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2; - var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2; - var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2; - var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2; - var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2; - var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$2 + DATA_API_KEY$2; - var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2; - var CLASS_NAME_CAROUSEL = 'carousel'; - var CLASS_NAME_ACTIVE$1 = 'active'; - var CLASS_NAME_SLIDE = 'slide'; - var CLASS_NAME_RIGHT = 'carousel-item-right'; - var CLASS_NAME_LEFT = 'carousel-item-left'; - var CLASS_NAME_NEXT = 'carousel-item-next'; - var CLASS_NAME_PREV = 'carousel-item-prev'; - var CLASS_NAME_POINTER_EVENT = 'pointer-event'; - var SELECTOR_ACTIVE$1 = '.active'; - var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; - var SELECTOR_ITEM = '.carousel-item'; - var SELECTOR_ITEM_IMG = '.carousel-item img'; - var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; - var SELECTOR_INDICATORS = '.carousel-indicators'; - var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'; - var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; - var PointerType = { - TOUCH: 'touch', - PEN: 'pen' - }; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Carousel = /*#__PURE__*/function () { - function Carousel(element, config) { - this._items = null; - this._interval = null; - this._activeElement = null; - this._isPaused = false; - this._isSliding = false; - this.touchTimeout = null; - this.touchStartX = 0; - this.touchDeltaX = 0; - this._config = this._getConfig(config); - this._element = element; - this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS); - this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); - - this._addEventListeners(); - } // Getters - - - var _proto = Carousel.prototype; - - // Public - _proto.next = function next() { - if (!this._isSliding) { - this._slide(DIRECTION_NEXT); - } - }; - - _proto.nextWhenVisible = function nextWhenVisible() { - var $element = $__default['default'](this._element); // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - - if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') { - this.next(); - } - }; - - _proto.prev = function prev() { - if (!this._isSliding) { - this._slide(DIRECTION_PREV); - } - }; - - _proto.pause = function pause(event) { - if (!event) { - this._isPaused = true; - } - - if (this._element.querySelector(SELECTOR_NEXT_PREV)) { - Util.triggerTransitionEnd(this._element); - this.cycle(true); - } - - clearInterval(this._interval); - this._interval = null; - }; - - _proto.cycle = function cycle(event) { - if (!event) { - this._isPaused = false; - } - - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - - if (this._config.interval && !this._isPaused) { - this._updateInterval(); - - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - }; - - _proto.to = function to(index) { - var _this = this; - - this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); - - var activeIndex = this._getItemIndex(this._activeElement); - - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - $__default['default'](this._element).one(EVENT_SLID, function () { - return _this.to(index); - }); - return; - } - - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - - var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; - - this._slide(direction, this._items[index]); - }; - - _proto.dispose = function dispose() { - $__default['default'](this._element).off(EVENT_KEY$2); - $__default['default'].removeData(this._element, DATA_KEY$2); - this._items = null; - this._config = null; - this._element = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); - Util.typeCheckConfig(NAME$2, config, DefaultType); - return config; - }; - - _proto._handleSwipe = function _handleSwipe() { - var absDeltax = Math.abs(this.touchDeltaX); - - if (absDeltax <= SWIPE_THRESHOLD) { - return; - } - - var direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; // swipe left - - if (direction > 0) { - this.prev(); - } // swipe right - - - if (direction < 0) { - this.next(); - } - }; - - _proto._addEventListeners = function _addEventListeners() { - var _this2 = this; - - if (this._config.keyboard) { - $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) { - return _this2._keydown(event); - }); - } - - if (this._config.pause === 'hover') { - $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) { - return _this2.pause(event); - }).on(EVENT_MOUSELEAVE, function (event) { - return _this2.cycle(event); - }); - } - - if (this._config.touch) { - this._addTouchEventListeners(); - } - }; - - _proto._addTouchEventListeners = function _addTouchEventListeners() { - var _this3 = this; - - if (!this._touchSupported) { - return; - } - - var start = function start(event) { - if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { - _this3.touchStartX = event.originalEvent.clientX; - } else if (!_this3._pointerEvent) { - _this3.touchStartX = event.originalEvent.touches[0].clientX; - } - }; - - var move = function move(event) { - // ensure swiping with one touch and not pinching - if (event.originalEvent.touches && event.originalEvent.touches.length > 1) { - _this3.touchDeltaX = 0; - } else { - _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX; - } - }; - - var end = function end(event) { - if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { - _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; - } - - _this3._handleSwipe(); - - if (_this3._config.pause === 'hover') { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - _this3.pause(); - - if (_this3.touchTimeout) { - clearTimeout(_this3.touchTimeout); - } - - _this3.touchTimeout = setTimeout(function (event) { - return _this3.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); - } - }; - - $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) { - return e.preventDefault(); - }); - - if (this._pointerEvent) { - $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) { - return start(event); - }); - $__default['default'](this._element).on(EVENT_POINTERUP, function (event) { - return end(event); - }); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) { - return start(event); - }); - $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) { - return move(event); - }); - $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) { - return end(event); - }); - } - }; - - _proto._keydown = function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - switch (event.which) { - case ARROW_LEFT_KEYCODE: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEYCODE: - event.preventDefault(); - this.next(); - break; - } - }; - - _proto._getItemIndex = function _getItemIndex(element) { - this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : []; - return this._items.indexOf(element); - }; - - _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === DIRECTION_NEXT; - var isPrevDirection = direction === DIRECTION_PREV; - - var activeIndex = this._getItemIndex(activeElement); - - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } - - var delta = direction === DIRECTION_PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - }; - - _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - - var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM)); - - var slideEvent = $__default['default'].Event(EVENT_SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - $__default['default'](this._element).trigger(slideEvent); - return slideEvent; - }; - - _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1)); - $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1); - - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; - - if (nextIndicator) { - $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1); - } - } - }; - - _proto._updateInterval = function _updateInterval() { - var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM); - - if (!element) { - return; - } - - var elementInterval = parseInt(element.getAttribute('data-interval'), 10); - - if (elementInterval) { - this._config.defaultInterval = this._config.defaultInterval || this._config.interval; - this._config.interval = elementInterval; - } else { - this._config.interval = this._config.defaultInterval || this._config.interval; - } - }; - - _proto._slide = function _slide(direction, element) { - var _this4 = this; - - var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); - - var activeElementIndex = this._getItemIndex(activeElement); - - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - - var nextElementIndex = this._getItemIndex(nextElement); - - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; - - if (direction === DIRECTION_NEXT) { - directionalClassName = CLASS_NAME_LEFT; - orderClassName = CLASS_NAME_NEXT; - eventDirectionName = DIRECTION_LEFT; - } else { - directionalClassName = CLASS_NAME_RIGHT; - orderClassName = CLASS_NAME_PREV; - eventDirectionName = DIRECTION_RIGHT; - } - - if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) { - this._isSliding = false; - return; - } - - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - - if (slideEvent.isDefaultPrevented()) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } - - this._isSliding = true; - - if (isCycling) { - this.pause(); - } - - this._setActiveIndicatorElement(nextElement); - - this._activeElement = nextElement; - var slidEvent = $__default['default'].Event(EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - - if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) { - $__default['default'](nextElement).addClass(orderClassName); - Util.reflow(nextElement); - $__default['default'](activeElement).addClass(directionalClassName); - $__default['default'](nextElement).addClass(directionalClassName); - var transitionDuration = Util.getTransitionDurationFromElement(activeElement); - $__default['default'](activeElement).one(Util.TRANSITION_END, function () { - $__default['default'](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$1); - $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + " " + orderClassName + " " + directionalClassName); - _this4._isSliding = false; - setTimeout(function () { - return $__default['default'](_this4._element).trigger(slidEvent); - }, 0); - }).emulateTransitionEnd(transitionDuration); - } else { - $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1); - $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1); - this._isSliding = false; - $__default['default'](this._element).trigger(slidEvent); - } - - if (isCycling) { - this.cycle(); - } - } // Static - ; - - Carousel._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $__default['default'](this).data(DATA_KEY$2); - - var _config = _extends({}, Default, $__default['default'](this).data()); - - if (typeof config === 'object') { - _config = _extends({}, _config, config); - } - - var action = typeof config === 'string' ? config : _config.slide; - - if (!data) { - data = new Carousel(this, _config); - $__default['default'](this).data(DATA_KEY$2, data); - } - - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } - - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } - }); - }; - - Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { - var selector = Util.getSelectorFromElement(this); - - if (!selector) { - return; - } - - var target = $__default['default'](selector)[0]; - - if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) { - return; - } - - var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data()); - - var slideIndex = this.getAttribute('data-slide-to'); - - if (slideIndex) { - config.interval = false; - } - - Carousel._jQueryInterface.call($__default['default'](target), config); - - if (slideIndex) { - $__default['default'](target).data(DATA_KEY$2).to(slideIndex); - } - - event.preventDefault(); - }; - - _createClass(Carousel, null, [{ - key: "VERSION", - get: function get() { - return VERSION$2; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); - - return Carousel; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler); - $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () { - var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE)); - - for (var i = 0, len = carousels.length; i < len; i++) { - var $carousel = $__default['default'](carousels[i]); - - Carousel._jQueryInterface.call($carousel, $carousel.data()); - } - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default['default'].fn[NAME$2] = Carousel._jQueryInterface; - $__default['default'].fn[NAME$2].Constructor = Carousel; - - $__default['default'].fn[NAME$2].noConflict = function () { - $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2; - return Carousel._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$3 = 'collapse'; - var VERSION$3 = '4.6.0'; - var DATA_KEY$3 = 'bs.collapse'; - var EVENT_KEY$3 = "." + DATA_KEY$3; - var DATA_API_KEY$3 = '.data-api'; - var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3]; - var Default$1 = { - toggle: true, - parent: '' - }; - var DefaultType$1 = { - toggle: 'boolean', - parent: '(string|element)' - }; - var EVENT_SHOW = "show" + EVENT_KEY$3; - var EVENT_SHOWN = "shown" + EVENT_KEY$3; - var EVENT_HIDE = "hide" + EVENT_KEY$3; - var EVENT_HIDDEN = "hidden" + EVENT_KEY$3; - var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3; - var CLASS_NAME_SHOW$1 = 'show'; - var CLASS_NAME_COLLAPSE = 'collapse'; - var CLASS_NAME_COLLAPSING = 'collapsing'; - var CLASS_NAME_COLLAPSED = 'collapsed'; - var DIMENSION_WIDTH = 'width'; - var DIMENSION_HEIGHT = 'height'; - var SELECTOR_ACTIVES = '.show, .collapsing'; - var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Collapse = /*#__PURE__*/function () { - function Collapse(element, config) { - this._isTransitioning = false; - this._element = element; - this._config = this._getConfig(config); - this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); - var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1)); - - for (var i = 0, len = toggleList.length; i < len; i++) { - var elem = toggleList[i]; - var selector = Util.getSelectorFromElement(elem); - var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { - return foundElem === element; - }); - - if (selector !== null && filterElement.length > 0) { - this._selector = selector; - - this._triggerArray.push(elem); - } - } - - this._parent = this._config.parent ? this._getParent() : null; - - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray); - } - - if (this._config.toggle) { - this.toggle(); - } - } // Getters - - - var _proto = Collapse.prototype; - - // Public - _proto.toggle = function toggle() { - if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) { - this.hide(); - } else { - this.show(); - } - }; - - _proto.show = function show() { - var _this = this; - - if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) { - if (typeof _this._config.parent === 'string') { - return elem.getAttribute('data-parent') === _this._config.parent; - } - - return elem.classList.contains(CLASS_NAME_COLLAPSE); - }); - - if (actives.length === 0) { - actives = null; - } - } - - if (actives) { - activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3); - - if (activesData && activesData._isTransitioning) { - return; - } - } - - var startEvent = $__default['default'].Event(EVENT_SHOW); - $__default['default'](this._element).trigger(startEvent); - - if (startEvent.isDefaultPrevented()) { - return; - } - - if (actives) { - Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide'); - - if (!activesData) { - $__default['default'](actives).data(DATA_KEY$3, null); - } - } - - var dimension = this._getDimension(); - - $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); - this._element.style[dimension] = 0; - - if (this._triggerArray.length) { - $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true); - } - - this.setTransitioning(true); - - var complete = function complete() { - $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); - _this._element.style[dimension] = ''; - - _this.setTransitioning(false); - - $__default['default'](_this._element).trigger(EVENT_SHOWN); - }; - - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - this._element.style[dimension] = this._element[scrollSize] + "px"; - }; - - _proto.hide = function hide() { - var _this2 = this; - - if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) { - return; - } - - var startEvent = $__default['default'].Event(EVENT_HIDE); - $__default['default'](this._element).trigger(startEvent); - - if (startEvent.isDefaultPrevented()) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - Util.reflow(this._element); - $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1); - var triggerArrayLength = this._triggerArray.length; - - if (triggerArrayLength > 0) { - for (var i = 0; i < triggerArrayLength; i++) { - var trigger = this._triggerArray[i]; - var selector = Util.getSelectorFromElement(trigger); - - if (selector !== null) { - var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector))); - - if (!$elem.hasClass(CLASS_NAME_SHOW$1)) { - $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false); - } - } - } - } - - this.setTransitioning(true); - - var complete = function complete() { - _this2.setTransitioning(false); - - $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN); - }; - - this._element.style[dimension] = ''; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - }; - - _proto.setTransitioning = function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - }; - - _proto.dispose = function dispose() { - $__default['default'].removeData(this._element, DATA_KEY$3); - this._config = null; - this._parent = null; - this._element = null; - this._triggerArray = null; - this._isTransitioning = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$1, config); - config.toggle = Boolean(config.toggle); // Coerce string values - - Util.typeCheckConfig(NAME$3, config, DefaultType$1); - return config; - }; - - _proto._getDimension = function _getDimension() { - var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH); - return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; - }; - - _proto._getParent = function _getParent() { - var _this3 = this; - - var parent; - - if (Util.isElement(this._config.parent)) { - parent = this._config.parent; // It's a jQuery object - - if (typeof this._config.parent.jquery !== 'undefined') { - parent = this._config.parent[0]; - } - } else { - parent = document.querySelector(this._config.parent); - } - - var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; - var children = [].slice.call(parent.querySelectorAll(selector)); - $__default['default'](children).each(function (i, element) { - _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); - }); - return parent; - }; - - _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1); - - if (triggerArray.length) { - $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen); - } - } // Static - ; - - Collapse._getTargetFromElement = function _getTargetFromElement(element) { - var selector = Util.getSelectorFromElement(element); - return selector ? document.querySelector(selector) : null; - }; - - Collapse._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $__default['default'](this); - var data = $element.data(DATA_KEY$3); - - var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {}); - - if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(this, _config); - $element.data(DATA_KEY$3, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Collapse, null, [{ - key: "VERSION", - get: function get() { - return VERSION$3; - } - }, { - key: "Default", - get: function get() { - return Default$1; - } - }]); - - return Collapse; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.currentTarget.tagName === 'A') { - event.preventDefault(); - } - - var $trigger = $__default['default'](this); - var selector = Util.getSelectorFromElement(this); - var selectors = [].slice.call(document.querySelectorAll(selector)); - $__default['default'](selectors).each(function () { - var $target = $__default['default'](this); - var data = $target.data(DATA_KEY$3); - var config = data ? 'toggle' : $trigger.data(); - - Collapse._jQueryInterface.call($target, config); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default['default'].fn[NAME$3] = Collapse._jQueryInterface; - $__default['default'].fn[NAME$3].Constructor = Collapse; - - $__default['default'].fn[NAME$3].noConflict = function () { - $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3; - return Collapse._jQueryInterface; - }; - - /**! - * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.16.1 - * @license - * Copyright (c) 2016 Federico Zivolo and contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; - - var timeoutDuration = function () { - var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; - for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { - if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { - return 1; - } - } - return 0; - }(); - - function microtaskDebounce(fn) { - var called = false; - return function () { - if (called) { - return; - } - called = true; - window.Promise.resolve().then(function () { - called = false; - fn(); - }); - }; - } - - function taskDebounce(fn) { - var scheduled = false; - return function () { - if (!scheduled) { - scheduled = true; - setTimeout(function () { - scheduled = false; - fn(); - }, timeoutDuration); - } - }; - } - - var supportsMicroTasks = isBrowser && window.Promise; - - /** - * Create a debounced version of a method, that's asynchronously deferred - * but called in the minimum time possible. - * - * @method - * @memberof Popper.Utils - * @argument {Function} fn - * @returns {Function} - */ - var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; - - /** - * Check if the given variable is a function - * @method - * @memberof Popper.Utils - * @argument {Any} functionToCheck - variable to check - * @returns {Boolean} answer to: is a function? - */ - function isFunction(functionToCheck) { - var getType = {}; - return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; - } - - /** - * Get CSS computed property of the given element - * @method - * @memberof Popper.Utils - * @argument {Eement} element - * @argument {String} property - */ - function getStyleComputedProperty(element, property) { - if (element.nodeType !== 1) { - return []; - } - // NOTE: 1 DOM access here - var window = element.ownerDocument.defaultView; - var css = window.getComputedStyle(element, null); - return property ? css[property] : css; - } - - /** - * Returns the parentNode or the host of the element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} parent - */ - function getParentNode(element) { - if (element.nodeName === 'HTML') { - return element; - } - return element.parentNode || element.host; - } - - /** - * Returns the scrolling parent of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} scroll parent - */ - function getScrollParent(element) { - // Return body, `getScroll` will take care to get the correct `scrollTop` from it - if (!element) { - return document.body; - } - - switch (element.nodeName) { - case 'HTML': - case 'BODY': - return element.ownerDocument.body; - case '#document': - return element.body; - } - - // Firefox want us to check `-x` and `-y` variations as well - - var _getStyleComputedProp = getStyleComputedProperty(element), - overflow = _getStyleComputedProp.overflow, - overflowX = _getStyleComputedProp.overflowX, - overflowY = _getStyleComputedProp.overflowY; - - if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { - return element; - } - - return getScrollParent(getParentNode(element)); - } - - /** - * Returns the reference node of the reference object, or the reference object itself. - * @method - * @memberof Popper.Utils - * @param {Element|Object} reference - the reference element (the popper will be relative to this) - * @returns {Element} parent - */ - function getReferenceNode(reference) { - return reference && reference.referenceNode ? reference.referenceNode : reference; - } - - var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); - var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); - - /** - * Determines if the browser is Internet Explorer - * @method - * @memberof Popper.Utils - * @param {Number} version to check - * @returns {Boolean} isIE - */ - function isIE(version) { - if (version === 11) { - return isIE11; - } - if (version === 10) { - return isIE10; - } - return isIE11 || isIE10; - } - - /** - * Returns the offset parent of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} offset parent - */ - function getOffsetParent(element) { - if (!element) { - return document.documentElement; - } - - var noOffsetParent = isIE(10) ? document.body : null; - - // NOTE: 1 DOM access here - var offsetParent = element.offsetParent || null; - // Skip hidden elements which don't have an offsetParent - while (offsetParent === noOffsetParent && element.nextElementSibling) { - offsetParent = (element = element.nextElementSibling).offsetParent; - } - - var nodeName = offsetParent && offsetParent.nodeName; - - if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { - return element ? element.ownerDocument.documentElement : document.documentElement; - } - - // .offsetParent will return the closest TH, TD or TABLE in case - // no offsetParent is present, I hate this job... - if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { - return getOffsetParent(offsetParent); - } - - return offsetParent; - } - - function isOffsetContainer(element) { - var nodeName = element.nodeName; - - if (nodeName === 'BODY') { - return false; - } - return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; - } - - /** - * Finds the root node (document, shadowDOM root) of the given element - * @method - * @memberof Popper.Utils - * @argument {Element} node - * @returns {Element} root node - */ - function getRoot(node) { - if (node.parentNode !== null) { - return getRoot(node.parentNode); - } - - return node; - } - - /** - * Finds the offset parent common to the two provided nodes - * @method - * @memberof Popper.Utils - * @argument {Element} element1 - * @argument {Element} element2 - * @returns {Element} common offset parent - */ - function findCommonOffsetParent(element1, element2) { - // This check is needed to avoid errors in case one of the elements isn't defined for any reason - if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return document.documentElement; - } - - // Here we make sure to give as "start" the element that comes first in the DOM - var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; - var start = order ? element1 : element2; - var end = order ? element2 : element1; - - // Get common ancestor container - var range = document.createRange(); - range.setStart(start, 0); - range.setEnd(end, 0); - var commonAncestorContainer = range.commonAncestorContainer; - - // Both nodes are inside #document - - if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { - if (isOffsetContainer(commonAncestorContainer)) { - return commonAncestorContainer; - } - - return getOffsetParent(commonAncestorContainer); - } - - // one of the nodes is inside shadowDOM, find which one - var element1root = getRoot(element1); - if (element1root.host) { - return findCommonOffsetParent(element1root.host, element2); - } else { - return findCommonOffsetParent(element1, getRoot(element2).host); - } - } - - /** - * Gets the scroll value of the given element in the given side (top and left) - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @argument {String} side `top` or `left` - * @returns {number} amount of scrolled pixels - */ - function getScroll(element) { - var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; - - var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; - var nodeName = element.nodeName; - - if (nodeName === 'BODY' || nodeName === 'HTML') { - var html = element.ownerDocument.documentElement; - var scrollingElement = element.ownerDocument.scrollingElement || html; - return scrollingElement[upperSide]; - } - - return element[upperSide]; - } - - /* - * Sum or subtract the element scroll values (left and top) from a given rect object - * @method - * @memberof Popper.Utils - * @param {Object} rect - Rect object you want to change - * @param {HTMLElement} element - The element from the function reads the scroll values - * @param {Boolean} subtract - set to true if you want to subtract the scroll values - * @return {Object} rect - The modifier rect object - */ - function includeScroll(rect, element) { - var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var scrollTop = getScroll(element, 'top'); - var scrollLeft = getScroll(element, 'left'); - var modifier = subtract ? -1 : 1; - rect.top += scrollTop * modifier; - rect.bottom += scrollTop * modifier; - rect.left += scrollLeft * modifier; - rect.right += scrollLeft * modifier; - return rect; - } - - /* - * Helper to detect borders of a given element - * @method - * @memberof Popper.Utils - * @param {CSSStyleDeclaration} styles - * Result of `getStyleComputedProperty` on the given element - * @param {String} axis - `x` or `y` - * @return {number} borders - The borders size of the given axis - */ - - function getBordersSize(styles, axis) { - var sideA = axis === 'x' ? 'Left' : 'Top'; - var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - - return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); - } - - function getSize(axis, body, html, computedStyle) { - return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); - } - - function getWindowSizes(document) { - var body = document.body; - var html = document.documentElement; - var computedStyle = isIE(10) && getComputedStyle(html); - - return { - height: getSize('Height', body, html, computedStyle), - width: getSize('Width', body, html, computedStyle) - }; - } - - var classCallCheck = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - }; - - var createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - - - - - var defineProperty = function (obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; - }; - - var _extends$1 = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - /** - * Given element offsets, generate an output similar to getBoundingClientRect - * @method - * @memberof Popper.Utils - * @argument {Object} offsets - * @returns {Object} ClientRect like output - */ - function getClientRect(offsets) { - return _extends$1({}, offsets, { - right: offsets.left + offsets.width, - bottom: offsets.top + offsets.height - }); - } - - /** - * Get bounding client rect of given element - * @method - * @memberof Popper.Utils - * @param {HTMLElement} element - * @return {Object} client rect - */ - function getBoundingClientRect(element) { - var rect = {}; - - // IE10 10 FIX: Please, don't ask, the element isn't - // considered in DOM in some circumstances... - // This isn't reproducible in IE10 compatibility mode of IE11 - try { - if (isIE(10)) { - rect = element.getBoundingClientRect(); - var scrollTop = getScroll(element, 'top'); - var scrollLeft = getScroll(element, 'left'); - rect.top += scrollTop; - rect.left += scrollLeft; - rect.bottom += scrollTop; - rect.right += scrollLeft; - } else { - rect = element.getBoundingClientRect(); - } - } catch (e) {} - - var result = { - left: rect.left, - top: rect.top, - width: rect.right - rect.left, - height: rect.bottom - rect.top - }; - - // subtract scrollbar size from sizes - var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; - var width = sizes.width || element.clientWidth || result.width; - var height = sizes.height || element.clientHeight || result.height; - - var horizScrollbar = element.offsetWidth - width; - var vertScrollbar = element.offsetHeight - height; - - // if an hypothetical scrollbar is detected, we must be sure it's not a `border` - // we make this check conditional for performance reasons - if (horizScrollbar || vertScrollbar) { - var styles = getStyleComputedProperty(element); - horizScrollbar -= getBordersSize(styles, 'x'); - vertScrollbar -= getBordersSize(styles, 'y'); - - result.width -= horizScrollbar; - result.height -= vertScrollbar; - } - - return getClientRect(result); - } - - function getOffsetRectRelativeToArbitraryNode(children, parent) { - var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - var isIE10 = isIE(10); - var isHTML = parent.nodeName === 'HTML'; - var childrenRect = getBoundingClientRect(children); - var parentRect = getBoundingClientRect(parent); - var scrollParent = getScrollParent(children); - - var styles = getStyleComputedProperty(parent); - var borderTopWidth = parseFloat(styles.borderTopWidth); - var borderLeftWidth = parseFloat(styles.borderLeftWidth); - - // In cases where the parent is fixed, we must ignore negative scroll in offset calc - if (fixedPosition && isHTML) { - parentRect.top = Math.max(parentRect.top, 0); - parentRect.left = Math.max(parentRect.left, 0); - } - var offsets = getClientRect({ - top: childrenRect.top - parentRect.top - borderTopWidth, - left: childrenRect.left - parentRect.left - borderLeftWidth, - width: childrenRect.width, - height: childrenRect.height - }); - offsets.marginTop = 0; - offsets.marginLeft = 0; - - // Subtract margins of documentElement in case it's being used as parent - // we do this only on HTML because it's the only element that behaves - // differently when margins are applied to it. The margins are included in - // the box of the documentElement, in the other cases not. - if (!isIE10 && isHTML) { - var marginTop = parseFloat(styles.marginTop); - var marginLeft = parseFloat(styles.marginLeft); - - offsets.top -= borderTopWidth - marginTop; - offsets.bottom -= borderTopWidth - marginTop; - offsets.left -= borderLeftWidth - marginLeft; - offsets.right -= borderLeftWidth - marginLeft; - - // Attach marginTop and marginLeft because in some circumstances we may need them - offsets.marginTop = marginTop; - offsets.marginLeft = marginLeft; - } - - if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { - offsets = includeScroll(offsets, parent); - } - - return offsets; - } - - function getViewportOffsetRectRelativeToArtbitraryNode(element) { - var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var html = element.ownerDocument.documentElement; - var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); - var width = Math.max(html.clientWidth, window.innerWidth || 0); - var height = Math.max(html.clientHeight, window.innerHeight || 0); - - var scrollTop = !excludeScroll ? getScroll(html) : 0; - var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; - - var offset = { - top: scrollTop - relativeOffset.top + relativeOffset.marginTop, - left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, - width: width, - height: height - }; - - return getClientRect(offset); - } - - /** - * Check if the given element is fixed or is inside a fixed parent - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @argument {Element} customContainer - * @returns {Boolean} answer to "isFixed?" - */ - function isFixed(element) { - var nodeName = element.nodeName; - if (nodeName === 'BODY' || nodeName === 'HTML') { - return false; - } - if (getStyleComputedProperty(element, 'position') === 'fixed') { - return true; - } - var parentNode = getParentNode(element); - if (!parentNode) { - return false; - } - return isFixed(parentNode); - } - - /** - * Finds the first parent of an element that has a transformed property defined - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Element} first transformed parent or documentElement - */ - - function getFixedPositionOffsetParent(element) { - // This check is needed to avoid errors in case one of the elements isn't defined for any reason - if (!element || !element.parentElement || isIE()) { - return document.documentElement; - } - var el = element.parentElement; - while (el && getStyleComputedProperty(el, 'transform') === 'none') { - el = el.parentElement; - } - return el || document.documentElement; - } - - /** - * Computed the boundaries limits and return them - * @method - * @memberof Popper.Utils - * @param {HTMLElement} popper - * @param {HTMLElement} reference - * @param {number} padding - * @param {HTMLElement} boundariesElement - Element used to define the boundaries - * @param {Boolean} fixedPosition - Is in fixed position mode - * @returns {Object} Coordinates of the boundaries - */ - function getBoundaries(popper, reference, padding, boundariesElement) { - var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; - - // NOTE: 1 DOM access here - - var boundaries = { top: 0, left: 0 }; - var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); - - // Handle viewport case - if (boundariesElement === 'viewport') { - boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); - } else { - // Handle other cases based on DOM element used as boundaries - var boundariesNode = void 0; - if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(reference)); - if (boundariesNode.nodeName === 'BODY') { - boundariesNode = popper.ownerDocument.documentElement; - } - } else if (boundariesElement === 'window') { - boundariesNode = popper.ownerDocument.documentElement; - } else { - boundariesNode = boundariesElement; - } - - var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); - - // In case of HTML, we need a different computation - if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { - var _getWindowSizes = getWindowSizes(popper.ownerDocument), - height = _getWindowSizes.height, - width = _getWindowSizes.width; - - boundaries.top += offsets.top - offsets.marginTop; - boundaries.bottom = height + offsets.top; - boundaries.left += offsets.left - offsets.marginLeft; - boundaries.right = width + offsets.left; - } else { - // for all the other DOM elements, this one is good - boundaries = offsets; - } - } - - // Add paddings - padding = padding || 0; - var isPaddingNumber = typeof padding === 'number'; - boundaries.left += isPaddingNumber ? padding : padding.left || 0; - boundaries.top += isPaddingNumber ? padding : padding.top || 0; - boundaries.right -= isPaddingNumber ? padding : padding.right || 0; - boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; - - return boundaries; - } - - function getArea(_ref) { - var width = _ref.width, - height = _ref.height; - - return width * height; - } - - /** - * Utility used to transform the `auto` placement to the placement with more - * available space. - * @method - * @memberof Popper.Utils - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { - var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; - - if (placement.indexOf('auto') === -1) { - return placement; - } - - var boundaries = getBoundaries(popper, reference, padding, boundariesElement); - - var rects = { - top: { - width: boundaries.width, - height: refRect.top - boundaries.top - }, - right: { - width: boundaries.right - refRect.right, - height: boundaries.height - }, - bottom: { - width: boundaries.width, - height: boundaries.bottom - refRect.bottom - }, - left: { - width: refRect.left - boundaries.left, - height: boundaries.height - } - }; - - var sortedAreas = Object.keys(rects).map(function (key) { - return _extends$1({ - key: key - }, rects[key], { - area: getArea(rects[key]) - }); - }).sort(function (a, b) { - return b.area - a.area; - }); - - var filteredAreas = sortedAreas.filter(function (_ref2) { - var width = _ref2.width, - height = _ref2.height; - return width >= popper.clientWidth && height >= popper.clientHeight; - }); - - var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; - - var variation = placement.split('-')[1]; - - return computedPlacement + (variation ? '-' + variation : ''); - } - - /** - * Get offsets to the reference element - * @method - * @memberof Popper.Utils - * @param {Object} state - * @param {Element} popper - the popper element - * @param {Element} reference - the reference element (the popper will be relative to this) - * @param {Element} fixedPosition - is in fixed position mode - * @returns {Object} An object containing the offsets which will be applied to the popper - */ - function getReferenceOffsets(state, popper, reference) { - var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; - - var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); - return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); - } - - /** - * Get the outer sizes of the given element (offset size + margins) - * @method - * @memberof Popper.Utils - * @argument {Element} element - * @returns {Object} object containing width and height properties - */ - function getOuterSizes(element) { - var window = element.ownerDocument.defaultView; - var styles = window.getComputedStyle(element); - var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); - var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); - var result = { - width: element.offsetWidth + y, - height: element.offsetHeight + x - }; - return result; - } - - /** - * Get the opposite placement of the given one - * @method - * @memberof Popper.Utils - * @argument {String} placement - * @returns {String} flipped placement - */ - function getOppositePlacement(placement) { - var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; - }); - } - - /** - * Get offsets to the popper - * @method - * @memberof Popper.Utils - * @param {Object} position - CSS position the Popper will get applied - * @param {HTMLElement} popper - the popper element - * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) - * @param {String} placement - one of the valid placement options - * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper - */ - function getPopperOffsets(popper, referenceOffsets, placement) { - placement = placement.split('-')[0]; - - // Get popper node sizes - var popperRect = getOuterSizes(popper); - - // Add position, width and height to our offsets object - var popperOffsets = { - width: popperRect.width, - height: popperRect.height - }; - - // depending by the popper placement we have to compute its offsets slightly differently - var isHoriz = ['right', 'left'].indexOf(placement) !== -1; - var mainSide = isHoriz ? 'top' : 'left'; - var secondarySide = isHoriz ? 'left' : 'top'; - var measurement = isHoriz ? 'height' : 'width'; - var secondaryMeasurement = !isHoriz ? 'height' : 'width'; - - popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; - if (placement === secondarySide) { - popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; - } else { - popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; - } - - return popperOffsets; - } - - /** - * Mimics the `find` method of Array - * @method - * @memberof Popper.Utils - * @argument {Array} arr - * @argument prop - * @argument value - * @returns index or -1 - */ - function find(arr, check) { - // use native find if supported - if (Array.prototype.find) { - return arr.find(check); - } - - // use `filter` to obtain the same behavior of `find` - return arr.filter(check)[0]; - } - - /** - * Return the index of the matching object - * @method - * @memberof Popper.Utils - * @argument {Array} arr - * @argument prop - * @argument value - * @returns index or -1 - */ - function findIndex(arr, prop, value) { - // use native findIndex if supported - if (Array.prototype.findIndex) { - return arr.findIndex(function (cur) { - return cur[prop] === value; - }); - } - - // use `find` + `indexOf` if `findIndex` isn't supported - var match = find(arr, function (obj) { - return obj[prop] === value; - }); - return arr.indexOf(match); - } - - /** - * Loop trough the list of modifiers and run them in order, - * each of them will then edit the data object. - * @method - * @memberof Popper.Utils - * @param {dataObject} data - * @param {Array} modifiers - * @param {String} ends - Optional modifier name used as stopper - * @returns {dataObject} - */ - function runModifiers(modifiers, data, ends) { - var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); - - modifiersToRun.forEach(function (modifier) { - if (modifier['function']) { - // eslint-disable-line dot-notation - console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); - } - var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation - if (modifier.enabled && isFunction(fn)) { - // Add properties to offsets to make them a complete clientRect object - // we do this before each modifier to make sure the previous one doesn't - // mess with these values - data.offsets.popper = getClientRect(data.offsets.popper); - data.offsets.reference = getClientRect(data.offsets.reference); - - data = fn(data, modifier); - } - }); - - return data; - } - - /** - * Updates the position of the popper, computing the new offsets and applying - * the new style.
- * Prefer `scheduleUpdate` over `update` because of performance reasons. - * @method - * @memberof Popper - */ - function update() { - // if popper is destroyed, don't perform any further update - if (this.state.isDestroyed) { - return; - } - - var data = { - instance: this, - styles: {}, - arrowStyles: {}, - attributes: {}, - flipped: false, - offsets: {} - }; - - // compute reference element offsets - data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); - - // compute auto placement, store placement inside the data object, - // modifiers will be able to edit `placement` if needed - // and refer to originalPlacement to know the original value - data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); - - // store the computed placement inside `originalPlacement` - data.originalPlacement = data.placement; - - data.positionFixed = this.options.positionFixed; - - // compute the popper offsets - data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); - - data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; - - // run the modifiers - data = runModifiers(this.modifiers, data); - - // the first `update` will call `onCreate` callback - // the other ones will call `onUpdate` callback - if (!this.state.isCreated) { - this.state.isCreated = true; - this.options.onCreate(data); - } else { - this.options.onUpdate(data); - } - } - - /** - * Helper used to know if the given modifier is enabled. - * @method - * @memberof Popper.Utils - * @returns {Boolean} - */ - function isModifierEnabled(modifiers, modifierName) { - return modifiers.some(function (_ref) { - var name = _ref.name, - enabled = _ref.enabled; - return enabled && name === modifierName; - }); - } - - /** - * Get the prefixed supported property name - * @method - * @memberof Popper.Utils - * @argument {String} property (camelCase) - * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) - */ - function getSupportedPropertyName(property) { - var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; - var upperProp = property.charAt(0).toUpperCase() + property.slice(1); - - for (var i = 0; i < prefixes.length; i++) { - var prefix = prefixes[i]; - var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof document.body.style[toCheck] !== 'undefined') { - return toCheck; - } - } - return null; - } - - /** - * Destroys the popper. - * @method - * @memberof Popper - */ - function destroy() { - this.state.isDestroyed = true; - - // touch DOM only if `applyStyle` modifier is enabled - if (isModifierEnabled(this.modifiers, 'applyStyle')) { - this.popper.removeAttribute('x-placement'); - this.popper.style.position = ''; - this.popper.style.top = ''; - this.popper.style.left = ''; - this.popper.style.right = ''; - this.popper.style.bottom = ''; - this.popper.style.willChange = ''; - this.popper.style[getSupportedPropertyName('transform')] = ''; - } - - this.disableEventListeners(); - - // remove the popper if user explicitly asked for the deletion on destroy - // do not use `remove` because IE11 doesn't support it - if (this.options.removeOnDestroy) { - this.popper.parentNode.removeChild(this.popper); - } - return this; - } - - /** - * Get the window associated with the element - * @argument {Element} element - * @returns {Window} - */ - function getWindow(element) { - var ownerDocument = element.ownerDocument; - return ownerDocument ? ownerDocument.defaultView : window; - } - - function attachToScrollParents(scrollParent, event, callback, scrollParents) { - var isBody = scrollParent.nodeName === 'BODY'; - var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; - target.addEventListener(event, callback, { passive: true }); - - if (!isBody) { - attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); - } - scrollParents.push(target); - } - - /** - * Setup needed event listeners used to update the popper position - * @method - * @memberof Popper.Utils - * @private - */ - function setupEventListeners(reference, options, state, updateBound) { - // Resize event listener on window - state.updateBound = updateBound; - getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); - - // Scroll event listener on scroll parents - var scrollElement = getScrollParent(reference); - attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); - state.scrollElement = scrollElement; - state.eventsEnabled = true; - - return state; - } - - /** - * It will add resize/scroll events and start recalculating - * position of the popper element when they are triggered. - * @method - * @memberof Popper - */ - function enableEventListeners() { - if (!this.state.eventsEnabled) { - this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); - } - } - - /** - * Remove event listeners used to update the popper position - * @method - * @memberof Popper.Utils - * @private - */ - function removeEventListeners(reference, state) { - // Remove resize event listener on window - getWindow(reference).removeEventListener('resize', state.updateBound); - - // Remove scroll event listener on scroll parents - state.scrollParents.forEach(function (target) { - target.removeEventListener('scroll', state.updateBound); - }); - - // Reset state - state.updateBound = null; - state.scrollParents = []; - state.scrollElement = null; - state.eventsEnabled = false; - return state; - } - - /** - * It will remove resize/scroll events and won't recalculate popper position - * when they are triggered. It also won't trigger `onUpdate` callback anymore, - * unless you call `update` method manually. - * @method - * @memberof Popper - */ - function disableEventListeners() { - if (this.state.eventsEnabled) { - cancelAnimationFrame(this.scheduleUpdate); - this.state = removeEventListeners(this.reference, this.state); - } - } - - /** - * Tells if a given input is a number - * @method - * @memberof Popper.Utils - * @param {*} input to check - * @return {Boolean} - */ - function isNumeric(n) { - return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); - } - - /** - * Set the style to the given popper - * @method - * @memberof Popper.Utils - * @argument {Element} element - Element to apply the style to - * @argument {Object} styles - * Object with a list of properties and values which will be applied to the element - */ - function setStyles(element, styles) { - Object.keys(styles).forEach(function (prop) { - var unit = ''; - // add unit if the value is numeric and is one of the following - if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { - unit = 'px'; - } - element.style[prop] = styles[prop] + unit; - }); - } - - /** - * Set the attributes to the given popper - * @method - * @memberof Popper.Utils - * @argument {Element} element - Element to apply the attributes to - * @argument {Object} styles - * Object with a list of properties and values which will be applied to the element - */ - function setAttributes(element, attributes) { - Object.keys(attributes).forEach(function (prop) { - var value = attributes[prop]; - if (value !== false) { - element.setAttribute(prop, attributes[prop]); - } else { - element.removeAttribute(prop); - } - }); - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} data.styles - List of style properties - values to apply to popper element - * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The same data object - */ - function applyStyle(data) { - // any property present in `data.styles` will be applied to the popper, - // in this way we can make the 3rd party modifiers add custom styles to it - // Be aware, modifiers could override the properties defined in the previous - // lines of this modifier! - setStyles(data.instance.popper, data.styles); - - // any property present in `data.attributes` will be applied to the popper, - // they will be set as HTML attributes of the element - setAttributes(data.instance.popper, data.attributes); - - // if arrowElement is defined and arrowStyles has some properties - if (data.arrowElement && Object.keys(data.arrowStyles).length) { - setStyles(data.arrowElement, data.arrowStyles); - } - - return data; - } - - /** - * Set the x-placement attribute before everything else because it could be used - * to add margins to the popper margins needs to be calculated to get the - * correct popper offsets. - * @method - * @memberof Popper.modifiers - * @param {HTMLElement} reference - The reference element used to position the popper - * @param {HTMLElement} popper - The HTML element used as popper - * @param {Object} options - Popper.js options - */ - function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { - // compute reference element offsets - var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); - - // compute auto placement, store placement inside the data object, - // modifiers will be able to edit `placement` if needed - // and refer to originalPlacement to know the original value - var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); - - popper.setAttribute('x-placement', placement); - - // Apply `position` to popper before anything else because - // without the position applied we can't guarantee correct computations - setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); - - return options; - } - - /** - * @function - * @memberof Popper.Utils - * @argument {Object} data - The data object generated by `update` method - * @argument {Boolean} shouldRound - If the offsets should be rounded at all - * @returns {Object} The popper's position offsets rounded - * - * The tale of pixel-perfect positioning. It's still not 100% perfect, but as - * good as it can be within reason. - * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 - * - * Low DPI screens cause a popper to be blurry if not using full pixels (Safari - * as well on High DPI screens). - * - * Firefox prefers no rounding for positioning and does not have blurriness on - * high DPI screens. - * - * Only horizontal placement and left/right values need to be considered. - */ - function getRoundedOffsets(data, shouldRound) { - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - var round = Math.round, - floor = Math.floor; - - var noRound = function noRound(v) { - return v; - }; - - var referenceWidth = round(reference.width); - var popperWidth = round(popper.width); - - var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; - var isVariation = data.placement.indexOf('-') !== -1; - var sameWidthParity = referenceWidth % 2 === popperWidth % 2; - var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; - - var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; - var verticalToInteger = !shouldRound ? noRound : round; - - return { - left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), - top: verticalToInteger(popper.top), - bottom: verticalToInteger(popper.bottom), - right: horizontalToInteger(popper.right) - }; - } - - var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function computeStyle(data, options) { - var x = options.x, - y = options.y; - var popper = data.offsets.popper; - - // Remove this legacy support in Popper.js v2 - - var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { - return modifier.name === 'applyStyle'; - }).gpuAcceleration; - if (legacyGpuAccelerationOption !== undefined) { - console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); - } - var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; - - var offsetParent = getOffsetParent(data.instance.popper); - var offsetParentRect = getBoundingClientRect(offsetParent); - - // Styles - var styles = { - position: popper.position - }; - - var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); - - var sideA = x === 'bottom' ? 'top' : 'bottom'; - var sideB = y === 'right' ? 'left' : 'right'; - - // if gpuAcceleration is set to `true` and transform is supported, - // we use `translate3d` to apply the position to the popper we - // automatically use the supported prefixed version if needed - var prefixedProperty = getSupportedPropertyName('transform'); - - // now, let's make a step back and look at this code closely (wtf?) - // If the content of the popper grows once it's been positioned, it - // may happen that the popper gets misplaced because of the new content - // overflowing its reference element - // To avoid this problem, we provide two options (x and y), which allow - // the consumer to define the offset origin. - // If we position a popper on top of a reference element, we can set - // `x` to `top` to make the popper grow towards its top instead of - // its bottom. - var left = void 0, - top = void 0; - if (sideA === 'bottom') { - // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) - // and not the bottom of the html element - if (offsetParent.nodeName === 'HTML') { - top = -offsetParent.clientHeight + offsets.bottom; - } else { - top = -offsetParentRect.height + offsets.bottom; - } - } else { - top = offsets.top; - } - if (sideB === 'right') { - if (offsetParent.nodeName === 'HTML') { - left = -offsetParent.clientWidth + offsets.right; - } else { - left = -offsetParentRect.width + offsets.right; - } - } else { - left = offsets.left; - } - if (gpuAcceleration && prefixedProperty) { - styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; - styles[sideA] = 0; - styles[sideB] = 0; - styles.willChange = 'transform'; - } else { - // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties - var invertTop = sideA === 'bottom' ? -1 : 1; - var invertLeft = sideB === 'right' ? -1 : 1; - styles[sideA] = top * invertTop; - styles[sideB] = left * invertLeft; - styles.willChange = sideA + ', ' + sideB; - } - - // Attributes - var attributes = { - 'x-placement': data.placement - }; - - // Update `data` attributes, styles and arrowStyles - data.attributes = _extends$1({}, attributes, data.attributes); - data.styles = _extends$1({}, styles, data.styles); - data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles); - - return data; - } - - /** - * Helper used to know if the given modifier depends from another one.
- * It checks if the needed modifier is listed and enabled. - * @method - * @memberof Popper.Utils - * @param {Array} modifiers - list of modifiers - * @param {String} requestingName - name of requesting modifier - * @param {String} requestedName - name of requested modifier - * @returns {Boolean} - */ - function isModifierRequired(modifiers, requestingName, requestedName) { - var requesting = find(modifiers, function (_ref) { - var name = _ref.name; - return name === requestingName; - }); - - var isRequired = !!requesting && modifiers.some(function (modifier) { - return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; - }); - - if (!isRequired) { - var _requesting = '`' + requestingName + '`'; - var requested = '`' + requestedName + '`'; - console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); - } - return isRequired; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function arrow(data, options) { - var _data$offsets$arrow; - - // arrow depends on keepTogether in order to work - if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { - return data; - } - - var arrowElement = options.element; - - // if arrowElement is a string, suppose it's a CSS selector - if (typeof arrowElement === 'string') { - arrowElement = data.instance.popper.querySelector(arrowElement); - - // if arrowElement is not found, don't run the modifier - if (!arrowElement) { - return data; - } - } else { - // if the arrowElement isn't a query selector we must check that the - // provided DOM node is child of its popper node - if (!data.instance.popper.contains(arrowElement)) { - console.warn('WARNING: `arrow.element` must be child of its popper element!'); - return data; - } - } - - var placement = data.placement.split('-')[0]; - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var isVertical = ['left', 'right'].indexOf(placement) !== -1; - - var len = isVertical ? 'height' : 'width'; - var sideCapitalized = isVertical ? 'Top' : 'Left'; - var side = sideCapitalized.toLowerCase(); - var altSide = isVertical ? 'left' : 'top'; - var opSide = isVertical ? 'bottom' : 'right'; - var arrowElementSize = getOuterSizes(arrowElement)[len]; - - // - // extends keepTogether behavior making sure the popper and its - // reference have enough pixels in conjunction - // - - // top/left side - if (reference[opSide] - arrowElementSize < popper[side]) { - data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); - } - // bottom/right side - if (reference[side] + arrowElementSize > popper[opSide]) { - data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; - } - data.offsets.popper = getClientRect(data.offsets.popper); - - // compute center of the popper - var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; - - // Compute the sideValue using the updated popper offsets - // take popper margin in account because we don't have this info available - var css = getStyleComputedProperty(data.instance.popper); - var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); - var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); - var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; - - // prevent arrowElement from being placed not contiguously to its popper - sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); - - data.arrowElement = arrowElement; - data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); - - return data; - } - - /** - * Get the opposite placement variation of the given one - * @method - * @memberof Popper.Utils - * @argument {String} placement variation - * @returns {String} flipped placement variation - */ - function getOppositeVariation(variation) { - if (variation === 'end') { - return 'start'; - } else if (variation === 'start') { - return 'end'; - } - return variation; - } - - /** - * List of accepted placements to use as values of the `placement` option.
- * Valid placements are: - * - `auto` - * - `top` - * - `right` - * - `bottom` - * - `left` - * - * Each placement can have a variation from this list: - * - `-start` - * - `-end` - * - * Variations are interpreted easily if you think of them as the left to right - * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` - * is right.
- * Vertically (`left` and `right`), `start` is top and `end` is bottom. - * - * Some valid examples are: - * - `top-end` (on top of reference, right aligned) - * - `right-start` (on right of reference, top aligned) - * - `bottom` (on bottom, centered) - * - `auto-end` (on the side with more space available, alignment depends by placement) - * - * @static - * @type {Array} - * @enum {String} - * @readonly - * @method placements - * @memberof Popper - */ - var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; - - // Get rid of `auto` `auto-start` and `auto-end` - var validPlacements = placements.slice(3); - - /** - * Given an initial placement, returns all the subsequent placements - * clockwise (or counter-clockwise). - * - * @method - * @memberof Popper.Utils - * @argument {String} placement - A valid placement (it accepts variations) - * @argument {Boolean} counter - Set to true to walk the placements counterclockwise - * @returns {Array} placements including their variations - */ - function clockwise(placement) { - var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - var index = validPlacements.indexOf(placement); - var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); - return counter ? arr.reverse() : arr; - } - - var BEHAVIORS = { - FLIP: 'flip', - CLOCKWISE: 'clockwise', - COUNTERCLOCKWISE: 'counterclockwise' - }; - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function flip(data, options) { - // if `inner` modifier is enabled, we can't use the `flip` modifier - if (isModifierEnabled(data.instance.modifiers, 'inner')) { - return data; - } - - if (data.flipped && data.placement === data.originalPlacement) { - // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides - return data; - } - - var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); - - var placement = data.placement.split('-')[0]; - var placementOpposite = getOppositePlacement(placement); - var variation = data.placement.split('-')[1] || ''; - - var flipOrder = []; - - switch (options.behavior) { - case BEHAVIORS.FLIP: - flipOrder = [placement, placementOpposite]; - break; - case BEHAVIORS.CLOCKWISE: - flipOrder = clockwise(placement); - break; - case BEHAVIORS.COUNTERCLOCKWISE: - flipOrder = clockwise(placement, true); - break; - default: - flipOrder = options.behavior; - } - - flipOrder.forEach(function (step, index) { - if (placement !== step || flipOrder.length === index + 1) { - return data; - } - - placement = data.placement.split('-')[0]; - placementOpposite = getOppositePlacement(placement); - - var popperOffsets = data.offsets.popper; - var refOffsets = data.offsets.reference; - - // using floor because the reference offsets may contain decimals we are not going to consider here - var floor = Math.floor; - var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); - - var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); - var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); - var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); - var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); - - var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; - - // flip the variation if required - var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; - - // flips variation if reference element overflows boundaries - var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); - - // flips variation if popper content overflows boundaries - var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); - - var flippedVariation = flippedVariationByRef || flippedVariationByContent; - - if (overlapsRef || overflowsBoundaries || flippedVariation) { - // this boolean to detect any flip loop - data.flipped = true; - - if (overlapsRef || overflowsBoundaries) { - placement = flipOrder[index + 1]; - } - - if (flippedVariation) { - variation = getOppositeVariation(variation); - } - - data.placement = placement + (variation ? '-' + variation : ''); - - // this object contains `position`, we want to preserve it along with - // any additional property we may add in the future - data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); - - data = runModifiers(data.instance.modifiers, data, 'flip'); - } - }); - return data; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function keepTogether(data) { - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var placement = data.placement.split('-')[0]; - var floor = Math.floor; - var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; - var side = isVertical ? 'right' : 'bottom'; - var opSide = isVertical ? 'left' : 'top'; - var measurement = isVertical ? 'width' : 'height'; - - if (popper[side] < floor(reference[opSide])) { - data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; - } - if (popper[opSide] > floor(reference[side])) { - data.offsets.popper[opSide] = floor(reference[side]); - } - - return data; - } - - /** - * Converts a string containing value + unit into a px value number - * @function - * @memberof {modifiers~offset} - * @private - * @argument {String} str - Value + unit string - * @argument {String} measurement - `height` or `width` - * @argument {Object} popperOffsets - * @argument {Object} referenceOffsets - * @returns {Number|String} - * Value in pixels, or original string if no values were extracted - */ - function toValue(str, measurement, popperOffsets, referenceOffsets) { - // separate value from unit - var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); - var value = +split[1]; - var unit = split[2]; - - // If it's not a number it's an operator, I guess - if (!value) { - return str; - } - - if (unit.indexOf('%') === 0) { - var element = void 0; - switch (unit) { - case '%p': - element = popperOffsets; - break; - case '%': - case '%r': - default: - element = referenceOffsets; - } - - var rect = getClientRect(element); - return rect[measurement] / 100 * value; - } else if (unit === 'vh' || unit === 'vw') { - // if is a vh or vw, we calculate the size based on the viewport - var size = void 0; - if (unit === 'vh') { - size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); - } else { - size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); - } - return size / 100 * value; - } else { - // if is an explicit pixel unit, we get rid of the unit and keep the value - // if is an implicit unit, it's px, and we return just the value - return value; - } - } - - /** - * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. - * @function - * @memberof {modifiers~offset} - * @private - * @argument {String} offset - * @argument {Object} popperOffsets - * @argument {Object} referenceOffsets - * @argument {String} basePlacement - * @returns {Array} a two cells array with x and y offsets in numbers - */ - function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { - var offsets = [0, 0]; - - // Use height if placement is left or right and index is 0 otherwise use width - // in this way the first offset will use an axis and the second one - // will use the other one - var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; - - // Split the offset string to obtain a list of values and operands - // The regex addresses values with the plus or minus sign in front (+10, -20, etc) - var fragments = offset.split(/(\+|\-)/).map(function (frag) { - return frag.trim(); - }); - - // Detect if the offset string contains a pair of values or a single one - // they could be separated by comma or space - var divider = fragments.indexOf(find(fragments, function (frag) { - return frag.search(/,|\s/) !== -1; - })); - - if (fragments[divider] && fragments[divider].indexOf(',') === -1) { - console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); - } - - // If divider is found, we divide the list of values and operands to divide - // them by ofset X and Y. - var splitRegex = /\s*,\s*|\s+/; - var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; - - // Convert the values with units to absolute pixels to allow our computations - ops = ops.map(function (op, index) { - // Most of the units rely on the orientation of the popper - var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; - var mergeWithPrevious = false; - return op - // This aggregates any `+` or `-` sign that aren't considered operators - // e.g.: 10 + +5 => [10, +, +5] - .reduce(function (a, b) { - if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { - a[a.length - 1] = b; - mergeWithPrevious = true; - return a; - } else if (mergeWithPrevious) { - a[a.length - 1] += b; - mergeWithPrevious = false; - return a; - } else { - return a.concat(b); - } - }, []) - // Here we convert the string values into number values (in px) - .map(function (str) { - return toValue(str, measurement, popperOffsets, referenceOffsets); - }); - }); - - // Loop trough the offsets arrays and execute the operations - ops.forEach(function (op, index) { - op.forEach(function (frag, index2) { - if (isNumeric(frag)) { - offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); - } - }); - }); - return offsets; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @argument {Number|String} options.offset=0 - * The offset value as described in the modifier description - * @returns {Object} The data object, properly modified - */ - function offset(data, _ref) { - var offset = _ref.offset; - var placement = data.placement, - _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var basePlacement = placement.split('-')[0]; - - var offsets = void 0; - if (isNumeric(+offset)) { - offsets = [+offset, 0]; - } else { - offsets = parseOffset(offset, popper, reference, basePlacement); - } - - if (basePlacement === 'left') { - popper.top += offsets[0]; - popper.left -= offsets[1]; - } else if (basePlacement === 'right') { - popper.top += offsets[0]; - popper.left += offsets[1]; - } else if (basePlacement === 'top') { - popper.left += offsets[0]; - popper.top -= offsets[1]; - } else if (basePlacement === 'bottom') { - popper.left += offsets[0]; - popper.top += offsets[1]; - } - - data.popper = popper; - return data; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function preventOverflow(data, options) { - var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); - - // If offsetParent is the reference element, we really want to - // go one step up and use the next offsetParent as reference to - // avoid to make this modifier completely useless and look like broken - if (data.instance.reference === boundariesElement) { - boundariesElement = getOffsetParent(boundariesElement); - } - - // NOTE: DOM access here - // resets the popper's position so that the document size can be calculated excluding - // the size of the popper element itself - var transformProp = getSupportedPropertyName('transform'); - var popperStyles = data.instance.popper.style; // assignment to help minification - var top = popperStyles.top, - left = popperStyles.left, - transform = popperStyles[transformProp]; - - popperStyles.top = ''; - popperStyles.left = ''; - popperStyles[transformProp] = ''; - - var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); - - // NOTE: DOM access here - // restores the original style properties after the offsets have been computed - popperStyles.top = top; - popperStyles.left = left; - popperStyles[transformProp] = transform; - - options.boundaries = boundaries; - - var order = options.priority; - var popper = data.offsets.popper; - - var check = { - primary: function primary(placement) { - var value = popper[placement]; - if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { - value = Math.max(popper[placement], boundaries[placement]); - } - return defineProperty({}, placement, value); - }, - secondary: function secondary(placement) { - var mainSide = placement === 'right' ? 'left' : 'top'; - var value = popper[mainSide]; - if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { - value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); - } - return defineProperty({}, mainSide, value); - } - }; - - order.forEach(function (placement) { - var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; - popper = _extends$1({}, popper, check[side](placement)); - }); - - data.offsets.popper = popper; - - return data; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function shift(data) { - var placement = data.placement; - var basePlacement = placement.split('-')[0]; - var shiftvariation = placement.split('-')[1]; - - // if shift shiftvariation is specified, run the modifier - if (shiftvariation) { - var _data$offsets = data.offsets, - reference = _data$offsets.reference, - popper = _data$offsets.popper; - - var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; - var side = isVertical ? 'left' : 'top'; - var measurement = isVertical ? 'width' : 'height'; - - var shiftOffsets = { - start: defineProperty({}, side, reference[side]), - end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) - }; - - data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]); - } - - return data; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by update method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function hide(data) { - if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { - return data; - } - - var refRect = data.offsets.reference; - var bound = find(data.instance.modifiers, function (modifier) { - return modifier.name === 'preventOverflow'; - }).boundaries; - - if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { - // Avoid unnecessary DOM access if visibility hasn't changed - if (data.hide === true) { - return data; - } - - data.hide = true; - data.attributes['x-out-of-boundaries'] = ''; - } else { - // Avoid unnecessary DOM access if visibility hasn't changed - if (data.hide === false) { - return data; - } - - data.hide = false; - data.attributes['x-out-of-boundaries'] = false; - } - - return data; - } - - /** - * @function - * @memberof Modifiers - * @argument {Object} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {Object} The data object, properly modified - */ - function inner(data) { - var placement = data.placement; - var basePlacement = placement.split('-')[0]; - var _data$offsets = data.offsets, - popper = _data$offsets.popper, - reference = _data$offsets.reference; - - var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; - - var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; - - popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); - - data.placement = getOppositePlacement(placement); - data.offsets.popper = getClientRect(popper); - - return data; - } - - /** - * Modifier function, each modifier can have a function of this type assigned - * to its `fn` property.
- * These functions will be called on each update, this means that you must - * make sure they are performant enough to avoid performance bottlenecks. - * - * @function ModifierFn - * @argument {dataObject} data - The data object generated by `update` method - * @argument {Object} options - Modifiers configuration and options - * @returns {dataObject} The data object, properly modified - */ - - /** - * Modifiers are plugins used to alter the behavior of your poppers.
- * Popper.js uses a set of 9 modifiers to provide all the basic functionalities - * needed by the library. - * - * Usually you don't want to override the `order`, `fn` and `onLoad` props. - * All the other properties are configurations that could be tweaked. - * @namespace modifiers - */ - var modifiers = { - /** - * Modifier used to shift the popper on the start or end of its reference - * element.
- * It will read the variation of the `placement` property.
- * It can be one either `-end` or `-start`. - * @memberof modifiers - * @inner - */ - shift: { - /** @prop {number} order=100 - Index used to define the order of execution */ - order: 100, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: shift - }, - - /** - * The `offset` modifier can shift your popper on both its axis. - * - * It accepts the following units: - * - `px` or unit-less, interpreted as pixels - * - `%` or `%r`, percentage relative to the length of the reference element - * - `%p`, percentage relative to the length of the popper element - * - `vw`, CSS viewport width unit - * - `vh`, CSS viewport height unit - * - * For length is intended the main axis relative to the placement of the popper.
- * This means that if the placement is `top` or `bottom`, the length will be the - * `width`. In case of `left` or `right`, it will be the `height`. - * - * You can provide a single value (as `Number` or `String`), or a pair of values - * as `String` divided by a comma or one (or more) white spaces.
- * The latter is a deprecated method because it leads to confusion and will be - * removed in v2.
- * Additionally, it accepts additions and subtractions between different units. - * Note that multiplications and divisions aren't supported. - * - * Valid examples are: - * ``` - * 10 - * '10%' - * '10, 10' - * '10%, 10' - * '10 + 10%' - * '10 - 5vh + 3%' - * '-10px + 5vh, 5px - 6%' - * ``` - * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap - * > with their reference element, unfortunately, you will have to disable the `flip` modifier. - * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). - * - * @memberof modifiers - * @inner - */ - offset: { - /** @prop {number} order=200 - Index used to define the order of execution */ - order: 200, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: offset, - /** @prop {Number|String} offset=0 - * The offset value as described in the modifier description - */ - offset: 0 - }, - - /** - * Modifier used to prevent the popper from being positioned outside the boundary. - * - * A scenario exists where the reference itself is not within the boundaries.
- * We can say it has "escaped the boundaries" — or just "escaped".
- * In this case we need to decide whether the popper should either: - * - * - detach from the reference and remain "trapped" in the boundaries, or - * - if it should ignore the boundary and "escape with its reference" - * - * When `escapeWithReference` is set to`true` and reference is completely - * outside its boundaries, the popper will overflow (or completely leave) - * the boundaries in order to remain attached to the edge of the reference. - * - * @memberof modifiers - * @inner - */ - preventOverflow: { - /** @prop {number} order=300 - Index used to define the order of execution */ - order: 300, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: preventOverflow, - /** - * @prop {Array} [priority=['left','right','top','bottom']] - * Popper will try to prevent overflow following these priorities by default, - * then, it could overflow on the left and on top of the `boundariesElement` - */ - priority: ['left', 'right', 'top', 'bottom'], - /** - * @prop {number} padding=5 - * Amount of pixel used to define a minimum distance between the boundaries - * and the popper. This makes sure the popper always has a little padding - * between the edges of its container - */ - padding: 5, - /** - * @prop {String|HTMLElement} boundariesElement='scrollParent' - * Boundaries used by the modifier. Can be `scrollParent`, `window`, - * `viewport` or any DOM element. - */ - boundariesElement: 'scrollParent' - }, - - /** - * Modifier used to make sure the reference and its popper stay near each other - * without leaving any gap between the two. Especially useful when the arrow is - * enabled and you want to ensure that it points to its reference element. - * It cares only about the first axis. You can still have poppers with margin - * between the popper and its reference element. - * @memberof modifiers - * @inner - */ - keepTogether: { - /** @prop {number} order=400 - Index used to define the order of execution */ - order: 400, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: keepTogether - }, - - /** - * This modifier is used to move the `arrowElement` of the popper to make - * sure it is positioned between the reference element and its popper element. - * It will read the outer size of the `arrowElement` node to detect how many - * pixels of conjunction are needed. - * - * It has no effect if no `arrowElement` is provided. - * @memberof modifiers - * @inner - */ - arrow: { - /** @prop {number} order=500 - Index used to define the order of execution */ - order: 500, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: arrow, - /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ - element: '[x-arrow]' - }, - - /** - * Modifier used to flip the popper's placement when it starts to overlap its - * reference element. - * - * Requires the `preventOverflow` modifier before it in order to work. - * - * **NOTE:** this modifier will interrupt the current update cycle and will - * restart it if it detects the need to flip the placement. - * @memberof modifiers - * @inner - */ - flip: { - /** @prop {number} order=600 - Index used to define the order of execution */ - order: 600, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: flip, - /** - * @prop {String|Array} behavior='flip' - * The behavior used to change the popper's placement. It can be one of - * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid - * placements (with optional variations) - */ - behavior: 'flip', - /** - * @prop {number} padding=5 - * The popper will flip if it hits the edges of the `boundariesElement` - */ - padding: 5, - /** - * @prop {String|HTMLElement} boundariesElement='viewport' - * The element which will define the boundaries of the popper position. - * The popper will never be placed outside of the defined boundaries - * (except if `keepTogether` is enabled) - */ - boundariesElement: 'viewport', - /** - * @prop {Boolean} flipVariations=false - * The popper will switch placement variation between `-start` and `-end` when - * the reference element overlaps its boundaries. - * - * The original placement should have a set variation. - */ - flipVariations: false, - /** - * @prop {Boolean} flipVariationsByContent=false - * The popper will switch placement variation between `-start` and `-end` when - * the popper element overlaps its reference boundaries. - * - * The original placement should have a set variation. - */ - flipVariationsByContent: false - }, - - /** - * Modifier used to make the popper flow toward the inner of the reference element. - * By default, when this modifier is disabled, the popper will be placed outside - * the reference element. - * @memberof modifiers - * @inner - */ - inner: { - /** @prop {number} order=700 - Index used to define the order of execution */ - order: 700, - /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ - enabled: false, - /** @prop {ModifierFn} */ - fn: inner - }, - - /** - * Modifier used to hide the popper when its reference element is outside of the - * popper boundaries. It will set a `x-out-of-boundaries` attribute which can - * be used to hide with a CSS selector the popper when its reference is - * out of boundaries. - * - * Requires the `preventOverflow` modifier before it in order to work. - * @memberof modifiers - * @inner - */ - hide: { - /** @prop {number} order=800 - Index used to define the order of execution */ - order: 800, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: hide - }, - - /** - * Computes the style that will be applied to the popper element to gets - * properly positioned. - * - * Note that this modifier will not touch the DOM, it just prepares the styles - * so that `applyStyle` modifier can apply it. This separation is useful - * in case you need to replace `applyStyle` with a custom implementation. - * - * This modifier has `850` as `order` value to maintain backward compatibility - * with previous versions of Popper.js. Expect the modifiers ordering method - * to change in future major versions of the library. - * - * @memberof modifiers - * @inner - */ - computeStyle: { - /** @prop {number} order=850 - Index used to define the order of execution */ - order: 850, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: computeStyle, - /** - * @prop {Boolean} gpuAcceleration=true - * If true, it uses the CSS 3D transformation to position the popper. - * Otherwise, it will use the `top` and `left` properties - */ - gpuAcceleration: true, - /** - * @prop {string} [x='bottom'] - * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. - * Change this if your popper should grow in a direction different from `bottom` - */ - x: 'bottom', - /** - * @prop {string} [x='left'] - * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. - * Change this if your popper should grow in a direction different from `right` - */ - y: 'right' - }, - - /** - * Applies the computed styles to the popper element. - * - * All the DOM manipulations are limited to this modifier. This is useful in case - * you want to integrate Popper.js inside a framework or view library and you - * want to delegate all the DOM manipulations to it. - * - * Note that if you disable this modifier, you must make sure the popper element - * has its position set to `absolute` before Popper.js can do its work! - * - * Just disable this modifier and define your own to achieve the desired effect. - * - * @memberof modifiers - * @inner - */ - applyStyle: { - /** @prop {number} order=900 - Index used to define the order of execution */ - order: 900, - /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ - enabled: true, - /** @prop {ModifierFn} */ - fn: applyStyle, - /** @prop {Function} */ - onLoad: applyStyleOnLoad, - /** - * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier - * @prop {Boolean} gpuAcceleration=true - * If true, it uses the CSS 3D transformation to position the popper. - * Otherwise, it will use the `top` and `left` properties - */ - gpuAcceleration: undefined - } - }; - - /** - * The `dataObject` is an object containing all the information used by Popper.js. - * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. - * @name dataObject - * @property {Object} data.instance The Popper.js instance - * @property {String} data.placement Placement applied to popper - * @property {String} data.originalPlacement Placement originally defined on init - * @property {Boolean} data.flipped True if popper has been flipped by flip modifier - * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper - * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier - * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) - * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) - * @property {Object} data.boundaries Offsets of the popper boundaries - * @property {Object} data.offsets The measurements of popper, reference and arrow elements - * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values - * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values - * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 - */ - - /** - * Default options provided to Popper.js constructor.
- * These can be overridden using the `options` argument of Popper.js.
- * To override an option, simply pass an object with the same - * structure of the `options` object, as the 3rd argument. For example: - * ``` - * new Popper(ref, pop, { - * modifiers: { - * preventOverflow: { enabled: false } - * } - * }) - * ``` - * @type {Object} - * @static - * @memberof Popper - */ - var Defaults = { - /** - * Popper's placement. - * @prop {Popper.placements} placement='bottom' - */ - placement: 'bottom', - - /** - * Set this to true if you want popper to position it self in 'fixed' mode - * @prop {Boolean} positionFixed=false - */ - positionFixed: false, - - /** - * Whether events (resize, scroll) are initially enabled. - * @prop {Boolean} eventsEnabled=true - */ - eventsEnabled: true, - - /** - * Set to true if you want to automatically remove the popper when - * you call the `destroy` method. - * @prop {Boolean} removeOnDestroy=false - */ - removeOnDestroy: false, - - /** - * Callback called when the popper is created.
- * By default, it is set to no-op.
- * Access Popper.js instance with `data.instance`. - * @prop {onCreate} - */ - onCreate: function onCreate() {}, - - /** - * Callback called when the popper is updated. This callback is not called - * on the initialization/creation of the popper, but only on subsequent - * updates.
- * By default, it is set to no-op.
- * Access Popper.js instance with `data.instance`. - * @prop {onUpdate} - */ - onUpdate: function onUpdate() {}, - - /** - * List of modifiers used to modify the offsets before they are applied to the popper. - * They provide most of the functionalities of Popper.js. - * @prop {modifiers} - */ - modifiers: modifiers - }; - - /** - * @callback onCreate - * @param {dataObject} data - */ - - /** - * @callback onUpdate - * @param {dataObject} data - */ - - // Utils - // Methods - var Popper = function () { - /** - * Creates a new Popper.js instance. - * @class Popper - * @param {Element|referenceObject} reference - The reference element used to position the popper - * @param {Element} popper - The HTML / XML element used as the popper - * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) - * @return {Object} instance - The generated Popper.js instance - */ - function Popper(reference, popper) { - var _this = this; - - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - classCallCheck(this, Popper); - - this.scheduleUpdate = function () { - return requestAnimationFrame(_this.update); - }; - - // make update() debounced, so that it only runs at most once-per-tick - this.update = debounce(this.update.bind(this)); - - // with {} we create a new object with the options inside it - this.options = _extends$1({}, Popper.Defaults, options); - - // init state - this.state = { - isDestroyed: false, - isCreated: false, - scrollParents: [] - }; - - // get reference and popper elements (allow jQuery wrappers) - this.reference = reference && reference.jquery ? reference[0] : reference; - this.popper = popper && popper.jquery ? popper[0] : popper; - - // Deep merge modifiers options - this.options.modifiers = {}; - Object.keys(_extends$1({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { - _this.options.modifiers[name] = _extends$1({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); - }); - - // Refactoring modifiers' list (Object => Array) - this.modifiers = Object.keys(this.options.modifiers).map(function (name) { - return _extends$1({ - name: name - }, _this.options.modifiers[name]); - }) - // sort the modifiers by order - .sort(function (a, b) { - return a.order - b.order; - }); - - // modifiers have the ability to execute arbitrary code when Popper.js get inited - // such code is executed in the same order of its modifier - // they could add new properties to their options configuration - // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! - this.modifiers.forEach(function (modifierOptions) { - if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { - modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); - } - }); - - // fire the first update to position the popper in the right place - this.update(); - - var eventsEnabled = this.options.eventsEnabled; - if (eventsEnabled) { - // setup event listeners, they will take care of update the position in specific situations - this.enableEventListeners(); - } - - this.state.eventsEnabled = eventsEnabled; - } - - // We can't use class properties because they don't get listed in the - // class prototype and break stuff like Sinon stubs - - - createClass(Popper, [{ - key: 'update', - value: function update$$1() { - return update.call(this); - } - }, { - key: 'destroy', - value: function destroy$$1() { - return destroy.call(this); - } - }, { - key: 'enableEventListeners', - value: function enableEventListeners$$1() { - return enableEventListeners.call(this); - } - }, { - key: 'disableEventListeners', - value: function disableEventListeners$$1() { - return disableEventListeners.call(this); - } - - /** - * Schedules an update. It will run on the next UI update available. - * @method scheduleUpdate - * @memberof Popper - */ - - - /** - * Collection of utilities useful when writing custom modifiers. - * Starting from version 1.7, this method is available only if you - * include `popper-utils.js` before `popper.js`. - * - * **DEPRECATION**: This way to access PopperUtils is deprecated - * and will be removed in v2! Use the PopperUtils module directly instead. - * Due to the high instability of the methods contained in Utils, we can't - * guarantee them to follow semver. Use them at your own risk! - * @static - * @private - * @type {Object} - * @deprecated since version 1.8 - * @member Utils - * @memberof Popper - */ - - }]); - return Popper; - }(); - - /** - * The `referenceObject` is an object that provides an interface compatible with Popper.js - * and lets you use it as replacement of a real DOM node.
- * You can use this method to position a popper relatively to a set of coordinates - * in case you don't have a DOM node to use as reference. - * - * ``` - * new Popper(referenceObject, popperNode); - * ``` - * - * NB: This feature isn't supported in Internet Explorer 10. - * @name referenceObject - * @property {Function} data.getBoundingClientRect - * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. - * @property {number} data.clientWidth - * An ES6 getter that will return the width of the virtual reference element. - * @property {number} data.clientHeight - * An ES6 getter that will return the height of the virtual reference element. - */ - - - Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; - Popper.placements = placements; - Popper.Defaults = Defaults; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$4 = 'dropdown'; - var VERSION$4 = '4.6.0'; - var DATA_KEY$4 = 'bs.dropdown'; - var EVENT_KEY$4 = "." + DATA_KEY$4; - var DATA_API_KEY$4 = '.data-api'; - var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4]; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - - var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key - - var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key - - var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key - - var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key - - var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) - - var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); - var EVENT_HIDE$1 = "hide" + EVENT_KEY$4; - var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4; - var EVENT_SHOW$1 = "show" + EVENT_KEY$4; - var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4; - var EVENT_CLICK = "click" + EVENT_KEY$4; - var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4; - var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4; - var CLASS_NAME_DISABLED = 'disabled'; - var CLASS_NAME_SHOW$2 = 'show'; - var CLASS_NAME_DROPUP = 'dropup'; - var CLASS_NAME_DROPRIGHT = 'dropright'; - var CLASS_NAME_DROPLEFT = 'dropleft'; - var CLASS_NAME_MENURIGHT = 'dropdown-menu-right'; - var CLASS_NAME_POSITION_STATIC = 'position-static'; - var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]'; - var SELECTOR_FORM_CHILD = '.dropdown form'; - var SELECTOR_MENU = '.dropdown-menu'; - var SELECTOR_NAVBAR_NAV = '.navbar-nav'; - var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; - var PLACEMENT_TOP = 'top-start'; - var PLACEMENT_TOPEND = 'top-end'; - var PLACEMENT_BOTTOM = 'bottom-start'; - var PLACEMENT_BOTTOMEND = 'bottom-end'; - var PLACEMENT_RIGHT = 'right-start'; - var PLACEMENT_LEFT = 'left-start'; - var Default$2 = { - offset: 0, - flip: true, - boundary: 'scrollParent', - reference: 'toggle', - display: 'dynamic', - popperConfig: null - }; - var DefaultType$2 = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)', - reference: '(string|element)', - display: 'string', - popperConfig: '(null|object)' - }; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Dropdown = /*#__PURE__*/function () { - function Dropdown(element, config) { - this._element = element; - this._popper = null; - this._config = this._getConfig(config); - this._menu = this._getMenuElement(); - this._inNavbar = this._detectNavbar(); - - this._addEventListeners(); - } // Getters - - - var _proto = Dropdown.prototype; - - // Public - _proto.toggle = function toggle() { - if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) { - return; - } - - var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2); - - Dropdown._clearMenus(); - - if (isActive) { - return; - } - - this.show(true); - }; - - _proto.show = function show(usePopper) { - if (usePopper === void 0) { - usePopper = false; - } - - if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) { - return; - } - - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget); - - var parent = Dropdown._getParentFromElement(this._element); - - $__default['default'](parent).trigger(showEvent); - - if (showEvent.isDefaultPrevented()) { - return; - } // Totally disable Popper for Dropdowns in Navbar - - - if (!this._inNavbar && usePopper) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); - } - - var referenceElement = this._element; - - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (Util.isElement(this._config.reference)) { - referenceElement = this._config.reference; // Check if it's jQuery element - - if (typeof this._config.reference.jquery !== 'undefined') { - referenceElement = this._config.reference[0]; - } - } // If boundary is not `scrollParent`, then set position to `static` - // to allow the menu to "escape" the scroll parent's boundaries - // https://github.com/twbs/bootstrap/issues/24251 - - - if (this._config.boundary !== 'scrollParent') { - $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC); - } - - this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { - $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop); - } - - this._element.focus(); - - this._element.setAttribute('aria-expanded', true); - - $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2); - $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget)); - }; - - _proto.hide = function hide() { - if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) { - return; - } - - var relatedTarget = { - relatedTarget: this._element - }; - var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget); - - var parent = Dropdown._getParentFromElement(this._element); - - $__default['default'](parent).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - return; - } - - if (this._popper) { - this._popper.destroy(); - } - - $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2); - $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget)); - }; - - _proto.dispose = function dispose() { - $__default['default'].removeData(this._element, DATA_KEY$4); - $__default['default'](this._element).off(EVENT_KEY$4); - this._element = null; - this._menu = null; - - if (this._popper !== null) { - this._popper.destroy(); - - this._popper = null; - } - }; - - _proto.update = function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - } // Private - ; - - _proto._addEventListeners = function _addEventListeners() { - var _this = this; - - $__default['default'](this._element).on(EVENT_CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); - - _this.toggle(); - }); - }; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config); - Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - return config; - }; - - _proto._getMenuElement = function _getMenuElement() { - if (!this._menu) { - var parent = Dropdown._getParentFromElement(this._element); - - if (parent) { - this._menu = parent.querySelector(SELECTOR_MENU); - } - } - - return this._menu; - }; - - _proto._getPlacement = function _getPlacement() { - var $parentDropdown = $__default['default'](this._element.parentNode); - var placement = PLACEMENT_BOTTOM; // Handle dropup - - if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { - placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { - placement = PLACEMENT_RIGHT; - } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { - placement = PLACEMENT_LEFT; - } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) { - placement = PLACEMENT_BOTTOMEND; - } - - return placement; - }; - - _proto._detectNavbar = function _detectNavbar() { - return $__default['default'](this._element).closest('.navbar').length > 0; - }; - - _proto._getOffset = function _getOffset() { - var _this2 = this; - - var offset = {}; - - if (typeof this._config.offset === 'function') { - offset.fn = function (data) { - data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); - return data; - }; - } else { - offset.offset = this._config.offset; - } - - return offset; - }; - - _proto._getPopperConfig = function _getPopperConfig() { - var popperConfig = { - placement: this._getPlacement(), - modifiers: { - offset: this._getOffset(), - flip: { - enabled: this._config.flip - }, - preventOverflow: { - boundariesElement: this._config.boundary - } - } - }; // Disable Popper if we have a static display - - if (this._config.display === 'static') { - popperConfig.modifiers.applyStyle = { - enabled: false - }; - } - - return _extends({}, popperConfig, this._config.popperConfig); - } // Static - ; - - Dropdown._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $__default['default'](this).data(DATA_KEY$4); - - var _config = typeof config === 'object' ? config : null; - - if (!data) { - data = new Dropdown(this, _config); - $__default['default'](this).data(DATA_KEY$4, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - Dropdown._clearMenus = function _clearMenus(event) { - if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { - return; - } - - var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2)); - - for (var i = 0, len = toggles.length; i < len; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]); - - var context = $__default['default'](toggles[i]).data(DATA_KEY$4); - var relatedTarget = { - relatedTarget: toggles[i] - }; - - if (event && event.type === 'click') { - relatedTarget.clickEvent = event; - } - - if (!context) { - continue; - } - - var dropdownMenu = context._menu; - - if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) { - continue; - } - - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) { - continue; - } - - var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget); - $__default['default'](parent).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop); - } - - toggles[i].setAttribute('aria-expanded', 'false'); - - if (context._popper) { - context._popper.destroy(); - } - - $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2); - $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget)); - } - }; - - Dropdown._getParentFromElement = function _getParentFromElement(element) { - var parent; - var selector = Util.getSelectorFromElement(element); - - if (selector) { - parent = document.querySelector(selector); - } - - return parent || element.parentNode; - } // eslint-disable-next-line complexity - ; - - Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - 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 || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { - return; - } - - if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) { - return; - } - - var parent = Dropdown._getParentFromElement(this); - - var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2); - - if (!isActive && event.which === ESCAPE_KEYCODE) { - return; - } - - event.preventDefault(); - event.stopPropagation(); - - if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) { - if (event.which === ESCAPE_KEYCODE) { - $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus'); - } - - $__default['default'](this).trigger('click'); - return; - } - - var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) { - return $__default['default'](item).is(':visible'); - }); - - if (items.length === 0) { - return; - } - - var index = items.indexOf(event.target); - - if (event.which === ARROW_UP_KEYCODE && index > 0) { - // Up - index--; - } - - if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { - // Down - index++; - } - - if (index < 0) { - index = 0; - } - - items[index].focus(); - }; - - _createClass(Dropdown, null, [{ - key: "VERSION", - get: function get() { - return VERSION$4; - } - }, { - key: "Default", - get: function get() { - return Default$2; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$2; - } - }]); - - return Dropdown; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) { - event.preventDefault(); - event.stopPropagation(); - - Dropdown._jQueryInterface.call($__default['default'](this), 'toggle'); - }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) { - e.stopPropagation(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface; - $__default['default'].fn[NAME$4].Constructor = Dropdown; - - $__default['default'].fn[NAME$4].noConflict = function () { - $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4; - return Dropdown._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$5 = 'modal'; - var VERSION$5 = '4.6.0'; - var DATA_KEY$5 = 'bs.modal'; - var EVENT_KEY$5 = "." + DATA_KEY$5; - var DATA_API_KEY$5 = '.data-api'; - var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5]; - var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key - - var Default$3 = { - backdrop: true, - keyboard: true, - focus: true, - show: true - }; - var DefaultType$3 = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean', - show: 'boolean' - }; - var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; - var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; - var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; - var EVENT_SHOW$2 = "show" + EVENT_KEY$5; - var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; - var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; - var EVENT_RESIZE = "resize" + EVENT_KEY$5; - var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5; - var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; - var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; - var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5; - var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'; - var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; - var CLASS_NAME_BACKDROP = 'modal-backdrop'; - var CLASS_NAME_OPEN = 'modal-open'; - var CLASS_NAME_FADE$1 = 'fade'; - var CLASS_NAME_SHOW$3 = 'show'; - var CLASS_NAME_STATIC = 'modal-static'; - var SELECTOR_DIALOG = '.modal-dialog'; - var SELECTOR_MODAL_BODY = '.modal-body'; - var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]'; - var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]'; - var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; - var SELECTOR_STICKY_CONTENT = '.sticky-top'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Modal = /*#__PURE__*/function () { - function Modal(element, config) { - this._config = this._getConfig(config); - this._element = element; - this._dialog = element.querySelector(SELECTOR_DIALOG); - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._isTransitioning = false; - this._scrollbarWidth = 0; - } // Getters - - - var _proto = Modal.prototype; - - // Public - _proto.toggle = function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - }; - - _proto.show = function show(relatedTarget) { - var _this = this; - - if (this._isShown || this._isTransitioning) { - return; - } - - if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) { - this._isTransitioning = true; - } - - var showEvent = $__default['default'].Event(EVENT_SHOW$2, { - relatedTarget: relatedTarget - }); - $__default['default'](this._element).trigger(showEvent); - - if (this._isShown || showEvent.isDefaultPrevented()) { - return; - } - - this._isShown = true; - - this._checkScrollbar(); - - this._setScrollbar(); - - this._adjustDialog(); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { - return _this.hide(event); - }); - $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () { - $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) { - if ($__default['default'](event.target).is(_this._element)) { - _this._ignoreBackdropClick = true; - } - }); - }); - - this._showBackdrop(function () { - return _this._showElement(relatedTarget); - }); - }; - - _proto.hide = function hide(event) { - var _this2 = this; - - if (event) { - event.preventDefault(); - } - - if (!this._isShown || this._isTransitioning) { - return; - } - - var hideEvent = $__default['default'].Event(EVENT_HIDE$2); - $__default['default'](this._element).trigger(hideEvent); - - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return; - } - - this._isShown = false; - var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1); - - if (transition) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - $__default['default'](document).off(EVENT_FOCUSIN); - $__default['default'](this._element).removeClass(CLASS_NAME_SHOW$3); - $__default['default'](this._element).off(EVENT_CLICK_DISMISS); - $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS); - - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $__default['default'](this._element).one(Util.TRANSITION_END, function (event) { - return _this2._hideModal(event); - }).emulateTransitionEnd(transitionDuration); - } else { - this._hideModal(); - } - }; - - _proto.dispose = function dispose() { - [window, this._element, this._dialog].forEach(function (htmlElement) { - return $__default['default'](htmlElement).off(EVENT_KEY$5); - }); - /** - * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` - * Do not move `document` in `htmlElements` array - * It will remove `EVENT_CLICK_DATA_API` event that should remain - */ - - $__default['default'](document).off(EVENT_FOCUSIN); - $__default['default'].removeData(this._element, DATA_KEY$5); - this._config = null; - this._element = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._isTransitioning = null; - this._scrollbarWidth = null; - }; - - _proto.handleUpdate = function handleUpdate() { - this._adjustDialog(); - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$3, config); - Util.typeCheckConfig(NAME$5, config, DefaultType$3); - return config; - }; - - _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this3 = this; - - var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED); - $__default['default'](this._element).trigger(hideEventPrevented); - - if (hideEventPrevented.isDefaultPrevented()) { - return; - } - - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; - } - - this._element.classList.add(CLASS_NAME_STATIC); - - var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog); - $__default['default'](this._element).off(Util.TRANSITION_END); - $__default['default'](this._element).one(Util.TRANSITION_END, function () { - _this3._element.classList.remove(CLASS_NAME_STATIC); - - if (!isModalOverflowing) { - $__default['default'](_this3._element).one(Util.TRANSITION_END, function () { - _this3._element.style.overflowY = ''; - }).emulateTransitionEnd(_this3._element, modalTransitionDuration); - } - }).emulateTransitionEnd(modalTransitionDuration); - - this._element.focus(); - }; - - _proto._showElement = function _showElement(relatedTarget) { - var _this4 = this; - - var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1); - var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null; - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(this._element); - } - - this._element.style.display = 'block'; - - this._element.removeAttribute('aria-hidden'); - - this._element.setAttribute('aria-modal', true); - - this._element.setAttribute('role', 'dialog'); - - if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) { - modalBody.scrollTop = 0; - } else { - this._element.scrollTop = 0; - } - - if (transition) { - Util.reflow(this._element); - } - - $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3); - - if (this._config.focus) { - this._enforceFocus(); - } - - var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, { - relatedTarget: relatedTarget - }); - - var transitionComplete = function transitionComplete() { - if (_this4._config.focus) { - _this4._element.focus(); - } - - _this4._isTransitioning = false; - $__default['default'](_this4._element).trigger(shownEvent); - }; - - if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._dialog); - $__default['default'](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); - } else { - transitionComplete(); - } - }; - - _proto._enforceFocus = function _enforceFocus() { - var _this5 = this; - - $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop - .on(EVENT_FOCUSIN, function (event) { - if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) { - _this5._element.focus(); - } - }); - }; - - _proto._setEscapeEvent = function _setEscapeEvent() { - var _this6 = this; - - if (this._isShown) { - $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) { - if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) { - event.preventDefault(); - - _this6.hide(); - } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) { - _this6._triggerBackdropTransition(); - } - }); - } else if (!this._isShown) { - $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS); - } - }; - - _proto._setResizeEvent = function _setResizeEvent() { - var _this7 = this; - - if (this._isShown) { - $__default['default'](window).on(EVENT_RESIZE, function (event) { - return _this7.handleUpdate(event); - }); - } else { - $__default['default'](window).off(EVENT_RESIZE); - } - }; - - _proto._hideModal = function _hideModal() { - var _this8 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._isTransitioning = false; - - this._showBackdrop(function () { - $__default['default'](document.body).removeClass(CLASS_NAME_OPEN); - - _this8._resetAdjustments(); - - _this8._resetScrollbar(); - - $__default['default'](_this8._element).trigger(EVENT_HIDDEN$2); - }); - }; - - _proto._removeBackdrop = function _removeBackdrop() { - if (this._backdrop) { - $__default['default'](this._backdrop).remove(); - this._backdrop = null; - } - }; - - _proto._showBackdrop = function _showBackdrop(callback) { - var _this9 = this; - - var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : ''; - - if (this._isShown && this._config.backdrop) { - this._backdrop = document.createElement('div'); - this._backdrop.className = CLASS_NAME_BACKDROP; - - if (animate) { - this._backdrop.classList.add(animate); - } - - $__default['default'](this._backdrop).appendTo(document.body); - $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) { - if (_this9._ignoreBackdropClick) { - _this9._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this9._config.backdrop === 'static') { - _this9._triggerBackdropTransition(); - } else { - _this9.hide(); - } - }); - - if (animate) { - Util.reflow(this._backdrop); - } - - $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3); - - if (!callback) { - return; - } - - if (!animate) { - callback(); - return; - } - - var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); - $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); - } else if (!this._isShown && this._backdrop) { - $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3); - - var callbackRemove = function callbackRemove() { - _this9._removeBackdrop(); - - if (callback) { - callback(); - } - }; - - if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) { - var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); - - $__default['default'](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); - } else { - callbackRemove(); - } - } else if (callback) { - callback(); - } - } // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // todo (fat): these should probably be refactored out of modal.js - // ---------------------------------------------------------------------- - ; - - _proto._adjustDialog = function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = this._scrollbarWidth + "px"; - } - - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + "px"; - } - }; - - _proto._resetAdjustments = function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - }; - - _proto._checkScrollbar = function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - }; - - _proto._setScrollbar = function _setScrollbar() { - var _this10 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); - var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding - - $__default['default'](fixedContent).each(function (index, element) { - var actualPadding = element.style.paddingRight; - var calculatedPadding = $__default['default'](element).css('padding-right'); - $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px"); - }); // Adjust sticky content margin - - $__default['default'](stickyContent).each(function (index, element) { - var actualMargin = element.style.marginRight; - var calculatedMargin = $__default['default'](element).css('margin-right'); - $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px"); - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $__default['default'](document.body).css('padding-right'); - $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); - } - - $__default['default'](document.body).addClass(CLASS_NAME_OPEN); - }; - - _proto._resetScrollbar = function _resetScrollbar() { - // Restore fixed content padding - var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); - $__default['default'](fixedContent).each(function (index, element) { - var padding = $__default['default'](element).data('padding-right'); - $__default['default'](element).removeData('padding-right'); - element.style.paddingRight = padding ? padding : ''; - }); // Restore sticky content - - var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT)); - $__default['default'](elements).each(function (index, element) { - var margin = $__default['default'](element).data('margin-right'); - - if (typeof margin !== 'undefined') { - $__default['default'](element).css('margin-right', margin).removeData('margin-right'); - } - }); // Restore body padding - - var padding = $__default['default'](document.body).data('padding-right'); - $__default['default'](document.body).removeData('padding-right'); - document.body.style.paddingRight = padding ? padding : ''; - }; - - _proto._getScrollbarWidth = function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - } // Static - ; - - Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = $__default['default'](this).data(DATA_KEY$5); - - var _config = _extends({}, Default$3, $__default['default'](this).data(), typeof config === 'object' && config ? config : {}); - - if (!data) { - data = new Modal(this, _config); - $__default['default'](this).data(DATA_KEY$5, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); - } - }); - }; - - _createClass(Modal, null, [{ - key: "VERSION", - get: function get() { - return VERSION$5; - } - }, { - key: "Default", - get: function get() { - return Default$3; - } - }]); - - return Modal; - }(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - - $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) { - var _this11 = this; - - var target; - var selector = Util.getSelectorFromElement(this); - - if (selector) { - target = document.querySelector(selector); - } - - var config = $__default['default'](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data()); - - if (this.tagName === 'A' || this.tagName === 'AREA') { - event.preventDefault(); - } - - var $target = $__default['default'](target).one(EVENT_SHOW$2, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - // Only register focus restorer if modal will actually get shown - return; - } - - $target.one(EVENT_HIDDEN$2, function () { - if ($__default['default'](_this11).is(':visible')) { - _this11.focus(); - } - }); - }); - - Modal._jQueryInterface.call($__default['default'](target), config, this); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $__default['default'].fn[NAME$5] = Modal._jQueryInterface; - $__default['default'].fn[NAME$5].Constructor = Modal; - - $__default['default'].fn[NAME$5].noConflict = function () { - $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5; - return Modal._jQueryInterface; - }; - - /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.6.0): tools/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; - var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; - var DefaultWhitelist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] - }; - /** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi; - /** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - - function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - - if (allowedAttributeList.indexOf(attrName) !== -1) { - if (uriAttrs.indexOf(attrName) !== -1) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); - } - - return true; - } - - var regExp = allowedAttributeList.filter(function (attrRegex) { - return attrRegex instanceof RegExp; - }); // Check if a regular expression validates the attribute. - - for (var i = 0, len = regExp.length; i < len; i++) { - if (attrName.match(regExp[i])) { - return true; - } - } - - return false; - } - - function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { - if (unsafeHtml.length === 0) { - return unsafeHtml; - } - - if (sanitizeFn && typeof sanitizeFn === 'function') { - return sanitizeFn(unsafeHtml); - } - - var domParser = new window.DOMParser(); - var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - var whitelistKeys = Object.keys(whiteList); - var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); - - var _loop = function _loop(i, len) { - var el = elements[i]; - var elName = el.nodeName.toLowerCase(); - - if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { - el.parentNode.removeChild(el); - return "continue"; - } - - var attributeList = [].slice.call(el.attributes); - var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); - attributeList.forEach(function (attr) { - if (!allowedAttribute(attr, whitelistedAttributes)) { - el.removeAttribute(attr.nodeName); - } - }); - }; - - for (var i = 0, len = elements.length; i < len; i++) { - var _ret = _loop(i); - - if (_ret === "continue") continue; - } - - return createdDocument.body.innerHTML; - } - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$6 = 'tooltip'; - var VERSION$6 = '4.6.0'; - var DATA_KEY$6 = 'bs.tooltip'; - var EVENT_KEY$6 = "." + DATA_KEY$6; - var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6]; - var CLASS_PREFIX = 'bs-tooltip'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; - var DefaultType$4 = { - animation: 'boolean', - template: 'string', - title: '(string|element|function)', - trigger: 'string', - delay: '(number|object)', - html: 'boolean', - selector: '(string|boolean)', - placement: '(string|function)', - offset: '(number|string|function)', - container: '(string|element|boolean)', - fallbackPlacement: '(string|array)', - boundary: '(string|element)', - customClass: '(string|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - whiteList: 'object', - popperConfig: '(null|object)' - }; - var AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: 'right', - BOTTOM: 'bottom', - LEFT: 'left' - }; - var Default$4 = { - animation: true, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - offset: 0, - container: false, - fallbackPlacement: 'flip', - boundary: 'scrollParent', - customClass: '', - sanitize: true, - sanitizeFn: null, - whiteList: DefaultWhitelist, - popperConfig: null - }; - var HOVER_STATE_SHOW = 'show'; - var HOVER_STATE_OUT = 'out'; - var Event = { - HIDE: "hide" + EVENT_KEY$6, - HIDDEN: "hidden" + EVENT_KEY$6, - SHOW: "show" + EVENT_KEY$6, - SHOWN: "shown" + EVENT_KEY$6, - INSERTED: "inserted" + EVENT_KEY$6, - CLICK: "click" + EVENT_KEY$6, - FOCUSIN: "focusin" + EVENT_KEY$6, - FOCUSOUT: "focusout" + EVENT_KEY$6, - MOUSEENTER: "mouseenter" + EVENT_KEY$6, - MOUSELEAVE: "mouseleave" + EVENT_KEY$6 - }; - var CLASS_NAME_FADE$2 = 'fade'; - var CLASS_NAME_SHOW$4 = 'show'; - var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; - var SELECTOR_ARROW = '.arrow'; - var TRIGGER_HOVER = 'hover'; - var TRIGGER_FOCUS = 'focus'; - var TRIGGER_CLICK = 'click'; - var TRIGGER_MANUAL = 'manual'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Tooltip = /*#__PURE__*/function () { - function Tooltip(element, config) { - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); - } // private - - - this._isEnabled = true; - this._timeout = 0; - this._hoverState = ''; - this._activeTrigger = {}; - this._popper = null; // Protected - - this.element = element; - this.config = this._getConfig(config); - this.tip = null; - - this._setListeners(); - } // Getters - - - var _proto = Tooltip.prototype; - - // Public - _proto.enable = function enable() { - this._isEnabled = true; - }; - - _proto.disable = function disable() { - this._isEnabled = false; - }; - - _proto.toggleEnabled = function toggleEnabled() { - this._isEnabled = !this._isEnabled; - }; - - _proto.toggle = function toggle(event) { - if (!this._isEnabled) { - return; - } - - if (event) { - var dataKey = this.constructor.DATA_KEY; - var context = $__default['default'](event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $__default['default'](event.currentTarget).data(dataKey, context); - } - - context._activeTrigger.click = !context._activeTrigger.click; - - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) { - this._leave(null, this); - - return; - } - - this._enter(null, this); - } - }; - - _proto.dispose = function dispose() { - clearTimeout(this._timeout); - $__default['default'].removeData(this.element, this.constructor.DATA_KEY); - $__default['default'](this.element).off(this.constructor.EVENT_KEY); - $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler); - - if (this.tip) { - $__default['default'](this.tip).remove(); - } - - this._isEnabled = null; - this._timeout = null; - this._hoverState = null; - this._activeTrigger = null; - - if (this._popper) { - this._popper.destroy(); - } - - this._popper = null; - this.element = null; - this.config = null; - this.tip = null; - }; - - _proto.show = function show() { - var _this = this; - - if ($__default['default'](this.element).css('display') === 'none') { - throw new Error('Please use show on visible elements'); - } - - var showEvent = $__default['default'].Event(this.constructor.Event.SHOW); - - if (this.isWithContent() && this._isEnabled) { - $__default['default'](this.element).trigger(showEvent); - var shadowRoot = Util.findShadowRoot(this.element); - var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); - - if (showEvent.isDefaultPrevented() || !isInTheDom) { - return; - } - - var tip = this.getTipElement(); - var tipId = Util.getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - this.element.setAttribute('aria-describedby', tipId); - this.setContent(); - - if (this.config.animation) { - $__default['default'](tip).addClass(CLASS_NAME_FADE$2); - } - - var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; - - var attachment = this._getAttachment(placement); - - this.addAttachmentClass(attachment); - - var container = this._getContainer(); - - $__default['default'](tip).data(this.constructor.DATA_KEY, this); - - if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) { - $__default['default'](tip).appendTo(container); - } - - $__default['default'](this.element).trigger(this.constructor.Event.INSERTED); - this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment)); - $__default['default'](tip).addClass(CLASS_NAME_SHOW$4); - $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - if ('ontouchstart' in document.documentElement) { - $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop); - } - - var complete = function complete() { - if (_this.config.animation) { - _this._fixTransition(); - } - - var prevHoverState = _this._hoverState; - _this._hoverState = null; - $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN); - - if (prevHoverState === HOVER_STATE_OUT) { - _this._leave(null, _this); - } - }; - - if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) { - var transitionDuration = Util.getTransitionDurationFromElement(this.tip); - $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - } - }; - - _proto.hide = function hide(callback) { - var _this2 = this; - - var tip = this.getTipElement(); - var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE); - - var complete = function complete() { - if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { - tip.parentNode.removeChild(tip); - } - - _this2._cleanTipClass(); - - _this2.element.removeAttribute('aria-describedby'); - - $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN); - - if (_this2._popper !== null) { - _this2._popper.destroy(); - } - - if (callback) { - callback(); - } - }; - - $__default['default'](this.element).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - return; - } - - $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ('ontouchstart' in document.documentElement) { - $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop); - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - - if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) { - var transitionDuration = Util.getTransitionDurationFromElement(tip); - $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); - } else { - complete(); - } - - this._hoverState = ''; - }; - - _proto.update = function update() { - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - } // Protected - ; - - _proto.isWithContent = function isWithContent() { - return Boolean(this.getTitle()); - }; - - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); - }; - - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $__default['default'](this.config.template)[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var tip = this.getTipElement(); - this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle()); - $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$4); - }; - - _proto.setElementContent = function setElementContent($element, content) { - if (typeof content === 'object' && (content.nodeType || content.jquery)) { - // Content is a DOM node or a jQuery - if (this.config.html) { - if (!$__default['default'](content).parent().is($element)) { - $element.empty().append(content); - } - } else { - $element.text($__default['default'](content).text()); - } - - return; - } - - if (this.config.html) { - if (this.config.sanitize) { - content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); - } - - $element.html(content); - } else { - $element.text(content); - } - }; - - _proto.getTitle = function getTitle() { - var title = this.element.getAttribute('data-original-title'); - - if (!title) { - title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; - } - - return title; - } // Private - ; - - _proto._getPopperConfig = function _getPopperConfig(attachment) { - var _this3 = this; - - var defaultBsConfig = { - placement: attachment, - modifiers: { - offset: this._getOffset(), - flip: { - behavior: this.config.fallbackPlacement - }, - arrow: { - element: SELECTOR_ARROW - }, - preventOverflow: { - boundariesElement: this.config.boundary - } - }, - onCreate: function onCreate(data) { - if (data.originalPlacement !== data.placement) { - _this3._handlePopperPlacementChange(data); - } - }, - onUpdate: function onUpdate(data) { - return _this3._handlePopperPlacementChange(data); - } - }; - return _extends({}, defaultBsConfig, this.config.popperConfig); - }; - - _proto._getOffset = function _getOffset() { - var _this4 = this; - - var offset = {}; - - if (typeof this.config.offset === 'function') { - offset.fn = function (data) { - data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {}); - return data; - }; - } else { - offset.offset = this.config.offset; - } - - return offset; - }; - - _proto._getContainer = function _getContainer() { - if (this.config.container === false) { - return document.body; - } - - if (Util.isElement(this.config.container)) { - return $__default['default'](this.config.container); - } - - return $__default['default'](document).find(this.config.container); - }; - - _proto._getAttachment = function _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - }; - - _proto._setListeners = function _setListeners() { - var _this5 = this; - - var triggers = this.config.trigger.split(' '); - triggers.forEach(function (trigger) { - if (trigger === 'click') { - $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) { - return _this5.toggle(event); - }); - } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; - var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; - $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) { - return _this5._enter(event); - }).on(eventOut, _this5.config.selector, function (event) { - return _this5._leave(event); - }); - } - }); - - this._hideModalHandler = function () { - if (_this5.element) { - _this5.hide(); - } - }; - - $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler); - - if (this.config.selector) { - this.config = _extends({}, this.config, { - trigger: 'manual', - selector: '' - }); - } else { - this._fixTitle(); - } - }; - - _proto._fixTitle = function _fixTitle() { - var titleType = typeof this.element.getAttribute('data-original-title'); - - if (this.element.getAttribute('title') || titleType !== 'string') { - this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); - this.element.setAttribute('title', ''); - } - }; - - _proto._enter = function _enter(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $__default['default'](event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $__default['default'](event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - } - - if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) { - context._hoverState = HOVER_STATE_SHOW; - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_SHOW; - - if (!context.config.delay || !context.config.delay.show) { - context.show(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_SHOW) { - context.show(); - } - }, context.config.delay.show); - }; - - _proto._leave = function _leave(event, context) { - var dataKey = this.constructor.DATA_KEY; - context = context || $__default['default'](event.currentTarget).data(dataKey); - - if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $__default['default'](event.currentTarget).data(dataKey, context); - } - - if (event) { - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_OUT; - - if (!context.config.delay || !context.config.delay.hide) { - context.hide(); - return; - } - - context._timeout = setTimeout(function () { - if (context._hoverState === HOVER_STATE_OUT) { - context.hide(); - } - }, context.config.delay.hide); - }; - - _proto._isWithActiveTrigger = function _isWithActiveTrigger() { - for (var trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; - }; - - _proto._getConfig = function _getConfig(config) { - var dataAttributes = $__default['default'](this.element).data(); - Object.keys(dataAttributes).forEach(function (dataAttr) { - if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { - delete dataAttributes[dataAttr]; - } - }); - config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); - - if (typeof config.delay === 'number') { - config.delay = { - show: config.delay, - hide: config.delay - }; - } - - if (typeof config.title === 'number') { - config.title = config.title.toString(); - } - - if (typeof config.content === 'number') { - config.content = config.content.toString(); - } - - Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); - - if (config.sanitize) { - config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); - } - - return config; - }; - - _proto._getDelegateConfig = function _getDelegateConfig() { - var config = {}; - - if (this.config) { - for (var key in this.config) { - if (this.constructor.Default[key] !== this.config[key]) { - config[key] = this.config[key]; - } - } - } - - return config; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $__default['default'](this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length) { - $tip.removeClass(tabClass.join('')); - } - }; - - _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { - this.tip = popperData.instance.popper; - - this._cleanTipClass(); - - this.addAttachmentClass(this._getAttachment(popperData.placement)); - }; - - _proto._fixTransition = function _fixTransition() { - var tip = this.getTipElement(); - var initConfigAnimation = this.config.animation; - - if (tip.getAttribute('x-placement') !== null) { - return; - } - - $__default['default'](tip).removeClass(CLASS_NAME_FADE$2); - this.config.animation = false; - this.hide(); - this.show(); - this.config.animation = initConfigAnimation; - } // Static - ; - - Tooltip._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $element = $__default['default'](this); - var data = $element.data(DATA_KEY$6); - - var _config = typeof config === 'object' && config; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Tooltip(this, _config); - $element.data(DATA_KEY$6, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Tooltip, null, [{ - key: "VERSION", - get: function get() { - return VERSION$6; - } - }, { - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$6; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$6; - } - }, { - key: "Event", - get: function get() { - return Event; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - }]); - - return Tooltip; - }(); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - - $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface; - $__default['default'].fn[NAME$6].Constructor = Tooltip; - - $__default['default'].fn[NAME$6].noConflict = function () { - $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6; - return Tooltip._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$7 = 'popover'; - var VERSION$7 = '4.6.0'; - var DATA_KEY$7 = 'bs.popover'; - var EVENT_KEY$7 = "." + DATA_KEY$7; - var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7]; - var CLASS_PREFIX$1 = 'bs-popover'; - var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); - - var Default$5 = _extends({}, Tooltip.Default, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }); - - var DefaultType$5 = _extends({}, Tooltip.DefaultType, { - content: '(string|element|function)' - }); - - var CLASS_NAME_FADE$3 = 'fade'; - var CLASS_NAME_SHOW$5 = 'show'; - var SELECTOR_TITLE = '.popover-header'; - var SELECTOR_CONTENT = '.popover-body'; - var Event$1 = { - HIDE: "hide" + EVENT_KEY$7, - HIDDEN: "hidden" + EVENT_KEY$7, - SHOW: "show" + EVENT_KEY$7, - SHOWN: "shown" + EVENT_KEY$7, - INSERTED: "inserted" + EVENT_KEY$7, - CLICK: "click" + EVENT_KEY$7, - FOCUSIN: "focusin" + EVENT_KEY$7, - FOCUSOUT: "focusout" + EVENT_KEY$7, - MOUSEENTER: "mouseenter" + EVENT_KEY$7, - MOUSELEAVE: "mouseleave" + EVENT_KEY$7 - }; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var Popover = /*#__PURE__*/function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - - function Popover() { - return _Tooltip.apply(this, arguments) || this; - } - - var _proto = Popover.prototype; - - // Overrides - _proto.isWithContent = function isWithContent() { - return this.getTitle() || this._getContent(); - }; - - _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment); - }; - - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $__default['default'](this.config.template)[0]; - return this.tip; - }; - - _proto.setContent = function setContent() { - var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events - - this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle()); - - var content = this._getContent(); - - if (typeof content === 'function') { - content = content.call(this.element); - } - - this.setElementContent($tip.find(SELECTOR_CONTENT), content); - $tip.removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$5); - } // Private - ; - - _proto._getContent = function _getContent() { - return this.element.getAttribute('data-content') || this.config.content; - }; - - _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $__default['default'](this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1); - - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); - } - } // Static - ; - - Popover._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $__default['default'](this).data(DATA_KEY$7); - - var _config = typeof config === 'object' ? config : null; - - if (!data && /dispose|hide/.test(config)) { - return; - } - - if (!data) { - data = new Popover(this, _config); - $__default['default'](this).data(DATA_KEY$7, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } - - data[config](); - } - }); - }; - - _createClass(Popover, null, [{ - key: "VERSION", - // Getters - get: function get() { - return VERSION$7; - } - }, { - key: "Default", - get: function get() { - return Default$5; - } - }, { - key: "NAME", - get: function get() { - return NAME$7; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY$7; - } - }, { - key: "Event", - get: function get() { - return Event$1; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$5; - } - }]); - - return Popover; - }(Tooltip); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - - $__default['default'].fn[NAME$7] = Popover._jQueryInterface; - $__default['default'].fn[NAME$7].Constructor = Popover; - - $__default['default'].fn[NAME$7].noConflict = function () { - $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7; - return Popover._jQueryInterface; - }; - - /** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - - var NAME$8 = 'scrollspy'; - var VERSION$8 = '4.6.0'; - var DATA_KEY$8 = 'bs.scrollspy'; - var EVENT_KEY$8 = "." + DATA_KEY$8; - var DATA_API_KEY$6 = '.data-api'; - var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8]; - var Default$6 = { - offset: 10, - method: 'auto', - target: '' - }; - var DefaultType$6 = { - offset: 'number', - method: 'string', - target: '(string|element)' - }; - var EVENT_ACTIVATE = "activate" + EVENT_KEY$8; - var EVENT_SCROLL = "scroll" + EVENT_KEY$8; - var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$8 + DATA_API_KEY$6; - var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; - var CLASS_NAME_ACTIVE$2 = 'active'; - var SELECTOR_DATA_SPY = '[data-spy="scroll"]'; - var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; - var SELECTOR_NAV_LINKS = '.nav-link'; - var SELECTOR_NAV_ITEMS = '.nav-item'; - var SELECTOR_LIST_ITEMS = '.list-group-item'; - var SELECTOR_DROPDOWN = '.dropdown'; - var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'; - var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; - var METHOD_OFFSET = 'offset'; - var METHOD_POSITION = 'position'; - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - var ScrollSpy = /*#__PURE__*/function () { - function ScrollSpy(element, config) { - var _this = this; - - this._element = element; - this._scrollElement = element.tagName === 'BODY' ? window : element; - this._config = this._getConfig(config); - this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS); - this._offsets = []; - this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) { - return _this._process(event); - }); - this.refresh(); - - this._process(); - } // Getters - - - var _proto = ScrollSpy.prototype; - - // Public - _proto.refresh = function refresh() { - var _this2 = this; - - var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = [].slice.call(document.querySelectorAll(this._selector)); - targets.map(function (element) { - var target; - var targetSelector = Util.getSelectorFromElement(element); - - if (targetSelector) { - target = document.querySelector(targetSelector); - } - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - // TODO (fat): remove sketch reliance on jQuery position/offset - return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); - }; - - _proto.dispose = function dispose() { - $__default['default'].removeData(this._element, DATA_KEY$8); - $__default['default'](this._scrollElement).off(EVENT_KEY$8); - this._element = null; - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; - this._activeTarget = null; - this._scrollHeight = null; - } // Private - ; - - _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default$6, typeof config === 'object' && config ? config : {}); - - if (typeof config.target !== 'string' && Util.isElement(config.target)) { - var id = $__default['default'](config.target).attr('id'); - - if (!id) { - id = Util.getUID(NAME$8); - $__default['default'](config.target).attr('id', id); - } - - config.target = "#" + id; - } - - Util.typeCheckConfig(NAME$8, config, DefaultType$6); - return config; - }; - - _proto._getScrollTop = function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - }; - - _proto._getScrollHeight = function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - }; - - _proto._getOffsetHeight = function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - }; - - _proto._process = function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - - var scrollHeight = this._getScrollHeight(); - - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; - - if (this._activeTarget !== target) { - this._activate(target); - } - - return; - } - - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - - this._clear(); - - return; - } - - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - }; - - _proto._activate = function _activate(target) { - this._activeTarget = target; - - this._clear(); - - var queries = this._selector.split(',').map(function (selector) { - return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; - }); - - var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(',')))); - - if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) { - $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2); - $link.addClass(CLASS_NAME_ACTIVE$2); - } else { - // Set triggered link as active - $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active - // With both
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:Qt,popperConfig:null},Zt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},te=function(){function t(t,e){if("undefined"==typeof It)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=i.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(i.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),i.default.removeData(this.element,this.constructor.DATA_KEY),i.default(this.element).off(this.constructor.EVENT_KEY),i.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&i.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===i.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=i.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){i.default(this.element).trigger(e);var n=l.findShadowRoot(this.element),o=i.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!o)return;var r=this.getTipElement(),a=l.getUID(this.constructor.NAME);r.setAttribute("id",a),this.element.setAttribute("aria-describedby",a),this.setContent(),this.config.animation&&i.default(r).addClass("fade");var s="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,u=this._getAttachment(s);this.addAttachmentClass(u);var f=this._getContainer();i.default(r).data(this.constructor.DATA_KEY,this),i.default.contains(this.element.ownerDocument.documentElement,this.tip)||i.default(r).appendTo(f),i.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new It(this.element,r,this._getPopperConfig(u)),i.default(r).addClass("show"),i.default(r).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&i.default(document.body).children().on("mouseover",null,i.default.noop);var d=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,i.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(i.default(this.tip).hasClass("fade")){var c=l.getTransitionDurationFromElement(this.tip);i.default(this.tip).one(l.TRANSITION_END,d).emulateTransitionEnd(c)}else d()}},e.hide=function(t){var e=this,n=this.getTipElement(),o=i.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),i.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(i.default(this.element).trigger(o),!o.isDefaultPrevented()){if(i.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&i.default(document.body).children().off("mouseover",null,i.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,i.default(this.tip).hasClass("fade")){var a=l.getTransitionDurationFromElement(n);i.default(n).one(l.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(i.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),i.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Vt(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?i.default(e).parent().is(t)||t.empty().append(e):t.text(i.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return a({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=a({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:l.isElement(this.config.container)?i.default(this.config.container):i.default(document).find(this.config.container)},e._getAttachment=function(t){return $t[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)i.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;i.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},i.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=a({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),i.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||i.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),i.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=i.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Kt.indexOf(t)&&delete e[t]})),"number"==typeof(t=a({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l.typeCheckConfig(Yt,t,this.constructor.DefaultType),t.sanitize&&(t.template=Vt(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(Xt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(i.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tooltip"),r="object"==typeof e&&e;if((o||!/dispose|hide/.test(e))&&(o||(o=new t(this,r),n.data("bs.tooltip",o)),"string"==typeof e)){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return Jt}},{key:"NAME",get:function(){return Yt}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Zt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Gt}}]),t}();i.default.fn[Yt]=te._jQueryInterface,i.default.fn[Yt].Constructor=te,i.default.fn[Yt].noConflict=function(){return i.default.fn[Yt]=zt,te._jQueryInterface};var ee="popover",ne=i.default.fn[ee],ie=new RegExp("(^|\\s)bs-popover\\S+","g"),oe=a({},te.Default,{placement:"right",trigger:"click",content:"",template:''}),re=a({},te.DefaultType,{content:"(string|element|function)"}),ae={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},se=function(t){var e,n;function o(){return t.apply(this,arguments)||this}n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){i.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||i.default(this.config.template)[0],this.tip},a.setContent=function(){var t=i.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=i.default(this.getTipElement()),e=t.attr("class").match(ie);null!==e&&e.length>0&&t.removeClass(e.join(""))},o._jQueryInterface=function(t){return this.each((function(){var e=i.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n),i.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},r(o,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return oe}},{key:"NAME",get:function(){return ee}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return ae}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return re}}]),o}(te);i.default.fn[ee]=se._jQueryInterface,i.default.fn[ee].Constructor=se,i.default.fn[ee].noConflict=function(){return i.default.fn[ee]=ne,se._jQueryInterface};var le="scrollspy",ue=i.default.fn[le],fe={offset:10,method:"auto",target:""},de={offset:"number",method:"string",target:"(string|element)"},ce=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,i.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,o="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=l.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[i.default(e)[n]().top+o,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){i.default.removeData(this._element,"bs.scrollspy"),i.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=a({},fe,"object"==typeof t&&t?t:{})).target&&l.isElement(t.target)){var e=i.default(t.target).attr("id");e||(e=l.getUID(le),i.default(t.target).attr("id",e)),t.target="#"+e}return l.typeCheckConfig(le,t,de),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";n=(n=i.default.makeArray(i.default(o).find(a)))[n.length-1]}var s=i.default.Event("hide.bs.tab",{relatedTarget:this._element}),u=i.default.Event("show.bs.tab",{relatedTarget:n});if(n&&i.default(n).trigger(s),i.default(this._element).trigger(u),!u.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,o);var f=function(){var e=i.default.Event("hidden.bs.tab",{relatedTarget:t._element}),o=i.default.Event("shown.bs.tab",{relatedTarget:n});i.default(n).trigger(e),i.default(t._element).trigger(o)};e?this._activate(e,e.parentNode,f):f()}}},e.dispose=function(){i.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var o=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?i.default(e).children(".active"):i.default(e).find("> li > .active"))[0],a=n&&r&&i.default(r).hasClass("fade"),s=function(){return o._transitionComplete(t,r,n)};if(r&&a){var u=l.getTransitionDurationFromElement(r);i.default(r).removeClass("show").one(l.TRANSITION_END,s).emulateTransitionEnd(u)}else s()},e._transitionComplete=function(t,e,n){if(e){i.default(e).removeClass("active");var o=i.default(e.parentNode).find("> .dropdown-menu .active")[0];o&&i.default(o).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(i.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),l.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&i.default(t.parentNode).hasClass("dropdown-menu")){var r=i.default(t).closest(".dropdown")[0];if(r){var a=[].slice.call(r.querySelectorAll(".dropdown-toggle"));i.default(a).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.tab");if(o||(o=new t(this),n.data("bs.tab",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();i.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),pe._jQueryInterface.call(i.default(this),"show")})),i.default.fn.tab=pe._jQueryInterface,i.default.fn.tab.Constructor=pe,i.default.fn.tab.noConflict=function(){return i.default.fn.tab=he,pe._jQueryInterface};var me=i.default.fn.toast,ge={animation:"boolean",autohide:"boolean",delay:"number"},ve={animation:!0,autohide:!0,delay:500},_e=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=i.default.Event("show.bs.toast");if(i.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),i.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),l.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,n).emulateTransitionEnd(o)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=i.default.Event("hide.bs.toast");i.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),i.default(this._element).off("click.dismiss.bs.toast"),i.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=a({},ve,i.default(this._element).data(),"object"==typeof t&&t?t:{}),l.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;i.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),i.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=l.getTransitionDurationFromElement(this._element);i.default(this._element).one(l.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=i.default(this),o=n.data("bs.toast");if(o||(o=new t(this,"object"==typeof e&&e),n.data("bs.toast",o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e](this)}}))},r(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"DefaultType",get:function(){return ge}},{key:"Default",get:function(){return ve}}]),t}();i.default.fn.toast=_e._jQueryInterface,i.default.fn.toast.Constructor=_e,i.default.fn.toast.noConflict=function(){return i.default.fn.toast=me,_e._jQueryInterface},t.Alert=d,t.Button=h,t.Carousel=y,t.Collapse=S,t.Dropdown=Ft,t.Modal=qt,t.Popover=se,t.Scrollspy=ce,t.Tab=pe,t.Toast=_e,t.Tooltip=te,t.Util=l,Object.defineProperty(t,"__esModule",{value:!0})})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/vendor/bootstrap/js/bootstrap.bundle.min.js.map b/vendor/bootstrap/js/bootstrap.bundle.min.js.map deleted file mode 100644 index 7fcd06e..0000000 --- a/vendor/bootstrap/js/bootstrap.bundle.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/popper.js/dist/esm/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["transitionEndEmulator","duration","_this","this","called","$","one","Util","TRANSITION_END","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","_","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","JQUERY_NO_CONFLICT","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","focus","hasAttribute","setAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","window","buttons","slice","querySelectorAll","i","len","length","add","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_extends","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","resolve","then","scheduled","isFunction","functionToCheck","getStyleComputedProperty","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","side","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","max","getWindowSizes","height","width","classCallCheck","instance","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","key","protoProps","staticProps","assign","source","getClientRect","offsets","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","a","b","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","ends","prop","findIndex","cur","forEach","console","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","callback","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","v","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","requestAnimationFrame","Utils","global","PopperUtils","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","boundary","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","container","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE","content","text","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","initConfigAnimation","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","autohide","Toast","_clearTimeout","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n\n return undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (_) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value) ?\n 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(EVENT_CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(CLASS_NAME_SHOW)\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(EVENT_CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n EVENT_CLICK_DATA_API,\n SELECTOR_DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n this.shouldAvoidTriggerChange = false\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n if (rootElement) {\n const input = this._element.querySelector(SELECTOR_INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $(input).trigger('change')\n }\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $element.data(DATA_KEY, data)\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n let button = event.target\n const initialButton = button\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n }\n }\n })\n .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(SELECTOR_INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n const $element = $(this._element)\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, event => this.pause(event))\n .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, e => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n $(this._element).on(EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n if (!element) {\n return\n }\n\n const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$element.data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU)\n }\n }\n\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n PLACEMENT_TOPEND :\n PLACEMENT_TOP\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...(this._config.offset(data.offsets, this._element) || {})\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter(item => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(SELECTOR_DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n event => this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, event => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.isDefaultPrevented()) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY) ?\n 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, showEvent => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(EVENT_HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this.element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n $(tip).addClass(this.config.customClass)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this.element) :\n this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: data => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: data => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...(this.config.offset(data.offsets, this.element) || {})\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, event => this._enter(event))\n .on(eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET : METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod : this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map(element => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN)\n .find(SELECTOR_DROPDOWN_TOGGLE)\n .addClass(CLASS_NAME_ACTIVE)\n $link.addClass(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE)\n // Set triggered links parents as active\n // With both
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:Q,popperConfig:null},$={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},J=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass("fade");var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass("show"),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass("fade")){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass("fade")){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=U(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return X[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),o.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==z.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(M,t,this.constructor.DefaultType),t.sanitize&&(t.template=U(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(V);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tooltip"),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data("bs.tooltip",i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return Y}},{key:"NAME",get:function(){return M}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return K}}]),t}();o.default.fn[M]=J._jQueryInterface,o.default.fn[M].Constructor=J,o.default.fn[M].noConflict=function(){return o.default.fn[M]=W,J._jQueryInterface};var G="popover",Z=o.default.fn[G],tt=new RegExp("(^|\\s)bs-popover\\S+","g"),et=r({},J.Default,{placement:"right",trigger:"click",content:"",template:''}),nt=r({},J.DefaultType,{content:"(string|element|function)"}),it={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},ot=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(tt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data("bs.popover",e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"Default",get:function(){return et}},{key:"NAME",get:function(){return G}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return it}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return nt}}]),i}(J);o.default.fn[G]=ot._jQueryInterface,o.default.fn[G].Constructor=ot,o.default.fn[G].noConflict=function(){return o.default.fn[G]=Z,ot._jQueryInterface};var at="scrollspy",st=o.default.fn[at],lt={offset:10,method:"auto",target:""},rt={offset:"number",method:"string",target:"(string|element)"},ut=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,"bs.scrollspy"),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},lt,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(at),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(at,t,rt),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(".active"):o.default(e).find("> li > .active"))[0],s=n&&a&&o.default(a).hasClass("fade"),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass("show").one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass("active");var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(o.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&o.default(t.parentNode).hasClass("dropdown-menu")){var a=o.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));o.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tab");if(i||(i=new t(this),n.data("bs.tab",i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.0"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ft._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ft._jQueryInterface,o.default.fn.tab.Constructor=ft,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=dt,ft._jQueryInterface};var ct=o.default.fn.toast,ht={animation:"boolean",autohide:"boolean",delay:"number"},gt={animation:!0,autohide:!0,delay:500},mt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),d.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),o.default(this._element).off("click.dismiss.bs.toast"),o.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},gt,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.toast");if(i||(i=new t(this,"object"==typeof e&&e),n.data("bs.toast",i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.0"}},{key:"DefaultType",get:function(){return ht}},{key:"Default",get:function(){return gt}}]),t}();o.default.fn.toast=mt._jQueryInterface,o.default.fn.toast.Constructor=mt,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=ct,mt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=w,t.Collapse=D,t.Dropdown=x,t.Modal=q,t.Popover=ot,t.Scrollspy=ut,t.Tab=ft,t.Toast=mt,t.Tooltip=J,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})})); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/vendor/bootstrap/js/bootstrap.min.js.map b/vendor/bootstrap/js/bootstrap.min.js.map deleted file mode 100644 index 16db081..0000000 --- a/vendor/bootstrap/js/bootstrap.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tools/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["transitionEndEmulator","duration","_this","this","called","$","one","Util","TRANSITION_END","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","trim","querySelector","_","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","NAME","JQUERY_NO_CONFLICT","Alert","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","Constructor","noConflict","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","contains","activeElement","focus","hasAttribute","setAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","window","buttons","slice","querySelectorAll","i","len","length","add","EVENT_KEY","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_extends","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","end","clearTimeout","e","move","which","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","offset","flip","boundary","reference","display","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","Popper","referenceElement","_getPopperConfig","body","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","forEach","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","rect","round","left","right","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this11","uriAttrs","DefaultWhitelist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","keys","_loop","el","elName","nodeName","attributeList","attributes","whitelistedAttributes","concat","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","container","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE","content","text","empty","append","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","find","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","key","$tip","tabClass","join","popperData","instance","popper","initConfigAnimation","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","node","scrollSpys","$spy","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","autohide","Toast","_clearTimeout","_close"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n\n return undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (_) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value) ?\n 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n },\n\n jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const minMajor = 1\n const ltMajor = 2\n const minMinor = 9\n const minPatch = 1\n const maxMajor = 4\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n }\n }\n}\n\nUtil.jQueryDetection()\nsetTransitionEndSupport()\n\nexport default Util\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst SELECTOR_DISMISS = '[data-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${CLASS_NAME_ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(EVENT_CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(CLASS_NAME_SHOW)\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, event => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(EVENT_CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n EVENT_CLICK_DATA_API,\n SELECTOR_DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_BUTTON = 'btn'\nconst CLASS_NAME_FOCUS = 'focus'\n\nconst SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]'\nconst SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]'\nconst SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn'\nconst SELECTOR_INPUT = 'input:not([type=\"hidden\"])'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_BUTTON = '.btn'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUS_BLUR_DATA_API = `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button {\n constructor(element) {\n this._element = element\n this.shouldAvoidTriggerChange = false\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0]\n\n if (rootElement) {\n const input = this._element.querySelector(SELECTOR_INPUT)\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = rootElement.querySelector(SELECTOR_ACTIVE)\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $(input).trigger('change')\n }\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $element.data(DATA_KEY, data)\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n let button = event.target\n const initialButton = button\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0]\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault() // work around Firefox bug #1540995\n } else {\n const inputBtn = button.querySelector(SELECTOR_INPUT)\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault() // work around Firefox bug #1540995\n return\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($(button), 'toggle', initialButton.tagName === 'INPUT')\n }\n }\n })\n .on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, event => {\n const button = $(event.target).closest(SELECTOR_BUTTON)[0]\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n // ensure correct active class is set to match the controls' actual values/states\n\n // find all checkboxes/readio buttons inside data-toggle groups\n let buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n const input = button.querySelector(SELECTOR_INPUT)\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // find all button toggles\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = buttons.length; i < len; i++) {\n const button = buttons[i]\n if (button.getAttribute('aria-pressed') === 'true') {\n button.classList.add(CLASS_NAME_ACTIVE)\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Button._jQueryInterface\n$.fn[NAME].Constructor = Button\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n}\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_RIGHT = 'carousel-item-right'\nconst CLASS_NAME_LEFT = 'carousel-item-left'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]'\n\nconst PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n const $element = $(this._element)\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($element.is(':visible') && $element.css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(EVENT_MOUSEENTER, event => this.pause(event))\n .on(EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG))\n .on(EVENT_DRAG_START, e => e.preventDefault())\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, event => start(event))\n $(this._element).on(EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n $(this._element).on(EVENT_TOUCHSTART, event => start(event))\n $(this._element).on(EVENT_TOUCHMOVE, event => move(event))\n $(this._element).on(EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) :\n []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM))\n const slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE))\n $(indicators).removeClass(CLASS_NAME_ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n\n if (!element) {\n return\n }\n\n const elementInterval = parseInt(element.getAttribute('data-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT\n orderClassName = CLASS_NAME_NEXT\n eventDirectionName = DIRECTION_LEFT\n } else {\n directionalClassName = CLASS_NAME_RIGHT\n orderClassName = CLASS_NAME_PREV\n eventDirectionName = DIRECTION_RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(CLASS_NAME_ACTIVE)\n\n $(activeElement).removeClass(`${CLASS_NAME_ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE)\n $(nextElement).addClass(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(EVENT_LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst DIMENSION_WIDTH = 'width'\nconst DIMENSION_HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES))\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(EVENT_SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSE)\n .addClass(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = $.Event(EVENT_HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(CLASS_NAME_COLLAPSING)\n .removeClass(`${CLASS_NAME_COLLAPSE} ${CLASS_NAME_SHOW}`)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(CLASS_NAME_SHOW)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(CLASS_NAME_COLLAPSING)\n .addClass(CLASS_NAME_COLLAPSE)\n .trigger(EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(DIMENSION_WIDTH)\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector = `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n const children = [].slice.call(parent.querySelectorAll(selector))\n\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(CLASS_NAME_SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(CLASS_NAME_COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$element.data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPRIGHT = 'dropright'\nconst CLASS_NAME_DROPLEFT = 'dropleft'\nconst CLASS_NAME_MENURIGHT = 'dropdown-menu-right'\nconst CLASS_NAME_POSITION_STATIC = 'position-static'\n\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = 'top-start'\nconst PLACEMENT_TOPEND = 'top-end'\nconst PLACEMENT_BOTTOM = 'bottom-start'\nconst PLACEMENT_BOTTOMEND = 'bottom-end'\nconst PLACEMENT_RIGHT = 'right-start'\nconst PLACEMENT_LEFT = 'left-start'\n\nconst Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = $(this._menu).hasClass(CLASS_NAME_SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show(true)\n }\n\n show(usePopper = false) {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(EVENT_SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC)\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW)\n $(parent)\n .toggleClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU)\n }\n }\n\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = PLACEMENT_BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ?\n PLACEMENT_TOPEND :\n PLACEMENT_TOP\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND\n }\n\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...(this._config.offset(data.offsets, this._element) || {})\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return {\n ...popperConfig,\n ...this._config.popperConfig\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(EVENT_HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW)\n $(parent)\n .removeClass(CLASS_NAME_SHOW)\n .trigger($.Event(EVENT_HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(CLASS_NAME_SHOW)\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (!isActive || (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS))\n .filter(item => $(item).is(':visible'))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler)\n .on(`${EVENT_CLICK_DATA_API} ${EVENT_KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(SELECTOR_DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(EVENT_SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n EVENT_CLICK_DISMISS,\n SELECTOR_DATA_DISMISS,\n event => this.hide(event)\n )\n\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\n $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(EVENT_HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(EVENT_FOCUSIN)\n\n $(this._element).removeClass(CLASS_NAME_SHOW)\n\n $(this._element).off(EVENT_CLICK_DISMISS)\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, event => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n $(document).off(EVENT_FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _triggerBackdropTransition() {\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\n\n $(this._element).trigger(hideEventPrevented)\n if (hideEventPrevented.isDefaultPrevented()) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n $(this._element).off(Util.TRANSITION_END)\n\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n $(this._element).one(Util.TRANSITION_END, () => {\n this._element.style.overflowY = ''\n })\n .emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n .emulateTransitionEnd(modalTransitionDuration)\n this._element.focus()\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(EVENT_SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\n this._triggerBackdropTransition()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\n } else {\n $(window).off(EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY) ?\n 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(EVENT_SHOW, showEvent => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(EVENT_HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n]\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nfunction allowedAttribute(attr, allowedAttributeList) {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n}\n\nexport function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const whitelistKeys = Object.keys(whiteList)\n const elements = [].slice.call(createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].slice.call(el.attributes)\n const whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n DefaultWhitelist,\n sanitizeHtml\n} from './tools/sanitizer'\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n}\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_ARROW = '.arrow'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler)\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const shadowRoot = Util.findShadowRoot(this.element)\n const isInTheDom = $.contains(\n shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this.element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this._getContainer()\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment))\n\n $(tip).addClass(CLASS_NAME_SHOW)\n $(tip).addClass(this.config.customClass)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE)) {\n const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle())\n $(tip).removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn)\n }\n\n $element.html(content)\n } else {\n $element.text(content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this.element) :\n this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getPopperConfig(attachment) {\n const defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: data => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: data => this._handlePopperPlacementChange(data)\n }\n\n return {\n ...defaultBsConfig,\n ...this.config.popperConfig\n }\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this.config.offset === 'function') {\n offset.fn = data => {\n data.offsets = {\n ...data.offsets,\n ...(this.config.offset(data.offsets, this.element) || {})\n }\n\n return data\n }\n } else {\n offset.offset = this.config.offset\n }\n\n return offset\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container)\n }\n\n return $(document).find(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(eventIn, this.config.selector, event => this._enter(event))\n .on(eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this.element) {\n this.hide()\n }\n }\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = $(this.element).data()\n\n Object.keys(dataAttributes)\n .forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(popperData.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n\n $(tip).removeClass(CLASS_NAME_FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $element.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tooltip._jQueryInterface\n$.fn[NAME].Constructor = Tooltip\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n}\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content)\n\n $tip.removeClass(`${CLASS_NAME_FADE} ${CLASS_NAME_SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Popover._jQueryInterface\n$.fn[NAME].Constructor = Popover\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n}\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.6.0'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS},` +\n `${this._config.target} ${SELECTOR_LIST_ITEMS},` +\n `${this._config.target} ${SELECTOR_DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(EVENT_SCROLL, event => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET : METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod : this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map(element => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map(selector => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN)\n .find(SELECTOR_DROPDOWN_TOGGLE)\n .addClass(CLASS_NAME_ACTIVE)\n $link.addClass(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE)\n // Set triggered links parents as active\n // With both