PageSourceSearch

https://vivesmedia.fr/wp-content/themes/vives/dist/js/theme.min.js?ver=6aba0a0f9ceb9

js vivesmedia.fr collected 2026-09-28 10:55:09 UTC 1,198,647 bytes, 37,952 lines download raw bytes

vendor: 3,595 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ 		}
41/******/ 	};
42/******/
43/******/ 	// define __esModule on exports
44/******/ 	__webpack_require__.r = function(exports) {
45/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ 		}
48/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
49/******/ 	};
50/******/
51/******/ 	// create a fake namespace object
52/******/ 	// mode & 1: value is a module id, require it
53/******/ 	// mode & 2: merge all properties of value into the ns
54/******/ 	// mode & 4: return value when already ns object
55/******/ 	// mode & 8|1: behave like require
56/******/ 	__webpack_require__.t = function(value, mode) {
57/******/ 		if(mode & 1) value = __webpack_require__(value);
58/******/ 		if(mode & 8) return value;
59/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ 		var ns = Object.create(null);
61/******/ 		__webpack_require__.r(ns);
62/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ 		return ns;
65/******/ 	};
66/******/
67/******/ 	// getDefaultExport function for compatibility with non-harmony modules
68/******/ 	__webpack_require__.n = function(module) {
69/******/ 		var getter = module && module.__esModule ?
70/******/ 			function getDefault() { return module['default']; } :
71/******/ 			function getModuleExports() { return module; };
72/******/ 		__webpack_require__.d(getter, 'a', getter);
73/******/ 		return getter;
74/******/ 	};
75/******/
76/******/ 	// Object.prototype.hasOwnProperty.call
77/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ 	// __webpack_public_path__
80/******/ 	__webpack_require__.p = "/";
81/******/
82/******/
83/******/ 	// Load entry module and return exports
84/******/ 	return __webpack_require__(__webpack_require__.s = 0);
85/******/ })
86/************************************************************************/
87/******/ ({
88
89/***/ "./assets/js/components/Events.js":
90/*!****************************************!*\
91  !*** ./assets/js/components/Events.js ***!
92  \****************************************/
93/*! exports provided: default */
94/***/ (function(module, __webpack_exports__, __webpack_require__) {
95
96"use strict";
97__webpack_require__.r(__webpack_exports__);
98function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
99function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
100function _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, _toPropertyKey(descriptor.key), descriptor); } }
101function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
102function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
103function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
104var Events = /*#__PURE__*/function () {
105  function Events() {
106    _classCallCheck(this, Events);
107    this.$ = {};
108    if (document.querySelector('.events')) {
109      this.initDOM();
110      this.initParams();
111      if (this.$.eventsItems) this.initEvents();
112    }
113  }
114  _createClass(Events, [{
115    key: "initDOM",
116    value: function initDOM() {
117      this.$.events = document.querySelector('.events');
118      this.$.eventContainer = this.$.events.querySelector('.events__container');
119      this.$.eventContent = this.$.events.querySelector('.events__content');
120      this.$.eventImage = this.$.events.querySelector('.events__image-actual');
121      this.$.eventImageNew = this.$.events.querySelector('.events__image-new');
122      this.$.eventsItems = this.$.events.querySelectorAll('.events__item');
123      this.$.eventsNumbers = this.$.events.querySelectorAll('.events__navigation-item');
124    }
125  }, {
126    key: "initParams",
127    value: function initParams() {
128      this.actualEvent = 1;
129      this.numberEvents = this.$.eventsItems.length;
130    }
131  }, {
132    key: "changeSlide",
133    value: function changeSlide() {
134      var _this = this;
135      this.$.eventContainer.dataset.color = this.$.events.querySelector(".events__item:nth-child(".concat(this.actualEvent + 1, ")")).dataset.color;
136      this.$.eventImageNew.classList.remove('events__image-new--active');
137      this.$.events.querySelector('.events__navigation-progress-fill--active').classList.remove('events__navigation-progress-fill--active');
138      this.$.eventContent.style.transition = 'opacity 0.5s ease-in-out';
139      this.$.eventContent.style.opacity = 0.5;
140      setTimeout(function () {
141        _this.$.eventContent.innerHTML = _this.$.events.querySelector(".events__item:nth-child(".concat(_this.actualEvent + 1, ") .content")).innerHTML;
142        _this.$.eventContent.style.transition = 'opacity 0.2s ease-in-out';
143        _this.$.eventContent.style.opacity = 1;
144      }, 500);
145      this.$.events.querySelector(".events__navigation-item:nth-child(".concat(this.actualEvent + 1, ") .events__navigation-progress-fill")).classList.add('events__navigation-progress-fill--active');
146      this.$.eventImageNew.innerHTML = this.$.events.querySelector(".events__item:nth-child(".concat(this.actualEvent + 1, ") .image")).innerHTML;
147      setTimeout(function () {
148        _this.$.eventImageNew.classList.add('events__image-new--active');
149      }, 100);
150      if (this.actualEvent === this.numberEvents - 1) {
151        setTimeout(function () {
152          _this.$.eventImage.innerHTML = _this.$.events.querySelector(".events__item:nth-child(".concat(_this.actualEvent + 1, ") .image")).innerHTML;
153          _this.actualEvent = 0;
154        }, 1100);
155      } else {
156        setTimeout(function () {
157          _this.$.eventImage.innerHTML = _this.$.events.querySelector(".events__item:nth-child(".concat(_this.actualEvent + 1, ") .image")).innerHTML;
158          _this.actualEvent += 1;
159        }, 1100);
160      }
161    }
162  }, {
163    key: "initEvents",
164    value: function initEvents() {
165      var _this2 = this;
166      this.$.events.querySelector('.events__navigation-progress-fill').classList.add('events__navigation-progress-fill--active');
167      this.$.eventsNumbers.forEach(function (number, index) {
168        number.addEventListener('click', function () {
169          clearInterval(_this2.interval);
170          _this2.actualEvent = index;
171          _this2.$.eventImageNew.classList.remove('events__image-new--active');
172          _this2.$.events.querySelector('.events__navigation-progress-fill--active').classList.remove('events__navigation-progress-fill--active');
173          _this2.$.eventContent.innerHTML = _this2.$.events.querySelector(".events__item:nth-child(".concat(_this2.actualEvent + 1, ") .content")).innerHTML;
174          _this2.$.events.querySelector(".events__navigation-item:nth-child(".concat(_this2.actualEvent + 1, ") .events__navigation-progress-fill")).classList.add('events__navigation-progress-fill--active');
175          _this2.$.eventImageNew.innerHTML = _this2.$.events.querySelector(".events__item:nth-child(".concat(_this2.actualEvent + 1, ") .image")).innerHTML;
176          setTimeout(function () {
177            _this2.$.eventImageNew.classList.add('events__image-new--active');
178            _this2.changeSlide();
179            _this2.interval = setInterval(function () {
180              _this2.changeSlide();
181            }, 5000);
182          }, 100);
183          setTimeout(function () {
184            _this2.$.eventImage.innerHTML = _this2.$.events.querySelector(".events__item:nth-child(".concat(_this2.actualEvent + 1, ") .image")).innerHTML;
185          }, 1100);
186        });
187      });
188      this.interval = setInterval(function () {
189        _this2.changeSlide();
190      }, 5000);
191    }
192  }]);
193  return Events;
194}();
195/* harmony default export */ __webpack_exports__["default"] = (new Events());
196
197/***/ }),
198
199/***/ "./assets/js/components/EventsList.js":
200/*!********************************************!*\
201  !*** ./assets/js/components/EventsList.js ***!
202  \********************************************/
203/*! exports provided: default */
204/***/ (function(module, __webpack_exports__, __webpack_require__) {
205
206"use strict";
207__webpack_require__.r(__webpack_exports__);
208/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js");
209function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
210function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
211function _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, _toPropertyKey(descriptor.key), descriptor); } }
212function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
213function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
214function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
215
216var EventsList = /*#__PURE__*/function () {
217  function EventsList() {
218    _classCallCheck(this, EventsList);
219    this.$ = {};
220    this.initDOM();
221    if (this.$.eventsPage) this.initEvents();
222  }
223  _createClass(EventsList, [{
224    key: "initDOM",
225    value: function initDOM() {
226      this.$.eventsPage = document.querySelector('.events-page');
227      if (this.$.eventsPage) this.$.lists = this.$.eventsPage.querySelectorAll('.list');
228    }
229  }, {
230    key: "initEvents",
231    value: function initEvents() {
232      this.$.lists.forEach(function (list) {
233        var carousel = list.querySelector('.swiper');
234        new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](carousel, {
235          modules: [swiper__WEBPACK_IMPORTED_MODULE_0__["Navigation"], swiper__WEBPACK_IMPORTED_MODULE_0__["Pagination"]],
236          loop: false,
237          spaceBetween: 40,
238          slidesPerView: 1,
239          pagination: {
240            el: '.carousel__pagination',
241            type: 'bullets',
242            clickable: true,
243            bulletClass: 'carousel__pagination-bullet',
244            bulletActiveClass: 'carousel__pagination-bullet--active'
245          },
246          navigation: {
247            nextEl: '.carousel__navigation--right',
248            prevEl: '.carousel__navigation--left'
249          },
250          breakpoints: {
251            1280: {
252              slidesPerView: 3.2
253            },
254            1920: {
255              slidesPerView: 4.2
256            }
257          }
258        });
259      });
260    }
261  }]);
262  return EventsList;
263}();
264/* harmony default export */ __webpack_exports__["default"] = (new EventsList());
265
266/***/ }),
267
268/***/ "./assets/js/components/Footer.js":
269/*!****************************************!*\
270  !*** ./assets/js/components/Footer.js ***!
271  \****************************************/
272/*! exports provided: default */
273/***/ (function(module, __webpack_exports__, __webpack_require__) {
274
275"use strict";
276__webpack_require__.r(__webpack_exports__);
277/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
278/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
279function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
280function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
281function _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, _toPropertyKey(descriptor.key), descriptor); } }
282function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
283function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
284function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
285
286var Footer = /*#__PURE__*/function () {
287  function Footer() {
288    _classCallCheck(this, Footer);
289    this.$ = {};
290    this.$.footer = document.querySelector('.footer');
291    if (this.$.footer) {
292      this.$.citations = this.$.footer.querySelectorAll('.footer__citations-content .citation');
293      if (this.$.citations) {
294        this.initDOM();
295        this.initParams();
296        this.citations();
297      }
298    }
299    this.initNewsletterModal();
300  }
301  _createClass(Footer, [{
302    key: "initDOM",
303    value: function initDOM() {
304      this.$.citationTitleBefore = this.$.footer.querySelector('.footer__citation-title .before p');
305      this.$.citationTitleActual = this.$.footer.querySelector('.footer__citation-title .actual p');
306      this.$.citationAuthorBefore = this.$.footer.querySelector('.footer__citation-author .before');
307      this.$.citationAuthorActual = this.$.footer.querySelector('.footer__citation-author .actual');
308      this.$.citation = document.querySelector('.footer__citation');
309    }
310  }, {
311    key: "initParams",
312    value: function initParams() {
313      this.actualCitation = 0;
314      this.numberCitations = this.$.citations.length;
315    }
316  }, {
317    key: "citations",
318    value: function citations() {
319      var _this = this;
320      setInterval(function () {
321        if (_this.actualCitation === _this.numberCitations - 1) {
322          _this.$.citationTitleBefore.innerHTML = _this.$.citations[0].querySelector('.title').innerHTML;
323          _this.$.citationTitleActual.innerHTML = _this.$.citations[_this.numberCitations - 1].querySelector('.title').innerHTML;
324          _this.$.citationAuthorBefore.innerHTML = _this.$.citations[0].querySelector('.author').innerHTML;
325          _this.$.citationAuthorActual.innerHTML = _this.$.citations[_this.numberCitations - 1].querySelector('.author').innerHTML;
326          _this.$.citation.classList.add('footer__citation--active');
327          setTimeout(function () {
328            _this.$.citationTitleBefore.innerHTML = _this.$.citations[0].querySelector('.title').innerHTML;
329            _this.$.citationTitleActual.innerHTML = _this.$.citations[0].querySelector('.title').innerHTML;
330            _this.$.citationAuthorBefore.innerHTML = _this.$.citations[0].querySelector('.author').innerHTML;
331            _this.$.citationAuthorActual.innerHTML = _this.$.citations[0].querySelector('.author').innerHTML;
332            _this.$.citation.classList.remove('footer__citation--active');
333            _this.actualCitation = 0;
334          }, 300);
335        } else {
336          _this.$.citationTitleBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.title').innerHTML;
337          _this.$.citationTitleActual.innerHTML = _this.$.citations[_this.actualCitation].querySelector('.title').innerHTML;
338          _this.$.citationAuthorBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.author').innerHTML;
339          _this.$.citationAuthorActual.innerHTML = _this.$.citations[_this.actualCitation].querySelector('.author').innerHTML;
340          _this.$.citation.classList.add('footer__citation--active');
341          setTimeout(function () {
342            _this.$.citationTitleBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.title').innerHTML;
343            _this.$.citationTitleActual.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.title').innerHTML;
344            _this.$.citationAuthorBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.author').innerHTML;
345            _this.$.citationAuthorActual.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.author').innerHTML;
346            _this.$.citation.classList.remove('footer__citation--active');
347            _this.actualCitation += 1;
348          }, 300);
349        }
350      }, 3000);
351    }
352  }, {
353    key: "initNewsletterModal",
354    value: function initNewsletterModal() {
355      var label = document.querySelector('.newsletter-modal .gfield_label');
356      var input = document.querySelector('.newsletter-modal .ginput_container input');
357      var inputHidden = document.querySelector('.newsletter-modal .ginput_container input[type=hidden]');
358      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('load', function () {
359        if (document.querySelector('.newsletter-modal--open')) {
360          jquery__WEBPACK_IMPORTED_MODULE_0___default()('#modalNewsletter').modal('show');
361        }
362      });
363      if (label && input) {
364        label.innerText = "Email*";
365        label.setAttribute('for', 'newsletter-modal-email');
366        input.setAttribute('id', 'newsletter-modal-email');
367      }
368      if (inputHidden) {
369        inputHidden.setAttribute('value', 1);
370      }
371    }
372  }]);
373  return Footer;
374}();
375/* harmony default export */ __webpack_exports__["default"] = (new Footer());
376
377/***/ }),
378
379/***/ "./assets/js/components/Header.js":
380/*!****************************************!*\
381  !*** ./assets/js/components/Header.js ***!
382  \****************************************/
383/*! exports provided: default */
384/***/ (function(module, __webpack_exports__, __webpack_require__) {
385
386"use strict";
387__webpack_require__.r(__webpack_exports__);
388function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
389function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
390function _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, _toPropertyKey(descriptor.key), descriptor); } }
391function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
392function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
393function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
394var Header = /*#__PURE__*/function () {
395  function Header() {
396    _classCallCheck(this, Header);
397    this.$ = {};
398    if (document.querySelector('.header')) {
399      this.initDocument();
400      this.navigation();
401      this.search();
402    }
403  }
404  _createClass(Header, [{
405    key: "initDocument",
406    value: function initDocument() {
407      this.$.header = document.querySelector('.header');
408      this.$.navigation = this.$.header.querySelector('.header__nav');
409      this.$.navigationItems = this.$.navigation.querySelectorAll('a');
410      this.$.search = this.$.header.querySelector('.header__search');
411      this.$.searchInput = this.$.header.querySelector('input');
412      this.$.searchButton = this.$.search.querySelector('.header__search-button');
413      this.$.burger = this.$.header.querySelector('.header__burger');
414      this.$.close = this.$.header.querySelector('.header__nav-close');
415    }
416  }, {
417    key: "navigation",
418    value: function navigation() {
419      var _this = this;
420      if (window.matchMedia('(max-width: 1279px)').matches) {
421        this.$.burger.addEventListener('click', function () {
422          _this.$.navigation.classList.add('header__nav--open');
423          _this.$.header.classList.add('header--open');
424          document.body.style.overflow = 'hidden';
425        });
426        this.$.close.addEventListener('click', function () {
427          _this.$.navigation.classList.remove('header__nav--open');
428          _this.$.header.classList.remove('header--open');
429          document.body.style.overflow = 'auto';
430        });
431      }
432    }
433  }, {
434    key: "search",
435    value: function search() {
436      var _this2 = this;
437      this.$.searchButton.addEventListener('click', function (event) {
438        if (!_this2.$.search.classList.contains('header__search--open')) {
439          event.preventDefault();
440          _this2.$.search.classList.add('header__search--open');
441          _this2.$.searchButton.setAttribute('type', 'submit');
442          _this2.$.searchInput.focus();
443        }
444      });
445      document.addEventListener('click', function (event) {
446        if (!_this2.$.search.contains(event.target) && !_this2.$.searchInput.value) {
447          _this2.$.search.classList.remove('header__search--open');
448          _this2.$.searchButton.setAttribute('type', 'button');
449        }
450      });
451    }
452  }]);
453  return Header;
454}();
455/* harmony default export */ __webpack_exports__["default"] = (new Header());
456
457/***/ }),
458
459/***/ "./assets/js/components/NewsletterCategories.js":
460/*!******************************************************!*\
461  !*** ./assets/js/components/NewsletterCategories.js ***!
462  \******************************************************/
463/*! exports provided: default */
464/***/ (function(module, __webpack_exports__, __webpack_require__) {
465
466"use strict";
467__webpack_require__.r(__webpack_exports__);
468function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
469function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
470function _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, _toPropertyKey(descriptor.key), descriptor); } }
471function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
472function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
473function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
474var NewsletterCategories = /*#__PURE__*/function () {
475  function NewsletterCategories() {
476    _classCallCheck(this, NewsletterCategories);
477    this.$ = {};
478    this.initDOM();
479    if (this.$.links) this.setLinks();
480  }
481  _createClass(NewsletterCategories, [{
482    key: "initDOM",
483    value: function initDOM() {
484      this.$.nc = document.querySelector('.newsletter-categories');
485      if (this.$.nc) this.$.links = this.$.nc.querySelectorAll('.newsletter-categories__link');
486    }
487  }, {
488    key: "setLinks",
489    value: function setLinks() {
490      this.$.links.forEach(function (item) {
491        var link = item.querySelector('a');
492        link.addEventListener('mouseover', function () {
493          link.classList.remove('mouseout');
494          link.classList.add('mouseover');
495        });
496        link.addEventListener('mouseout', function () {
497          link.classList.add('mouseout');
498          link.classList.remove('mouseover');
499        });
500      });
501    }
502  }]);
503  return NewsletterCategories;
504}();
505/* harmony default export */ __webpack_exports__["default"] = (new NewsletterCategories());
506
507/***/ }),
508
509/***/ "./assets/js/components/Partners.js":
510/*!******************************************!*\
511  !*** ./assets/js/components/Partners.js ***!
512  \******************************************/
513/*! exports provided: default */
514/***/ (function(module, __webpack_exports__, __webpack_require__) {
515
516"use strict";
517__webpack_require__.r(__webpack_exports__);
518/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js");
519function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
520function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
521function _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, _toPropertyKey(descriptor.key), descriptor); } }
522function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
523function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
524function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
525
526var Partners = /*#__PURE__*/function () {
527  function Partners() {
528    _classCallCheck(this, Partners);
529    this.$ = {};
530    this.initDOM();
531    if (this.$.partners) this.initPartners();
532  }
533  _createClass(Partners, [{
534    key: "initDOM",
535    value: function initDOM() {
536      this.$.partners = document.querySelector('.partners');
537    }
538  }, {
539    key: "initPartners",
540    value: function initPartners() {
541      new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]('.partners .swiper', {
542        modules: [swiper__WEBPACK_IMPORTED_MODULE_0__["Navigation"], swiper__WEBPACK_IMPORTED_MODULE_0__["Pagination"]],
543        loop: true,
544        slidesPerView: 2,
545        pagination: {
546          el: '.partners__pagination',
547          type: 'bullets',
548          clickable: true,
549          bulletClass: 'partners__pagination-bullet',
550          bulletActiveClass: 'partners__pagination-bullet--active'
551        },
552        navigation: {
553          nextEl: '.partners__navigation--right',
554          prevEl: '.partners__navigation--left'
555        },
556        breakpoints: {
557          834: {
558            slidesPerView: 4,
559            slidesPerGroup: 2
560          },
561          1280: {
562            slidesPerView: 6,
563            slidesPerGroup: 3
564          }
565        }
566      });
567    }
568  }]);
569  return Partners;
570}();
571/* harmony default export */ __webpack_exports__["default"] = (new Partners());
572
573/***/ }),
574
575/***/ "./assets/js/components/ResourcesList.js":
576/*!***********************************************!*\
577  !*** ./assets/js/components/ResourcesList.js ***!
578  \***********************************************/
579/*! exports provided: default */
580/***/ (function(module, __webpack_exports__, __webpack_require__) {
581
582"use strict";
583__webpack_require__.r(__webpack_exports__);
584/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js");
585function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
586function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
587function _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, _toPropertyKey(descriptor.key), descriptor); } }
588function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
589function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
590function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
591
592var Resources = /*#__PURE__*/function () {
593  function Resources() {
594    _classCallCheck(this, Resources);
595    this.$ = {};
596    this.initDOM();
597    if (this.$.resourcesCategories) this.initResources();
598  }
599  _createClass(Resources, [{
600    key: "initDOM",
601    value: function initDOM() {
602      this.$.resourcesCategories = document.querySelectorAll('.resources .list__category');
603    }
604  }, {
605    key: "initResources",
606    value: function initResources() {
607      this.$.resourcesCategories.forEach(function (category) {
608        var carousel = category.querySelector('.swiper');
609        new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](carousel, {
610          modules: [swiper__WEBPACK_IMPORTED_MODULE_0__["Navigation"], swiper__WEBPACK_IMPORTED_MODULE_0__["Pagination"]],
611          loop: false,
612          spaceBetween: 40,
613          slidesPerView: 1.2,
614          pagination: {
615            el: '.carousel__pagination',
616            type: 'bullets',
617            clickable: true,
618            bulletClass: 'carousel__pagination-bullet',
619            bulletActiveClass: 'carousel__pagination-bullet--active'
620          },
621          navigation: {
622            nextEl: '.carousel__navigation--right',
623            prevEl: '.carousel__navigation--left'
624          },
625          breakpoints: {
626            1280: {
627              slidesPerView: 3.2
628            },
629            1920: {
630              slidesPerView: 4.2
631            }
632          }
633        });
634      });
635    }
636  }]);
637  return Resources;
638}();
639/* harmony default export */ __webpack_exports__["default"] = (new Resources());
640
641/***/ }),
642
643/***/ "./assets/js/theme.js":
644/*!****************************!*\
645  !*** ./assets/js/theme.js ***!
646  \****************************/
647/*! no exports provided */
648/***/ (function(module, __webpack_exports__, __webpack_require__) {
649
650"use strict";
651__webpack_require__.r(__webpack_exports__);
652/* harmony import */ var bootstrap_dist_js_bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap/dist/js/bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js");
653/* harmony import */ var bootstrap_dist_js_bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap_dist_js_bootstrap__WEBPACK_IMPORTED_MODULE_0__);
654/* harmony import */ var _components_Header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/Header */ "./assets/js/components/Header.js");
655/* harmony import */ var _components_Footer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Footer */ "./assets/js/components/Footer.js");
656/* harmony import */ var _components_NewsletterCategories__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/NewsletterCategories */ "./assets/js/components/NewsletterCategories.js");
657/* harmony import */ var _components_Events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Events */ "./assets/js/components/Events.js");
658/* harmony import */ var _components_Partners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/Partners */ "./assets/js/components/Partners.js");
659/* harmony import */ var _components_ResourcesList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/ResourcesList */ "./assets/js/components/ResourcesList.js");
660/* harmony import */ var _components_EventsList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/EventsList */ "./assets/js/components/EventsList.js");
661/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
662/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
663/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_9__);
664
665
666
667
668
669
670
671
672
673
674document.documentElement.style.setProperty('--scrollbar-width', "".concat(window.innerWidth - document.documentElement.clientWidth, "px"));
675var postLikes = document.querySelectorAll('.like-post');
676if (postLikes) {
677  postLikes.forEach(function (postLike) {
678    postLike.addEventListener('click', function (e) {
679      var postId = postLike.dataset.post_id;
680      var url = postLike.dataset.url;
681      var formData = new FormData();
682      formData.append('action', 'save_like');
683      formData.append('postId', postId);
684      axios__WEBPACK_IMPORTED_MODULE_8__["default"].post(url, formData).then(function (_ref) {
685        var data = _ref.data;
686        data = data.data;
687        if (data.success) {
688          if (data.action == 'create') {
689            postLike.classList.add('active');
690          }
691          if (data.action == 'delete') {
692            postLike.classList.remove('active');
693            if (document.querySelector('.likes')) {
694              postLike.parentElement.parentElement.parentElement.remove();
695            }
696          }
697        }
698      });
699    });
700  });
701}
702var eventShare = document.querySelector('.event .content__shares');
703if (eventShare) {
704  var top = eventShare.getBoundingClientRect().top + window.scrollY;
705  var left = eventShare.getBoundingClientRect().left;
706  eventShare.style.left = "".concat(left, "px");
707  window.addEventListener('scroll', function () {
708    if (window.pageYOffset > top - 60) {
709      eventShare.classList.add('content__shares--fixed');
710    } else {
711      eventShare.classList.remove('content__shares--fixed');
712    }
713  });
714}
715var likesFilters = document.querySelector('.account .likes__filters');
716if (likesFilters) {
717  likesFilters.addEventListener('change', function () {
718    if (likesFilters.value == 'all') {
719      window.location.href = "".concat(window.location.protocol, "//").concat(window.location.host).concat(window.location.pathname);
720    } else {
721      window.location.href = "".concat(window.location.protocol, "//").concat(window.location.host).concat(window.location.pathname, "?type=").concat(likesFilters.value);
722    }
723  });
724}
725var placeCommunity = document.querySelector('.home .community .place');
726if (placeCommunity) {
727  placeCommunity.addEventListener('mouseover', function () {
728    placeCommunity.classList.add('mouseover');
729    placeCommunity.classList.remove('mouseout');
730  });
731  placeCommunity.addEventListener('mouseout', function () {
732    placeCommunity.classList.remove('mouseover');
733    placeCommunity.classList.add('mouseout');
734  });
735}
736var billsCommunity = document.querySelector('.home .community .bills');
737if (billsCommunity) {
738  billsCommunity.addEventListener('mouseover', function () {
739    billsCommunity.classList.add('mouseover');
740    billsCommunity.classList.remove('mouseout');
741  });
742  billsCommunity.addEventListener('mouseout', function () {
743    billsCommunity.classList.remove('mouseover');
744    billsCommunity.classList.add('mouseout');
745  });
746}
747var trajectoireCommunity = document.querySelector('.home .community .trajectoire');
748if (trajectoireCommunity) {
749  trajectoireCommunity.addEventListener('mouseover', function () {
750    trajectoireCommunity.classList.add('mouseover');
751    trajectoireCommunity.classList.remove('mouseout');
752  });
753  trajectoireCommunity.addEventListener('mouseout', function () {
754    trajectoireCommunity.classList.remove('mouseover');
755    trajectoireCommunity.classList.add('mouseout');
756  });
757}
758var loginButtons = document.querySelectorAll('.login-modal .content__switch-item');
759if (loginButtons) {
760  loginButtons.forEach(function (button) {
761    button.addEventListener('click', function () {
762      if (button.dataset.open === 'login') {
763        document.querySelector('.login-modal__register').style.display = 'none';
764        document.querySelector('.login-modal__login').style.display = 'block';
765      } else {
766        document.querySelector('.login-modal__login').style.display = 'none';
767        document.querySelector('.login-modal__register').style.display = 'block';
768      }
769    });
770  });
771}
772jquery__WEBPACK_IMPORTED_MODULE_9___default()(window).on('load', function () {
773  if (document.querySelector('#errorModal')) jquery__WEBPACK_IMPORTED_MODULE_9___default()('#errorModal').modal('show');
774});
775var reviewsProduct = document.querySelectorAll('.product .reviews__item');
776var viewMore = document.querySelector('.product .reviews__more');
777if (reviewsProduct && viewMore) {
778  var numberReviews = reviewsProduct.length;
779  var numberVisible = 4;
780  viewMore.addEventListener('click', function () {
781    numberVisible += 4;
782    reviewsProduct.forEach(function (review, index) {
783      if (index < numberVisible) review.classList.add('reviews__item--visible');
784    });
785    if (numberVisible >= numberReviews) viewMore.remove();
786  });
787}
788window.addEventListener('load', function () {
789  setTimeout(function () {
790    var checkout = document.querySelector('.checkout-page');
791    if (checkout) {
792      var addressHeight = document.querySelector('.address');
793      var cartHeight = document.querySelector('.cart');
794      var promo = document.querySelector('.promotion');
795      if (addressHeight && cartHeight && promo) {
796        addressHeight = addressHeight.offsetHeight;
797        cartHeight = cartHeight.offsetHeight;
798        promo.style.transform = "translateY(-".concat(addressHeight - cartHeight, "px)");
799      }
800    }
801  }, 1000);
802});
803var setPassword = function setPassword(password) {
804  var indicator = document.createElement('div');
805  indicator.innerHTML = "<div class=\"d-flex mt-5\">\n    <div class=\"indicator indicator--number\">\n      <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>
805\n      <span>chiffre</span>\n    </div>\n    <div class=\"ml-5 indicator indicator--special\">\n      <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n      <span>caract\xE8re sp\xE9cial</span>\n    </div>\n    <div class=\"ml-5 indicator indicator--chars\">\n      <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n      <span>8 caract\xE8res</span>\n    </div>\n    <div class=\"ml-5 indicator indicator--lower\">\n      <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n      <span>minuscule</span>\n    </div>\n    <div class=\"ml-5 indicator indicator--upper\">\n      <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n      <span>majuscule</span>\n    </div>\n</div>";
806  password.parentElement.parentElement.appendChild(indicator);
807  password.addEventListener('input', function () {
808    // check contain number
809    if (!/[0-9]/.test(password.value)) {
810      document.querySelector('.indicator--number').classList.remove('indicator--active');
811    } else {
812      document.querySelector('.indicator--number').classList.add('indicator--active');
813    }
814
815    // check contain special char
816    if (!/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+/.test(password.value)) {
817      document.querySelector('.indicator--special').classList.remove('indicator--active');
818    } else {
819      document.querySelector('.indicator--special').classList.add('indicator--active');
820    }
821
822    // check contain minimum 8 characters
823    if (password.value.length < 8) {
824      document.querySelector('.indicator--chars').classList.remove('indicator--active');
825    } else {
826      document.querySelector('.indicator--chars').classList.add('indicator--active');
827    }
828
829    // check contain lower
830    if (!/[a-z]/.test(password.value)) {
831      document.querySelector('.indicator--lower').classList.remove('indicator--active');
832    } else {
833      document.querySelector('.indicator--lower').classList.add('indicator--active');
834    }
835
836    // check contain upper
837    if (!/[A-Z]/.test(password.value)) {
838      document.querySelector('.indicator--upper').classList.remove('indicator--active');
839    } else {
840      document.querySelector('.indicator--upper').classList.add('indicator--active');
841    }
842  });
843};
844var password = document.querySelector('.inscription main input[type="password"]');
845if (password && !password.closest('.login-password')) {
846  setPassword(password);
847}
848var passwordModal = document.querySelector('.login-modal input[type="password"]');
849if (passwordModal) {
850  setPassword(passwordModal);
851}
852var accountEdit = document.querySelector('.woocommerce-edit-account');
853if (accountEdit) {
854  var message = document.querySelector('.woocommerce-message');
855  var error = document.querySelector('.woocommerce-error');
856  if (message) {
857    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").prependTo(".woocommerce-EditAccountForm");
858    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").css('display', 'block');
859  }
860  if (error) {
861    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").prependTo(".woocommerce-EditAccountForm");
862    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").css('display', 'block');
863  }
864}
865var accountAdress = document.querySelector('.woocommerce-edit-address');
866if (accountAdress) {
867  var _message = document.querySelector('.woocommerce-message');
868  var _error = document.querySelector('.woocommerce-error');
869  if (_message) {
870    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").prependTo(".woocommerce-a
870ddress-fields");
871    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").css('display', 'block');
872  }
873  if (_error) {
874    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").prependTo(".woocommerce-address-fields");
875    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").css('display', 'block');
876  }
877}
878var accountForgot = document.querySelector('.woocommerce-lost-password');
879if (accountForgot) {
880  var _message2 = document.querySelector('.woocommerce-message');
881  var _error2 = document.querySelector('.woocommerce-error');
882  if (_message2) {
883    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").prependTo(".account.forgot .card");
884    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").css('display', 'block');
885  }
886  if (_error2) {
887    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").prependTo(".account.forgot .card");
888    jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").css('display', 'block');
889  }
890}
891
892// Suite à l'installation du plugin "Gravity Forms: Multiple Form Instances Add On" les ID ne correspondent plus
893// Il faut donc les changer
894if (jquery__WEBPACK_IMPORTED_MODULE_9___default()('.gform_show_password').length > 0) {
895  jquery__WEBPACK_IMPORTED_MODULE_9___default()('.gform_show_password').each(function () {
896    var sNewId = jquery__WEBPACK_IMPORTED_MODULE_9___default()(this).prev('input[type="password"]').attr('id');
897    jquery__WEBPACK_IMPORTED_MODULE_9___default()(this).attr('onclick', 'javascript:gformToggleShowPassword("' + sNewId + '");');
898  });
899}
900jquery__WEBPACK_IMPORTED_MODULE_9___default()(window).on('load', function () {
901  if (jquery__WEBPACK_IMPORTED_MODULE_9___default()('.content.js-modal').length > 0) {
902    var modalId = jquery__WEBPACK_IMPORTED_MODULE_9___default()('.content.js-modal').attr('data-modal-id');
903    if (modalId != "") {
904      jquery__WEBPACK_IMPORTED_MODULE_9___default()(modalId).modal('show');
905    }
906  }
907  var shareElement = jquery__WEBPACK_IMPORTED_MODULE_9___default()('.share');
908  if (shareElement.length > 0) {
909    var modalIsOpen = jquery__WEBPACK_IMPORTED_MODULE_9___default()('.share').attr('data-modal-is-open');
910    if (modalIsOpen === '1') {
911      jquery__WEBPACK_IMPORTED_MODULE_9___default()('#share').modal('show');
912    }
913  }
914});
915
916/***/ }),
917
918/***/ "./assets/scss/style.scss":
919/*!********************************!*\
920  !*** ./assets/scss/style.scss ***!
921  \********************************/
922/*! no static exports found */
923/***/ (function(module, exports) {
924
925// removed by extract-text-webpack-plugin
926
927/***/ }),
928
vendor: 3,097 bytes, lines 929-983
929/***/ "./node_modules/axios/index.js":
930/*!*************************************!*\
931  !*** ./node_modules/axios/index.js ***!
932  \*************************************/
933/*! exports provided: default, Axios, AxiosError, CanceledError, isCancel, CancelToken, VERSION, all, Cancel, isAxiosError, spread, toFormData, AxiosHeaders, HttpStatusCode, formToJSON, mergeConfig */
934/***/ (function(module, __webpack_exports__, __webpack_require__) {
935
936"use strict";
937__webpack_require__.r(__webpack_exports__);
938/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Axios", function() { return Axios; });
939/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AxiosError", function() { return AxiosError; });
940/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CanceledError", function() { return CanceledError; });
941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isCancel", function() { return isCancel; });
942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CancelToken", function() { return CancelToken; });
943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "all", function() { return all; });
945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Cancel", function() { return Cancel; });
946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAxiosError", function() { return isAxiosError; });
947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spread", function() { return spread; });
948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toFormData", function() { return toFormData; });
949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AxiosHeaders", function() { return AxiosHeaders; });
950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpStatusCode", function() { return HttpStatusCode; });
951/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formToJSON", function() { return formToJSON; });
952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeConfig", function() { return mergeConfig; });
953/* harmony import */ var _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/axios.js */ "./node_modules/axios/lib/axios.js");
954/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
955
956
957
958// This module is intended to unwrap Axios default export as named.
959// Keep top-level export same with static properties
960// so that it can keep same with es module or cjs
961const {
962  Axios,
963  AxiosError,
964  CanceledError,
965  isCancel,
966  CancelToken,
967  VERSION,
968  all,
969  Cancel,
970  isAxiosError,
971  spread,
972  toFormData,
973  AxiosHeaders,
974  HttpStatusCode,
975  formToJSON,
976  mergeConfig
977} = _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__["default"];
978
979
980
981
982/***/ }),
983
vendor: 2,698 bytes, lines 984-1059
984/***/ "./node_modules/axios/lib/adapters/adapters.js":
985/*!*****************************************************!*\
986  !*** ./node_modules/axios/lib/adapters/adapters.js ***!
987  \*****************************************************/
988/*! exports provided: default */
989/***/ (function(module, __webpack_exports__, __webpack_require__) {
990
991"use strict";
992__webpack_require__.r(__webpack_exports__);
993/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
994/* harmony import */ var _http_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./http.js */ "./node_modules/axios/lib/helpers/null.js");
995/* harmony import */ var _xhr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./xhr.js */ "./node_modules/axios/lib/adapters/xhr.js");
996/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
997
998
999
1000
1001
1002const knownAdapters = {
1003  http: _http_js__WEBPACK_IMPORTED_MODULE_1__["default"],
1004  xhr: _xhr_js__WEBPACK_IMPORTED_MODULE_2__["default"]
1005}
1006
1007_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(knownAdapters, (fn, value) => {
1008  if(fn) {
1009    try {
1010      Object.defineProperty(fn, 'name', {value});
1011    } catch (e) {
1012      // eslint-disable-next-line no-empty
1013    }
1014    Object.defineProperty(fn, 'adapterName', {value});
1015  }
1016});
1017
1018/* harmony default export */ __webpack_exports__["default"] = ({
1019  getAdapter: (adapters) => {
1020    adapters = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(adapters) ? adapters : [adapters];
1021
1022    const {length} = adapters;
1023    let nameOrAdapter;
1024    let adapter;
1025
1026    for (let i = 0; i < length; i++) {
1027      nameOrAdapter = adapters[i];
1028      if((adapter = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {
1029        break;
1030      }
1031    }
1032
1033    if (!adapter) {
1034      if (adapter === false) {
1035        throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__["default"](
1036          `Adapter ${nameOrAdapter} is not supported by the environment`,
1037          'ERR_NOT_SUPPORT'
1038        );
1039      }
1040
1041      throw new Error(
1042        _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(knownAdapters, nameOrAdapter) ?
1043          `Adapter '${nameOrAdapter}' is not available in the build` :
1044          `Unknown adapter '${nameOrAdapter}'`
1045      );
1046    }
1047
1048    if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(adapter)) {
1049      throw new TypeError('adapter is not a function');
1050    }
1051
1052    return adapter;
1053  },
1054  adapters: knownAdapters
1055});
1056
1057
1058/***/ }),
1059
vendor: 11,731 bytes, lines 1060-1334
1060/***/ "./node_modules/axios/lib/adapters/xhr.js":
1061/*!************************************************!*\
1062  !*** ./node_modules/axios/lib/adapters/xhr.js ***!
1063  \************************************************/
1064/*! exports provided: default */
1065/***/ (function(module, __webpack_exports__, __webpack_require__) {
1066
1067"use strict";
1068__webpack_require__.r(__webpack_exports__);
1069/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
1070/* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../core/settle.js */ "./node_modules/axios/lib/core/settle.js");
1071/* harmony import */ var _helpers_cookies_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../helpers/cookies.js */ "./node_modules/axios/lib/helpers/cookies.js");
1072/* harmony import */ var _helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../helpers/buildURL.js */ "./node_modules/axios/lib/helpers/buildURL.js");
1073/* harmony import */ var _core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/buildFullPath.js */ "./node_modules/axios/lib/core/buildFullPath.js");
1074/* harmony import */ var _helpers_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../helpers/isURLSameOrigin.js */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js");
1075/* harmony import */ var _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../defaults/transitional.js */ "./node_modules/axios/lib/defaults/transitional.js");
1076/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
1077/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../cancel/CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js");
1078/* harmony import */ var _helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../helpers/parseProtocol.js */ "./node_modules/axios/lib/helpers/parseProtocol.js");
1079/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js");
1080/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js");
1081/* harmony import */ var _helpers_speedometer_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../helpers/speedometer.js */ "./node_modules/axios/lib/helpers/speedometer.js");
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098function progressEventReducer(listener, isDownloadStream) {
1099  let bytesNotified = 0;
1100  const _speedometer = Object(_helpers_speedometer_js__WEBPACK_IMPORTED_MODULE_12__["default"])(50, 250);
1101
1102  return e => {
1103    const loaded = e.loaded;
1104    const total = e.lengthComputable ? e.total : undefined;
1105    const progressBytes = loaded - bytesNotified;
1106    const rate = _speedometer(progressBytes);
1107    const inRange = loaded <= total;
1108
1109    bytesNotified = loaded;
1110
1111    const data = {
1112      loaded,
1113      total,
1114      progress: total ? (loaded / total) : undefined,
1115      bytes: progressBytes,
1116      rate: rate ? rate : undefined,
1117      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
1118      event: e
1119    };
1120
1121    data[isDownloadStream ? 'download' : 'upload'] = true;
1122
1123    listener(data);
1124  };
1125}
1126
1127const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
1128
1129/* harmony default export */ __webpack_exports__["default"] = (isXHRAdapterSupported && function (config) {
1130  return new Promise(function dispatchXhrRequest(resolve, reject) {
1131    let requestData = config.data;
1132    const requestHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_11__["default"].from(config.headers).normalize();
1133    const responseType = config.responseType;
1134    let onCanceled;
1135    function done() {
1136      if (config.cancelToken) {
1137        config.cancelToken.unsubscribe(onCanceled);
1138      }
1139
1140      if (config.signal) {
1141        config.signal.removeEventListener('abort', onCanceled);
1142      }
1143    }
1144
1145    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(requestData) && (_platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].isStandardBrowserEnv || _platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].isStandardBrowserWebWorkerEnv)) {
1146      requestHeaders.setContentType(false); // Let the browser set it
1147    }
1148
1149    let request = new XMLHttpRequest();
1150
1151    // HTTP basic authentication
1152    if (config.auth) {
1153      const username = config.auth.username || '';
1154      const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
1155      requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));
1156    }
1157
1158    const fullPath = Object(_core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_4__["default"])(config.baseURL, config.url);
1159
1160    request.open(config.method.toUpperCase(), Object(_helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_3__["default"])(fullPath, config.params, config.paramsSerializer), true);
1161
1162    // Set the request timeout in MS
1163    request.timeout = config.timeout;
1164
1165    function onloadend() {
1166      if (!request) {
1167        return;
1168      }
1169      // Prepare the response
1170      const responseHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_11__["default"].from(
1171        'getAllResponseHeaders' in request && request.getAllResponseHeaders()
1172      );
1173      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?
1174        request.responseText : request.response;
1175      const response = {
1176        data: responseData,
1177        status: request.status,
1178        statusText: request.statusText,
1179        headers: responseHeaders,
1180        config,
1181        request
1182      };
1183
1184      Object(_core_settle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function _resolve(value) {
1185        resolve(value);
1186        done();
1187      }, function _reject(err) {
1188        reject(err);
1189        done();
1190      }, response);
1191
1192      // Clean up request
1193      request = null;
1194    }
1195
1196    if ('onloadend' in request) {
1197      // Use onloadend if available
1198      request.onloadend = onloadend;
1199    } else {
1200      // Listen for ready state to emulate onloadend
1201      request.onreadystatechange = function handleLoad() {
1202        if (!request || request.readyState !== 4) {
1203          return;
1204        }
1205
1206        // The request errored out and we didn't get a response, this will be
1207        // handled by onerror instead
1208        // With one exception: request that using file: protocol, most browsers
1209        // will return status as 0 even though it's a successful request
1210        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
1211          return;
1212        }
1213        // readystate handler is calling before onerror or ontimeout handlers,
1214        // so we should call onloadend on the next 'tick'
1215        setTimeout(onloadend);
1216      };
1217    }
1218
1219    // Handle browser request cancellation (as opposed to a manual cancellation)
1220    request.onabort = function handleAbort() {
1221      if (!request) {
1222        return;
1223      }
1224
1225      reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]('Request aborted', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ECONNABORTED, config, request));
1226
1227      // Clean up request
1228      request = null;
1229    };
1230
1231    // Handle low level network errors
1232    request.onerror = function handleError() {
1233      // Real errors are hidden from us by the browser
1234      // onerror should only fire if it's a network error
1235      reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]('Network Error', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ERR_NETWORK, config, request));
1236
1237      // Clean up request
1238      request = null;
1239    };
1240
1241    // Handle timeout
1242    request.ontimeout = function handleTimeout() {
1243      let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
1244      const transitional = config.transitional || _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_6__["default"];
1245      if (config.timeoutErrorMessage) {
1246        timeoutErrorMessage = config.timeoutErrorMessage;
1247      }
1248      reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"](
1249        timeoutErrorMessage,
1250        transitional.clarifyTimeoutError ? _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ETIMEDOUT : _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ECONNABORTED,
1251        config,
1252        request));
1253
1254      // Clean up request
1255      request = null;
1256    };
1257
1258    // Add xsrf header
1259    // This is only done if running in a standard browser environment.
1260    // Specifically not if we're in a web worker, or react-native.
1261    if (_platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].isStandardBrowserEnv) {
1262      // Add xsrf header
1263      const xsrfValue = (config.withCredentials || Object(_helpers_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_5__["default"])(fullPath))
1264        && config.xsrfCookieName && _helpers_cookies_js__WEBPACK_IMPORTED_MODULE_2__["default"].read(config.xsrfCookieName);
1265
1266      if (xsrfValue) {
1267        requestHeaders.set(config.xsrfHeaderName, xsrfValue);
1268      }
1269    }
1270
1271    // Remove Content-Type if data is undefined
1272    requestData === undefined && requestHeaders.setContentType(null);
1273
1274    // Add headers to the request
1275    if ('setRequestHeader' in request) {
1276      _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
1277        request.setRequestHeader(key, val);
1278      });
1279    }
1280
1281    // Add withCredentials to request if needed
1282    if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(config.withCredentials)) {
1283      request.withCredentials = !!config.withCredentials;
1284    }
1285
1286    // Add responseType to request if needed
1287    if (responseType && responseType !== 'json') {
1288      request.responseType = config.responseType;
1289    }
1290
1291    // Handle progress if needed
1292    if (typeof config.onDownloadProgress === 'function') {
1293      request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));
1294    }
1295
1296    // Not all browsers support upload events
1297    if (typeof config.onUploadProgress === 'function' && request.upload) {
1298      request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));
1299    }
1300
1301    if (config.cancelToken || config.signal) {
1302      // Handle cancellation
1303      // eslint-disable-next-line func-names
1304      onCanceled = cancel => {
1305        if (!request) {
1306          return;
1307        }
1308        reject(!cancel || cancel.type ? new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_8__["default"](null, config, request) : cancel);
1309        request.abort();
1310        request = null;
1311      };
1312
1313      config.cancelToken && config.cancelToken.subscribe(onCanceled);
1314      if (config.signal) {
1315        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);
1316      }
1317    }
1318
1319    const protocol = Object(_helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_9__["default"])(fullPath);
1320
1321    if (protocol && _platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].protocols.indexOf(protocol) === -1) {
1322      reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]('Unsupported protocol ' + protocol + ':', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ERR_BAD_REQUEST, config));
1323      return;
1324    }
1325
1326
1327    // Send the request
1328    request.send(requestData || null);
1329  });
1330});
1331
1332
1333/***/ }),
1334
vendor: 6,010 bytes, lines 1335-1449
1335/***/ "./node_modules/axios/lib/axios.js":
1336/*!*****************************************!*\
1337  !*** ./node_modules/axios/lib/axios.js ***!
1338  \*****************************************/
1339/*! exports provided: default */
1340/***/ (function(module, __webpack_exports__, __webpack_require__) {
1341
1342"use strict";
1343__webpack_require__.r(__webpack_exports__);
1344/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/axios/lib/utils.js");
1345/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/bind.js */ "./node_modules/axios/lib/helpers/bind.js");
1346/* harmony import */ var _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core/Axios.js */ "./node_modules/axios/lib/core/Axios.js");
1347/* harmony import */ var _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./core/mergeConfig.js */ "./node_modules/axios/lib/core/mergeConfig.js");
1348/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaults/index.js */ "./node_modules/axios/lib/defaults/index.js");
1349/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers/formDataToJSON.js */ "./node_modules/axios/lib/helpers/formDataToJSON.js");
1350/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cancel/CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js");
1351/* harmony import */ var _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cancel/CancelToken.js */ "./node_modules/axios/lib/cancel/CancelToken.js");
1352/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./cancel/isCancel.js */ "./node_modules/axios/lib/cancel/isCancel.js");
1353/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./env/data.js */ "./node_modules/axios/lib/env/data.js");
1354/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./helpers/toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js");
1355/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
1356/* harmony import */ var _helpers_spread_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./helpers/spread.js */ "./node_modules/axios/lib/helpers/spread.js");
1357/* harmony import */ var _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./helpers/isAxiosError.js */ "./node_modules/axios/lib/helpers/isAxiosError.js");
1358/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js");
1359/* harmony import */ var _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./helpers/HttpStatusCode.js */ "./node_modules/axios/lib/helpers/HttpStatusCode.js");
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379/**
1380 * Create an instance of Axios
1381 *
1382 * @param {Object} defaultConfig The default config for the instance
1383 *
1384 * @returns {Axios} A new instance of Axios
1385 */
1386function createInstance(defaultConfig) {
1387  const context = new _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"](defaultConfig);
1388  const instance = Object(_helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"].prototype.request, context);
1389
1390  // Copy axios.prototype to instance
1391  _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].extend(instance, _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"].prototype, context, {allOwnKeys: true});
1392
1393  // Copy context to instance
1394  _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].extend(instance, context, null, {allOwnKeys: true});
1395
1396  // Factory for creating new instances
1397  instance.create = function create(instanceConfig) {
1398    return createInstance(Object(_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__["default"])(defaultConfig, instanceConfig));
1399  };
1400
1401  return instance;
1402}
1403
1404// Create the default instance to be exported
1405const axios = createInstance(_defaults_index_js__WEBPACK_IMPORTED_MODULE_4__["default"]);
1406
1407// Expose Axios class to allow class inheritance
1408axios.Axios = _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"];
1409
1410// Expose Cancel & CancelToken
1411axios.CanceledError = _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_6__["default"];
1412axios.CancelToken = _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_7__["default"];
1413axios.isCancel = _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_8__["default"];
1414axios.VERSION = _env_data_js__WEBPACK_IMPORTED_MODULE_9__["VERSION"];
1415axios.toFormData = _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_10__["default"];
1416
1417// Expose AxiosError class
1418axios.AxiosError = _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_11__["default"];
1419
1420// alias for CanceledError for backward compatibility
1421axios.Cancel = axios.CanceledError;
1422
1423// Expose all/spread
1424axios.all = function all(promises) {
1425  return Promise.all(promises);
1426};
1427
1428axios.spread = _helpers_spread_js__WEBPACK_IMPORTED_MODULE_12__["default"];
1429
1430// Expose isAxiosError
1431axios.isAxiosError = _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_13__["default"];
1432
1433// Expose mergeConfig
1434axios.mergeConfig = _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__["default"];
1435
1436axios.AxiosHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_14__["default"];
1437
1438axios.formToJSON = thing => Object(_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isHTMLForm(thing) ? new FormData(thing) : thing);
1439
1440axios.HttpStatusCode = _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_15__["default"];
1441
1442axios.default = axios;
1443
1444// this module should only have a default export
1445/* harmony default export */ __webpack_exports__["default"] = (axios);
1446
1447
1448/***/ }),
1449
vendor: 3,139 bytes, lines 1450-1584
1450/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
1451/*!******************************************************!*\
1452  !*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
1453  \******************************************************/
1454/*! exports provided: default */
1455/***/ (function(module, __webpack_exports__, __webpack_require__) {
1456
1457"use strict";
1458__webpack_require__.r(__webpack_exports__);
1459/* harmony import */ var _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js");
1460
1461
1462
1463
1464/**
1465 * A `CancelToken` is an object that can be used to request cancellation of an operation.
1466 *
1467 * @param {Function} executor The executor function.
1468 *
1469 * @returns {CancelToken}
1470 */
1471class CancelToken {
1472  constructor(executor) {
1473    if (typeof executor !== 'function') {
1474      throw new TypeError('executor must be a function.');
1475    }
1476
1477    let resolvePromise;
1478
1479    this.promise = new Promise(function promiseExecutor(resolve) {
1480      resolvePromise = resolve;
1481    });
1482
1483    const token = this;
1484
1485    // eslint-disable-next-line func-names
1486    this.promise.then(cancel => {
1487      if (!token._listeners) return;
1488
1489      let i = token._listeners.length;
1490
1491      while (i-- > 0) {
1492        token._listeners[i](cancel);
1493      }
1494      token._listeners = null;
1495    });
1496
1497    // eslint-disable-next-line func-names
1498    this.promise.then = onfulfilled => {
1499      let _resolve;
1500      // eslint-disable-next-line func-names
1501      const promise = new Promise(resolve => {
1502        token.subscribe(resolve);
1503        _resolve = resolve;
1504      }).then(onfulfilled);
1505
1506      promise.cancel = function reject() {
1507        token.unsubscribe(_resolve);
1508      };
1509
1510      return promise;
1511    };
1512
1513    executor(function cancel(message, config, request) {
1514      if (token.reason) {
1515        // Cancellation has already been requested
1516        return;
1517      }
1518
1519      token.reason = new _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__["default"](message, config, request);
1520      resolvePromise(token.reason);
1521    });
1522  }
1523
1524  /**
1525   * Throws a `CanceledError` if cancellation has been requested.
1526   */
1527  throwIfRequested() {
1528    if (this.reason) {
1529      throw this.reason;
1530    }
1531  }
1532
1533  /**
1534   * Subscribe to the cancel signal
1535   */
1536
1537  subscribe(listener) {
1538    if (this.reason) {
1539      listener(this.reason);
1540      return;
1541    }
1542
1543    if (this._listeners) {
1544      this._listeners.push(listener);
1545    } else {
1546      this._listeners = [listener];
1547    }
1548  }
1549
1550  /**
1551   * Unsubscribe from the cancel signal
1552   */
1553
1554  unsubscribe(listener) {
1555    if (!this._listeners) {
1556      return;
1557    }
1558    const index = this._listeners.indexOf(listener);
1559    if (index !== -1) {
1560      this._listeners.splice(index, 1);
1561    }
1562  }
1563
1564  /**
1565   * Returns an object that contains a new `CancelToken` and a function that, when called,
1566   * cancels the `CancelToken`.
1567   */
1568  static source() {
1569    let cancel;
1570    const token = new CancelToken(function executor(c) {
1571      cancel = c;
1572    });
1573    return {
1574      token,
1575      cancel
1576    };
1577  }
1578}
1579
1580/* harmony default export */ __webpack_exports__["default"] = (CancelToken);
1581
1582
1583/***/ }),
1584
vendor: 1,577 bytes, lines 1585-1624
1585/***/ "./node_modules/axios/lib/cancel/CanceledError.js":
1586/*!********************************************************!*\
1587  !*** ./node_modules/axios/lib/cancel/CanceledError.js ***!
1588  \********************************************************/
1589/*! exports provided: default */
1590/***/ (function(module, __webpack_exports__, __webpack_require__) {
1591
1592"use strict";
1593__webpack_require__.r(__webpack_exports__);
1594/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
1595/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
1596
1597
1598
1599
1600
1601/**
1602 * A `CanceledError` is an object that is thrown when an operation is canceled.
1603 *
1604 * @param {string=} message The message.
1605 * @param {Object=} config The config.
1606 * @param {Object=} request The request.
1607 *
1608 * @returns {CanceledError} The created error.
1609 */
1610function CanceledError(message, config, request) {
1611  // eslint-disable-next-line no-eq-null,eqeqeq
1612  _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(this, message == null ? 'canceled' : message, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_CANCELED, config, request);
1613  this.name = 'CanceledError';
1614}
1615
1616_utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].inherits(CanceledError, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"], {
1617  __CANCEL__: true
1618});
1619
1620/* harmony default export */ __webpack_exports__["default"] = (CanceledError);
1621
1622
1623/***/ }),
1624
vendor: 586 bytes, lines 1625-1643
1625/***/ "./node_modules/axios/lib/cancel/isCancel.js":
1626/*!***************************************************!*\
1627  !*** ./node_modules/axios/lib/cancel/isCancel.js ***!
1628  \***************************************************/
1629/*! exports provided: default */
1630/***/ (function(module, __webpack_exports__, __webpack_require__) {
1631
1632"use strict";
1633__webpack_require__.r(__webpack_exports__);
1634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isCancel; });
1635
1636
1637function isCancel(value) {
1638  return !!(value && value.__CANCEL__);
1639}
1640
1641
1642/***/ }),
1643
vendor: 7,737 bytes, lines 1644-1861
1644/***/ "./node_modules/axios/lib/core/Axios.js":
1645/*!**********************************************!*\
1646  !*** ./node_modules/axios/lib/core/Axios.js ***!
1647  \**********************************************/
1648/*! exports provided: default */
1649/***/ (function(module, __webpack_exports__, __webpack_require__) {
1650
1651"use strict";
1652__webpack_require__.r(__webpack_exports__);
1653/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
1654/* harmony import */ var _helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/buildURL.js */ "./node_modules/axios/lib/helpers/buildURL.js");
1655/* harmony import */ var _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InterceptorManager.js */ "./node_modules/axios/lib/core/InterceptorManager.js");
1656/* harmony import */ var _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dispatchRequest.js */ "./node_modules/axios/lib/core/dispatchRequest.js");
1657/* harmony import */ var _mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mergeConfig.js */ "./node_modules/axios/lib/core/mergeConfig.js");
1658/* harmony import */ var _buildFullPath_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buildFullPath.js */ "./node_modules/axios/lib/core/buildFullPath.js");
1659/* harmony import */ var _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/validator.js */ "./node_modules/axios/lib/helpers/validator.js");
1660/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js");
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672const validators = _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__["default"].validators;
1673
1674/**
1675 * Create a new instance of Axios
1676 *
1677 * @param {Object} instanceConfig The default config for the instance
1678 *
1679 * @return {Axios} A new instance of Axios
1680 */
1681class Axios {
1682  constructor(instanceConfig) {
1683    this.defaults = instanceConfig;
1684    this.interceptors = {
1685      request: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_2__["default"](),
1686      response: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_2__["default"]()
1687    };
1688  }
1689
1690  /**
1691   * Dispatch a request
1692   *
1693   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
1694   * @param {?Object} config
1695   *
1696   * @returns {Promise} The Promise to be fulfilled
1697   */
1698  request(configOrUrl, config) {
1699    /*eslint no-param-reassign:0*/
1700    // Allow for axios('example/url'[, config]) a la fetch API
1701    if (typeof configOrUrl === 'string') {
1702      config = config || {};
1703      config.url = configOrUrl;
1704    } else {
1705      config = configOrUrl || {};
1706    }
1707
1708    config = Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(this.defaults, config);
1709
1710    const {transitional, paramsSerializer, headers} = config;
1711
1712    if (transitional !== undefined) {
1713      _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__["default"].assertOptions(transitional, {
1714        silentJSONParsing: validators.transitional(validators.boolean),
1715        forcedJSONParsing: validators.transitional(validators.boolean),
1716        clarifyTimeoutError: validators.transitional(validators.boolean)
1717      }, false);
1718    }
1719
1720    if (paramsSerializer !== undefined) {
1721      _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__["default"].assertOptions(paramsSerializer, {
1722        encode: validators.function,
1723        serialize: validators.function
1724      }, true);
1725    }
1726
1727    // Set config.method
1728    config.method = (config.method || this.defaults.method || 'get').toLowerCase();
1729
1730    let contextHeaders;
1731
1732    // Flatten headers
1733    contextHeaders = headers && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge(
1734      headers.common,
1735      headers[config.method]
1736    );
1737
1738    contextHeaders && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(
1739      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
1740      (method) => {
1741        delete headers[method];
1742      }
1743    );
1744
1745    config.headers = _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_7__["default"].concat(contextHeaders, headers);
1746
1747    // filter out skipped interceptors
1748    const requestInterceptorChain = [];
1749    let synchronousRequestInterceptors = true;
1750    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
1751      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
1752        return;
1753      }
1754
1755      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
1756
1757      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
1758    });
1759
1760    const responseInterceptorChain = [];
1761    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
1762      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
1763    });
1764
1765    let promise;
1766    let i = 0;
1767    let len;
1768
1769    if (!synchronousRequestInterceptors) {
1770      const chain = [_dispatchRequest_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(this), undefined];
1771      chain.unshift.apply(chain, requestInterceptorChain);
1772      chain.push.apply(chain, responseInterceptorChain);
1773      len = chain.length;
1774
1775      promise = Promise.resolve(config);
1776
1777      while (i < len) {
1778        promise = promise.then(chain[i++], chain[i++]);
1779      }
1780
1781      return promise;
1782    }
1783
1784    len = requestInterceptorChain.length;
1785
1786    let newConfig = config;
1787
1788    i = 0;
1789
1790    while (i < len) {
1791      const onFulfilled = requestInterceptorChain[i++];
1792      const onRejected = requestInterceptorChain[i++];
1793      try {
1794        newConfig = onFulfilled(newConfig);
1795      } catch (error) {
1796        onRejected.call(this, error);
1797        break;
1798      }
1799    }
1800
1801    try {
1802      promise = _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_3__["default"].call(this, newConfig);
1803    } catch (error) {
1804      return Promise.reject(error);
1805    }
1806
1807    i = 0;
1808    len = responseInterceptorChain.length;
1809
1810    while (i < len) {
1811      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
1812    }
1813
1814    return promise;
1815  }
1816
1817  getUri(config) {
1818    config = Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(this.defaults, config);
1819    const fullPath = Object(_buildFullPath_js__WEBPACK_IMPORTED_MODULE_5__["default"])(config.baseURL, config.url);
1820    return Object(_helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fullPath, config.params, config.paramsSerializer);
1821  }
1822}
1823
1824// Provide aliases for supported request methods
1825_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
1826  /*eslint func-names:0*/
1827  Axios.prototype[method] = function(url, config) {
1828    return this.request(Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(config || {}, {
1829      method,
1830      url,
1831      data: (config || {}).data
1832    }));
1833  };
1834});
1835
1836_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
1837  /*eslint func-names:0*/
1838
1839  function generateHTTPMethod(isForm) {
1840    return function httpMethod(url, data, config) {
1841      return this.request(Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(config || {}, {
1842        method,
1843        headers: isForm ? {
1844          'Content-Type': 'multipart/form-data'
1845        } : {},
1846        url,
1847        data
1848      }));
1849    };
1850  }
1851
1852  Axios.prototype[method] = generateHTTPMethod();
1853
1854  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
1855});
1856
1857/* harmony default export */ __webpack_exports__["default"] = (Axios);
1858
1859
1860/***/ }),
1861
vendor: 3,207 bytes, lines 1862-1975
1862/***/ "./node_modules/axios/lib/core/AxiosError.js":
1863/*!***************************************************!*\
1864  !*** ./node_modules/axios/lib/core/AxiosError.js ***!
1865  \***************************************************/
1866/*! exports provided: default */
1867/***/ (function(module, __webpack_exports__, __webpack_require__) {
1868
1869"use strict";
1870__webpack_require__.r(__webpack_exports__);
1871/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
1872
1873
1874
1875
1876/**
1877 * Create an Error with the specified message, config, error code, request and response.
1878 *
1879 * @param {string} message The error message.
1880 * @param {string} [code] The error code (for example, 'ECONNABORTED').
1881 * @param {Object} [config] The config.
1882 * @param {Object} [request] The request.
1883 * @param {Object} [response] The response.
1884 *
1885 * @returns {Error} The created error.
1886 */
1887function AxiosError(message, code, config, request, response) {
1888  Error.call(this);
1889
1890  if (Error.captureStackTrace) {
1891    Error.captureStackTrace(this, this.constructor);
1892  } else {
1893    this.stack = (new Error()).stack;
1894  }
1895
1896  this.message = message;
1897  this.name = 'AxiosError';
1898  code && (this.code = code);
1899  config && (this.config = config);
1900  request && (this.request = request);
1901  response && (this.response = response);
1902}
1903
1904_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].inherits(AxiosError, Error, {
1905  toJSON: function toJSON() {
1906    return {
1907      // Standard
1908      message: this.message,
1909      name: this.name,
1910      // Microsoft
1911      description: this.description,
1912      number: this.number,
1913      // Mozilla
1914      fileName: this.fileName,
1915      lineNumber: this.lineNumber,
1916      columnNumber: this.columnNumber,
1917      stack: this.stack,
1918      // Axios
1919      config: _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toJSONObject(this.config),
1920      code: this.code,
1921      status: this.response && this.response.status ? this.response.status : null
1922    };
1923  }
1924});
1925
1926const prototype = AxiosError.prototype;
1927const descriptors = {};
1928
1929[
1930  'ERR_BAD_OPTION_VALUE',
1931  'ERR_BAD_OPTION',
1932  'ECONNABORTED',
1933  'ETIMEDOUT',
1934  'ERR_NETWORK',
1935  'ERR_FR_TOO_MANY_REDIRECTS',
1936  'ERR_DEPRECATED',
1937  'ERR_BAD_RESPONSE',
1938  'ERR_BAD_REQUEST',
1939  'ERR_CANCELED',
1940  'ERR_NOT_SUPPORT',
1941  'ERR_INVALID_URL'
1942// eslint-disable-next-line func-names
1943].forEach(code => {
1944  descriptors[code] = {value: code};
1945});
1946
1947Object.defineProperties(AxiosError, descriptors);
1948Object.defineProperty(prototype, 'isAxiosError', {value: true});
1949
1950// eslint-disable-next-line func-names
1951AxiosError.from = (error, code, config, request, response, customProps) => {
1952  const axiosError = Object.create(prototype);
1953
1954  _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toFlatObject(error, axiosError, function filter(obj) {
1955    return obj !== Error.prototype;
1956  }, prop => {
1957    return prop !== 'isAxiosError';
1958  });
1959
1960  AxiosError.call(axiosError, error.message, code, config, request, response);
1961
1962  axiosError.cause = error;
1963
1964  axiosError.name = error.name;
1965
1966  customProps && Object.assign(axiosError, customProps);
1967
1968  return axiosError;
1969};
1970
1971/* harmony default export */ __webpack_exports__["default"] = (AxiosError);
1972
1973
1974/***/ }),
1975
vendor: 8,055 bytes, lines 1976-2264
1976/***/ "./node_modules/axios/lib/core/AxiosHeaders.js":
1977/*!*****************************************************!*\
1978  !*** ./node_modules/axios/lib/core/AxiosHeaders.js ***!
1979  \*****************************************************/
1980/*! exports provided: default */
1981/***/ (function(module, __webpack_exports__, __webpack_require__) {
1982
1983"use strict";
1984__webpack_require__.r(__webpack_exports__);
1985/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
1986/* harmony import */ var _helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/parseHeaders.js */ "./node_modules/axios/lib/helpers/parseHeaders.js");
1987
1988
1989
1990
1991
1992const $internals = Symbol('internals');
1993
1994function normalizeHeader(header) {
1995  return header && String(header).trim().toLowerCase();
1996}
1997
1998function normalizeValue(value) {
1999  if (value === false || value == null) {
2000    return value;
2001  }
2002
2003  return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) ? value.map(normalizeValue) : String(value);
2004}
2005
2006function parseTokens(str) {
2007  const tokens = Object.create(null);
2008  const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
2009  let match;
2010
2011  while ((match = tokensRE.exec(str))) {
2012    tokens[match[1]] = match[2];
2013  }
2014
2015  return tokens;
2016}
2017
2018function isValidHeaderName(str) {
2019  return /^[-_a-zA-Z]+$/.test(str.trim());
2020}
2021
2022function matchHeaderValue(context, value, header, filter) {
2023  if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(filter)) {
2024    return filter.call(this, value, header);
2025  }
2026
2027  if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(value)) return;
2028
2029  if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(filter)) {
2030    return value.indexOf(filter) !== -1;
2031  }
2032
2033  if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isRegExp(filter)) {
2034    return filter.test(value);
2035  }
2036}
2037
2038function formatHeader(header) {
2039  return header.trim()
2040    .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
2041      return char.toUpperCase() + str;
2042    });
2043}
2044
2045function buildAccessors(obj, header) {
2046  const accessorName = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toCamelCase(' ' + header);
2047
2048  ['get', 'set', 'has'].forEach(methodName => {
2049    Object.defineProperty(obj, methodName + accessorName, {
2050      value: function(arg1, arg2, arg3) {
2051        return this[methodName].call(this, header, arg1, arg2, arg3);
2052      },
2053      configurable: true
2054    });
2055  });
2056}
2057
2058class AxiosHeaders {
2059  constructor(headers) {
2060    headers && this.set(headers);
2061  }
2062
2063  set(header, valueOrRewrite, rewrite) {
2064    const self = this;
2065
2066    function setHeader(_value, _header, _rewrite) {
2067      const lHeader = normalizeHeader(_header);
2068
2069      if (!lHeader) {
2070        throw new Error('header name must be a non-empty string');
2071      }
2072
2073      const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(self, lHeader);
2074
2075      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {
2076        self[key || _header] = normalizeValue(_value);
2077      }
2078    }
2079
2080    const setHeaders = (headers, _rewrite) =>
2081      _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
2082
2083    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(header) || header instanceof this.constructor) {
2084      setHeaders(header, valueOrRewrite)
2085    } else if(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
2086      setHeaders(Object(_helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__["default"])(header), valueOrRewrite);
2087    } else {
2088      header != null && setHeader(valueOrRewrite, header, rewrite);
2089    }
2090
2091    return this;
2092  }
2093
2094  get(header, parser) {
2095    header = normalizeHeader(header);
2096
2097    if (header) {
2098      const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(this, header);
2099
2100      if (key) {
2101        const value = this[key];
2102
2103        if (!parser) {
2104          return value;
2105        }
2106
2107        if (parser === true) {
2108          return parseTokens(value);
2109        }
2110
2111        if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(parser)) {
2112          return parser.call(this, value, key);
2113        }
2114
2115        if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isRegExp(parser)) {
2116          return parser.exec(value);
2117        }
2118
2119        throw new TypeError('parser must be boolean|regexp|function');
2120      }
2121    }
2122  }
2123
2124  has(header, matcher) {
2125    header = normalizeHeader(header);
2126
2127    if (header) {
2128      const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(this, header);
2129
2130      return !!(key && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
2131    }
2132
2133    return false;
2134  }
2135
2136  delete(header, matcher) {
2137    const self = this;
2138    let deleted = false;
2139
2140    function deleteHeader(_header) {
2141      _header = normalizeHeader(_header);
2142
2143      if (_header) {
2144        const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(self, _header);
2145
2146        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
2147          delete self[key];
2148
2149          deleted = true;
2150        }
2151      }
2152    }
2153
2154    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(header)) {
2155      header.forEach(deleteHeader);
2156    } else {
2157      deleteHeader(header);
2158    }
2159
2160    return deleted;
2161  }
2162
2163  clear() {
2164    return Object.keys(this).forEach(this.delete.bind(this));
2165  }
2166
2167  normalize(format) {
2168    const self = this;
2169    const headers = {};
2170
2171    _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(this, (value, header) => {
2172      const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(headers, header);
2173
2174      if (key) {
2175        self[key] = normalizeValue(value);
2176        delete self[header];
2177        return;
2178      }
2179
2180      const normalized = format ? formatHeader(header) : String(header).trim();
2181
2182      if (normalized !== header) {
2183        delete self[header];
2184      }
2185
2186      self[normalized] = normalizeValue(value);
2187
2188      headers[normalized] = true;
2189    });
2190
2191    return this;
2192  }
2193
2194  concat(...targets) {
2195    return this.constructor.concat(this, ...targets);
2196  }
2197
2198  toJSON(asStrings) {
2199    const obj = Object.create(null);
2200
2201    _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(this, (value, header) => {
2202      value != null && value !== false && (obj[header] = asStrings && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) ? value.join(', ') : value);
2203    });
2204
2205    return obj;
2206  }
2207
2208  [Symbol.iterator]() {
2209    return Object.entries(this.toJSON())[Symbol.iterator]();
2210  }
2211
2212  toString() {
2213    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
2214  }
2215
2216  get [Symbol.toStringTag]() {
2217    return 'AxiosHeaders';
2218  }
2219
2220  static from(thing) {
2221    return thing instanceof this ? thing : new this(thing);
2222  }
2223
2224  static concat(first, ...targets) {
2225    const computed = new this(first);
2226
2227    targets.forEach((target) => computed.set(target));
2228
2229    return computed;
2230  }
2231
2232  static accessor(header) {
2233    const internals = this[$internals] = (this[$internals] = {
2234      accessors: {}
2235    });
2236
2237    const accessors = internals.accessors;
2238    const prototype = this.prototype;
2239
2240    function defineAccessor(_header) {
2241      const lHeader = normalizeHeader(_header);
2242
2243      if (!accessors[lHeader]) {
2244        buildAccessors(prototype, _header);
2245        accessors[lHeader] = true;
2246      }
2247    }
2248
2249    _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
2250
2251    return this;
2252  }
2253}
2254
2255AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent']);
2256
2257_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].freezeMethods(AxiosHeaders.prototype);
2258_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].freezeMethods(AxiosHeaders);
2259
2260/* harmony default export */ __webpack_exports__["default"] = (AxiosHeaders);
2261
2262
2263/***/ }),
2264
vendor: 2,188 bytes, lines 2265-2349
2265/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
2266/*!***********************************************************!*\
2267  !*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
2268  \***********************************************************/
2269/*! exports provided: default */
2270/***/ (function(module, __webpack_exports__, __webpack_require__) {
2271
2272"use strict";
2273__webpack_require__.r(__webpack_exports__);
2274/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
2275
2276
2277
2278
2279class InterceptorManager {
2280  constructor() {
2281    this.handlers = [];
2282  }
2283
2284  /**
2285   * Add a new interceptor to the stack
2286   *
2287   * @param {Function} fulfilled The function to handle `then` for a `Promise`
2288   * @param {Function} rejected The function to handle `reject` for a `Promise`
2289   *
2290   * @return {Number} An ID used to remove interceptor later
2291   */
2292  use(fulfilled, rejected, options) {
2293    this.handlers.push({
2294      fulfilled,
2295      rejected,
2296      synchronous: options ? options.synchronous : false,
2297      runWhen: options ? options.runWhen : null
2298    });
2299    return this.handlers.length - 1;
2300  }
2301
2302  /**
2303   * Remove an interceptor from the stack
2304   *
2305   * @param {Number} id The ID that was returned by `use`
2306   *
2307   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
2308   */
2309  eject(id) {
2310    if (this.handlers[id]) {
2311      this.handlers[id] = null;
2312    }
2313  }
2314
2315  /**
2316   * Clear all interceptors from the stack
2317   *
2318   * @returns {void}
2319   */
2320  clear() {
2321    if (this.handlers) {
2322      this.handlers = [];
2323    }
2324  }
2325
2326  /**
2327   * Iterate over all the registered interceptors
2328   *
2329   * This method is particularly useful for skipping over any
2330   * interceptors that may have become `null` calling `eject`.
2331   *
2332   * @param {Function} fn The function to call for each interceptor
2333   *
2334   * @returns {void}
2335   */
2336  forEach(fn) {
2337    _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(this.handlers, function forEachHandler(h) {
2338      if (h !== null) {
2339        fn(h);
2340      }
2341    });
2342  }
2343}
2344
2345/* harmony default export */ __webpack_exports__["default"] = (InterceptorManager);
2346
2347
2348/***/ }),
2349
vendor: 1,587 bytes, lines 2350-2386
2350/***/ "./node_modules/axios/lib/core/buildFullPath.js":
2351/*!******************************************************!*\
2352  !*** ./node_modules/axios/lib/core/buildFullPath.js ***!
2353  \******************************************************/
2354/*! exports provided: default */
2355/***/ (function(module, __webpack_exports__, __webpack_require__) {
2356
2357"use strict";
2358__webpack_require__.r(__webpack_exports__);
2359/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return buildFullPath; });
2360/* harmony import */ var _helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/isAbsoluteURL.js */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");
2361/* harmony import */ var _helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/combineURLs.js */ "./node_modules/axios/lib/helpers/combineURLs.js");
2362
2363
2364
2365
2366
2367/**
2368 * Creates a new URL by combining the baseURL with the requestedURL,
2369 * only when the requestedURL is not already an absolute URL.
2370 * If the requestURL is absolute, this function returns the requestedURL untouched.
2371 *
2372 * @param {string} baseURL The base URL
2373 * @param {string} requestedURL Absolute or relative URL to combine
2374 *
2375 * @returns {string} The combined full path
2376 */
2377function buildFullPath(baseURL, requestedURL) {
2378  if (baseURL && !Object(_helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__["default"])(requestedURL)) {
2379    return Object(_helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURL, requestedURL);
2380  }
2381  return requestedURL;
2382}
2383
2384
2385/***/ }),
2386
vendor: 3,964 bytes, lines 2387-2487
2387/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
2388/*!********************************************************!*\
2389  !*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
2390  \********************************************************/
2391/*! exports provided: default */
2392/***/ (function(module, __webpack_exports__, __webpack_require__) {
2393
2394"use strict";
2395__webpack_require__.r(__webpack_exports__);
2396/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dispatchRequest; });
2397/* harmony import */ var _transformData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transformData.js */ "./node_modules/axios/lib/core/transformData.js");
2398/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cancel/isCancel.js */ "./node_modules/axios/lib/cancel/isCancel.js");
2399/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../defaults/index.js */ "./node_modules/axios/lib/defaults/index.js");
2400/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cancel/CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js");
2401/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js");
2402/* harmony import */ var _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../adapters/adapters.js */ "./node_modules/axios/lib/adapters/adapters.js");
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412/**
2413 * Throws a `CanceledError` if cancellation has been requested.
2414 *
2415 * @param {Object} config The config that is to be used for the request
2416 *
2417 * @returns {void}
2418 */
2419function throwIfCancellationRequested(config) {
2420  if (config.cancelToken) {
2421    config.cancelToken.throwIfRequested();
2422  }
2423
2424  if (config.signal && config.signal.aborted) {
2425    throw new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_3__["default"](null, config);
2426  }
2427}
2428
2429/**
2430 * Dispatch a request to the server using the configured adapter.
2431 *
2432 * @param {object} config The config that is to be used for the request
2433 *
2434 * @returns {Promise} The Promise to be fulfilled
2435 */
2436function dispatchRequest(config) {
2437  throwIfCancellationRequested(config);
2438
2439  config.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(config.headers);
2440
2441  // Transform request data
2442  config.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(
2443    config,
2444    config.transformRequest
2445  );
2446
2447  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
2448    config.headers.setContentType('application/x-www-form-urlencoded', false);
2449  }
2450
2451  const adapter = _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_5__["default"].getAdapter(config.adapter || _defaults_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].adapter);
2452
2453  return adapter(config).then(function onAdapterResolution(response) {
2454    throwIfCancellationRequested(config);
2455
2456    // Transform response data
2457    response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(
2458      config,
2459      config.transformResponse,
2460      response
2461    );
2462
2463    response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(response.headers);
2464
2465    return response;
2466  }, function onAdapterRejection(reason) {
2467    if (!Object(_cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reason)) {
2468      throwIfCancellationRequested(config);
2469
2470      // Transform response data
2471      if (reason && reason.response) {
2472        reason.response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(
2473          config,
2474          config.transformResponse,
2475          reason.response
2476        );
2477        reason.response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(reason.response.headers);
2478      }
2479    }
2480
2481    return Promise.reject(reason);
2482  });
2483}
2484
2485
2486/***/ }),
2487
vendor: 4,686 bytes, lines 2488-2608
2488/***/ "./node_modules/axios/lib/core/mergeConfig.js":
2489/*!****************************************************!*\
2490  !*** ./node_modules/axios/lib/core/mergeConfig.js ***!
2491  \****************************************************/
2492/*! exports provided: default */
2493/***/ (function(module, __webpack_exports__, __webpack_require__) {
2494
2495"use strict";
2496__webpack_require__.r(__webpack_exports__);
2497/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return mergeConfig; });
2498/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
2499/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js");
2500
2501
2502
2503
2504
2505const headersToObject = (thing) => thing instanceof _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__["default"] ? thing.toJSON() : thing;
2506
2507/**
2508 * Config-specific merge-function which creates a new config-object
2509 * by merging two configuration objects together.
2510 *
2511 * @param {Object} config1
2512 * @param {Object} config2
2513 *
2514 * @returns {Object} New object resulting from merging config2 to config1
2515 */
2516function mergeConfig(config1, config2) {
2517  // eslint-disable-next-line no-param-reassign
2518  config2 = config2 || {};
2519  const config = {};
2520
2521  function getMergedValue(target, source, caseless) {
2522    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(target) && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(source)) {
2523      return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge.call({caseless}, target, source);
2524    } else if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(source)) {
2525      return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge({}, source);
2526    } else if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(source)) {
2527      return source.slice();
2528    }
2529    return source;
2530  }
2531
2532  // eslint-disable-next-line consistent-return
2533  function mergeDeepProperties(a, b, caseless) {
2534    if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(b)) {
2535      return getMergedValue(a, b, caseless);
2536    } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(a)) {
2537      return getMergedValue(undefined, a, caseless);
2538    }
2539  }
2540
2541  // eslint-disable-next-line consistent-return
2542  function valueFromConfig2(a, b) {
2543    if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(b)) {
2544      return getMergedValue(undefined, b);
2545    }
2546  }
2547
2548  // eslint-disable-next-line consistent-return
2549  function defaultToConfig2(a, b) {
2550    if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(b)) {
2551      return getMergedValue(undefined, b);
2552    } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(a)) {
2553      return getMergedValue(undefined, a);
2554    }
2555  }
2556
2557  // eslint-disable-next-line consistent-return
2558  function mergeDirectKeys(a, b, prop) {
2559    if (prop in config2) {
2560      return getMergedValue(a, b);
2561    } else if (prop in config1) {
2562      return getMergedValue(undefined, a);
2563    }
2564  }
2565
2566  const mergeMap = {
2567    url: valueFromConfig2,
2568    method: valueFromConfig2,
2569    data: valueFromConfig2,
2570    baseURL: defaultToConfig2,
2571    transformRequest: defaultToConfig2,
2572    transformResponse: defaultToConfig2,
2573    paramsSerializer: defaultToConfig2,
2574    timeout: defaultToConfig2,
2575    timeoutMessage: defaultToConfig2,
2576    withCredentials: defaultToConfig2,
2577    adapter: defaultToConfig2,
2578    responseType: defaultToConfig2,
2579    xsrfCookieName: defaultToConfig2,
2580    xsrfHeaderName: defaultToConfig2,
2581    onUploadProgress: defaultToConfig2,
2582    onDownloadProgress: defaultToConfig2,
2583    decompress: defaultToConfig2,
2584    maxContentLength: defaultToConfig2,
2585    maxBodyLength: defaultToConfig2,
2586    beforeRedirect: defaultToConfig2,
2587    transport: defaultToConfig2,
2588    httpAgent: defaultToConfig2,
2589    httpsAgent: defaultToConfig2,
2590    cancelToken: defaultToConfig2,
2591    socketPath: defaultToConfig2,
2592    responseEncoding: defaultToConfig2,
2593    validateStatus: mergeDirectKeys,
2594    headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
2595  };
2596
2597  _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
2598    const merge = mergeMap[prop] || mergeDeepProperties;
2599    const configValue = merge(config1[prop], config2[prop], prop);
2600    (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
2601  });
2602
2603  return config;
2604}
2605
2606
2607/***/ }),
2608
vendor: 1,558 bytes, lines 2609-2650
2609/***/ "./node_modules/axios/lib/core/settle.js":
2610/*!***********************************************!*\
2611  !*** ./node_modules/axios/lib/core/settle.js ***!
2612  \***********************************************/
2613/*! exports provided: default */
2614/***/ (function(module, __webpack_exports__, __webpack_require__) {
2615
2616"use strict";
2617__webpack_require__.r(__webpack_exports__);
2618/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return settle; });
2619/* harmony import */ var _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
2620
2621
2622
2623
2624/**
2625 * Resolve or reject a Promise based on response status.
2626 *
2627 * @param {Function} resolve A function that resolves the promise.
2628 * @param {Function} reject A function that rejects the promise.
2629 * @param {object} response The response.
2630 *
2631 * @returns {object} The response.
2632 */
2633function settle(resolve, reject, response) {
2634  const validateStatus = response.config.validateStatus;
2635  if (!response.status || !validateStatus || validateStatus(response.status)) {
2636    resolve(response);
2637  } else {
2638    reject(new _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"](
2639      'Request failed with status code ' + response.status,
2640      [_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_REQUEST, _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
2641      response.config,
2642      response.request,
2643      response
2644    ));
2645  }
2646}
2647
2648
2649/***/ }),
2650
vendor: 1,790 bytes, lines 2651-2695
2651/***/ "./node_modules/axios/lib/core/transformData.js":
2652/*!******************************************************!*\
2653  !*** ./node_modules/axios/lib/core/transformData.js ***!
2654  \******************************************************/
2655/*! exports provided: default */
2656/***/ (function(module, __webpack_exports__, __webpack_require__) {
2657
2658"use strict";
2659__webpack_require__.r(__webpack_exports__);
2660/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transformData; });
2661/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
2662/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../defaults/index.js */ "./node_modules/axios/lib/defaults/index.js");
2663/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js");
2664
2665
2666
2667
2668
2669
2670/**
2671 * Transform the data for a request or a response
2672 *
2673 * @param {Array|Function} fns A single function or Array of functions
2674 * @param {?Object} response The response object
2675 *
2676 * @returns {*} The resulting transformed data
2677 */
2678function transformData(fns, response) {
2679  const config = this || _defaults_index_js__WEBPACK_IMPORTED_MODULE_1__["default"];
2680  const context = response || config;
2681  const headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_2__["default"].from(context.headers);
2682  let data = context.data;
2683
2684  _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(fns, function transform(fn) {
2685    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
2686  });
2687
2688  headers.normalize();
2689
2690  return data;
2691}
2692
2693
2694/***/ }),
2695
vendor: 7,061 bytes, lines 2696-2881
2696/***/ "./node_modules/axios/lib/defaults/index.js":
2697/*!**************************************************!*\
2698  !*** ./node_modules/axios/lib/defaults/index.js ***!
2699  \**************************************************/
2700/*! exports provided: default */
2701/***/ (function(module, __webpack_exports__, __webpack_require__) {
2702
2703"use strict";
2704__webpack_require__.r(__webpack_exports__);
2705/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
2706/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
2707/* harmony import */ var _transitional_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitional.js */ "./node_modules/axios/lib/defaults/transitional.js");
2708/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js");
2709/* harmony import */ var _helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers/toURLEncodedForm.js */ "./node_modules/axios/lib/helpers/toURLEncodedForm.js");
2710/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js");
2711/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/formDataToJSON.js */ "./node_modules/axios/lib/helpers/formDataToJSON.js");
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722const DEFAULT_CONTENT_TYPE = {
2723  'Content-Type': undefined
2724};
2725
2726/**
2727 * It takes a string, tries to parse it, and if it fails, it returns the stringified version
2728 * of the input
2729 *
2730 * @param {any} rawValue - The value to be stringified.
2731 * @param {Function} parser - A function that parses a string into a JavaScript object.
2732 * @param {Function} encoder - A function that takes a value and returns a string.
2733 *
2734 * @returns {string} A stringified version of the rawValue.
2735 */
2736function stringifySafely(rawValue, parser, encoder) {
2737  if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(rawValue)) {
2738    try {
2739      (parser || JSON.parse)(rawValue);
2740      return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].trim(rawValue);
2741    } catch (e) {
2742      if (e.name !== 'SyntaxError') {
2743        throw e;
2744      }
2745    }
2746  }
2747
2748  return (encoder || JSON.stringify)(rawValue);
2749}
2750
2751const defaults = {
2752
2753  transitional: _transitional_js__WEBPACK_IMPORTED_MODULE_2__["default"],
2754
2755  adapter: ['xhr', 'http'],
2756
2757  transformRequest: [function transformRequest(data, headers) {
2758    const contentType = headers.getContentType() || '';
2759    const hasJSONContentType = contentType.indexOf('application/json') > -1;
2760    const isObjectPayload = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(data);
2761
2762    if (isObjectPayload && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isHTMLForm(data)) {
2763      data = new FormData(data);
2764    }
2765
2766    const isFormData = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(data);
2767
2768    if (isFormData) {
2769      if (!hasJSONContentType) {
2770        return data;
2771      }
2772      return hasJSONContentType ? JSON.stringify(Object(_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_6__["default"])(data)) : data;
2773    }
2774
2775    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBuffer(data) ||
2776      _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBuffer(data) ||
2777      _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isStream(data) ||
2778      _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFile(data) ||
2779      _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBlob(data)
2780    ) {
2781      return data;
2782    }
2783    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBufferView(data)) {
2784      return data.buffer;
2785    }
2786    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isURLSearchParams(data)) {
2787      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
2788      return data.toString();
2789    }
2790
2791    let isFileList;
2792
2793    if (isObjectPayload) {
2794      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
2795        return Object(_helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_4__["default"])(data, this.formSerializer).toString();
2796      }
2797
2798      if ((isFileList = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
2799        const _FormData = this.env && this.env.FormData;
2800
2801        return Object(_helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
2802          isFileList ? {'files[]': data} : data,
2803          _FormData && new _FormData(),
2804          this.formSerializer
2805        );
2806      }
2807    }
2808
2809    if (isObjectPayload || hasJSONContentType ) {
2810      headers.setContentType('application/json', false);
2811      return stringifySafely(data);
2812    }
2813
2814    return data;
2815  }],
2816
2817  transformResponse: [function transformResponse(data) {
2818    const transitional = this.transitional || defaults.transitional;
2819    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
2820    const JSONRequested = this.responseType === 'json';
2821
2822    if (data && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
2823      const silentJSONParsing = transitional && transitional.silentJSONParsing;
2824      const strictJSONParsing = !silentJSONParsing && JSONRequested;
2825
2826      try {
2827        return JSON.parse(data);
2828      } catch (e) {
2829        if (strictJSONParsing) {
2830          if (e.name === 'SyntaxError') {
2831            throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].from(e, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_RESPONSE, this, null, this.response);
2832          }
2833          throw e;
2834        }
2835      }
2836    }
2837
2838    return data;
2839  }],
2840
2841  /**
2842   * A timeout in milliseconds to abort a request. If set to 0 (default) a
2843   * timeout is not created.
2844   */
2845  timeout: 0,
2846
2847  xsrfCookieName: 'XSRF-TOKEN',
2848  xsrfHeaderName: 'X-XSRF-TOKEN',
2849
2850  maxContentLength: -1,
2851  maxBodyLength: -1,
2852
2853  env: {
2854    FormData: _platform_index_js__WEBPACK_IMPORTED_MODULE_5__["default"].classes.FormData,
2855    Blob: _platform_index_js__WEBPACK_IMPORTED_MODULE_5__["default"].classes.Blob
2856  },
2857
2858  validateStatus: function validateStatus(status) {
2859    return status >= 200 && status < 300;
2860  },
2861
2862  headers: {
2863    common: {
2864      'Accept': 'application/json, text/plain, */*'
2865    }
2866  }
2867};
2868
2869_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
2870  defaults.headers[method] = {};
2871});
2872
2873_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
2874  defaults.headers[method] = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge(DEFAULT_CONTENT_TYPE);
2875});
2876
2877/* harmony default export */ __webpack_exports__["default"] = (defaults);
2878
2879
2880/***/ }),
2881
vendor: 574 bytes, lines 2882-2901
2882/***/ "./node_modules/axios/lib/defaults/transitional.js":
2883/*!*********************************************************!*\
2884  !*** ./node_modules/axios/lib/defaults/transitional.js ***!
2885  \*********************************************************/
2886/*! exports provided: default */
2887/***/ (function(module, __webpack_exports__, __webpack_require__) {
2888
2889"use strict";
2890__webpack_require__.r(__webpack_exports__);
2891
2892
2893/* harmony default export */ __webpack_exports__["default"] = ({
2894  silentJSONParsing: true,
2895  forcedJSONParsing: true,
2896  clarifyTimeoutError: false
2897});
2898
2899
2900/***/ }),
2901
vendor: 828 bytes, lines 2902-2918
2902/***/ "./node_modules/axios/lib/env/classes/FormData.js":
2903/*!********************************************************!*\
2904  !*** ./node_modules/axios/lib/env/classes/FormData.js ***!
2905  \********************************************************/
2906/*! exports provided: default */
2907/***/ (function(module, __webpack_exports__, __webpack_require__) {
2908
2909"use strict";
2910__webpack_require__.r(__webpack_exports__);
2911/* harmony import */ var form_data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! form-data */ "./node_modules/form-data/lib/browser.js");
2912/* harmony import */ var form_data__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(form_data__WEBPACK_IMPORTED_MODULE_0__);
2913
2914/* harmony default export */ __webpack_exports__["default"] = (form_data__WEBPACK_IMPORTED_MODULE_0___default.a);
2915
2916
2917/***/ }),
2918
vendor: 510 bytes, lines 2919-2932
2919/***/ "./node_modules/axios/lib/env/data.js":
2920/*!********************************************!*\
2921  !*** ./node_modules/axios/lib/env/data.js ***!
2922  \********************************************/
2923/*! exports provided: VERSION */
2924/***/ (function(module, __webpack_exports__, __webpack_require__) {
2925
2926"use strict";
2927__webpack_require__.r(__webpack_exports__);
2928/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; });
2929const VERSION = "1.2.4";
2930
2931/***/ }),
2932
vendor: 2,099 bytes, lines 2933-3004
2933/***/ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js":
2934/*!****************************************************************!*\
2935  !*** ./node_modules/axios/lib/helpers/AxiosURLSearchParams.js ***!
2936  \****************************************************************/
2937/*! exports provided: default */
2938/***/ (function(module, __webpack_exports__, __webpack_require__) {
2939
2940"use strict";
2941__webpack_require__.r(__webpack_exports__);
2942/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js");
2943
2944
2945
2946
2947/**
2948 * It encodes a string by replacing all characters that are not in the unreserved set with
2949 * their percent-encoded equivalents
2950 *
2951 * @param {string} str - The string to encode.
2952 *
2953 * @returns {string} The encoded string.
2954 */
2955function encode(str) {
2956  const charMap = {
2957    '!': '%21',
2958    "'": '%27',
2959    '(': '%28',
2960    ')': '%29',
2961    '~': '%7E',
2962    '%20': '+',
2963    '%00': '\x00'
2964  };
2965  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
2966    return charMap[match];
2967  });
2968}
2969
2970/**
2971 * It takes a params object and converts it to a FormData object
2972 *
2973 * @param {Object<string, any>} params - The parameters to be converted to a FormData object.
2974 * @param {Object<string, any>} options - The options object passed to the Axios constructor.
2975 *
2976 * @returns {void}
2977 */
2978function AxiosURLSearchParams(params, options) {
2979  this._pairs = [];
2980
2981  params && Object(_toFormData_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, this, options);
2982}
2983
2984const prototype = AxiosURLSearchParams.prototype;
2985
2986prototype.append = function append(name, value) {
2987  this._pairs.push([name, value]);
2988};
2989
2990prototype.toString = function toString(encoder) {
2991  const _encode = encoder ? function(value) {
2992    return encoder.call(this, value, encode);
2993  } : encode;
2994
2995  return this._pairs.map(function each(pair) {
2996    return _encode(pair[0]) + '=' + _encode(pair[1]);
2997  }, '').join('&');
2998};
2999
3000/* harmony default export */ __webpack_exports__["default"] = (AxiosURLSearchParams);
3001
3002
3003/***/ }),
3004
vendor: 2,073 bytes, lines 3005-3088
3005/***/ "./node_modules/axios/lib/helpers/HttpStatusCode.js":
3006/*!**********************************************************!*\
3007  !*** ./node_modules/axios/lib/helpers/HttpStatusCode.js ***!
3008  \**********************************************************/
3009/*! exports provided: default */
3010/***/ (function(module, __webpack_exports__, __webpack_require__) {
3011
3012"use strict";
3013__webpack_require__.r(__webpack_exports__);
3014const HttpStatusCode = {
3015  Continue: 100,
3016  SwitchingProtocols: 101,
3017  Processing: 102,
3018  EarlyHints: 103,
3019  Ok: 200,
3020  Created: 201,
3021  Accepted: 202,
3022  NonAuthoritativeInformation: 203,
3023  NoContent: 204,
3024  ResetContent: 205,
3025  PartialContent: 206,
3026  MultiStatus: 207,
3027  AlreadyReported: 208,
3028  ImUsed: 226,
3029  MultipleChoices: 300,
3030  MovedPermanently: 301,
3031  Found: 302,
3032  SeeOther: 303,
3033  NotModified: 304,
3034  UseProxy: 305,
3035  Unused: 306,
3036  TemporaryRedirect: 307,
3037  PermanentRedirect: 308,
3038  BadRequest: 400,
3039  Unauthorized: 401,
3040  PaymentRequired: 402,
3041  Forbidden: 403,
3042  NotFound: 404,
3043  MethodNotAllowed: 405,
3044  NotAcceptable: 406,
3045  ProxyAuthenticationRequired: 407,
3046  RequestTimeout: 408,
3047  Conflict: 409,
3048  Gone: 410,
3049  LengthRequired: 411,
3050  PreconditionFailed: 412,
3051  PayloadTooLarge: 413,
3052  UriTooLong: 414,
3053  UnsupportedMediaType: 415,
3054  RangeNotSatisfiable: 416,
3055  ExpectationFailed: 417,
3056  ImATeapot: 418,
3057  MisdirectedRequest: 421,
3058  UnprocessableEntity: 422,
3059  Locked: 423,
3060  FailedDependency: 424,
3061  TooEarly: 425,
3062  UpgradeRequired: 426,
3063  PreconditionRequired: 428,
3064  TooManyRequests: 429,
3065  RequestHeaderFieldsTooLarge: 431,
3066  UnavailableForLegalReasons: 451,
3067  InternalServerError: 500,
3068  NotImplemented: 501,
3069  BadGateway: 502,
3070  ServiceUnavailable: 503,
3071  GatewayTimeout: 504,
3072  HttpVersionNotSupported: 505,
3073  VariantAlsoNegotiates: 506,
3074  InsufficientStorage: 507,
3075  LoopDetected: 508,
3076  NotExtended: 510,
3077  NetworkAuthenticationRequired: 511,
3078};
3079
3080Object.entries(HttpStatusCode).forEach(([key, value]) => {
3081  HttpStatusCode[value] = key;
3082});
3083
3084/* harmony default export */ __webpack_exports__["default"] = (HttpStatusCode);
3085
3086
3087/***/ }),
3088
vendor: 605 bytes, lines 3089-3109
3089/***/ "./node_modules/axios/lib/helpers/bind.js":
3090/*!************************************************!*\
3091  !*** ./node_modules/axios/lib/helpers/bind.js ***!
3092  \************************************************/
3093/*! exports provided: default */
3094/***/ (function(module, __webpack_exports__, __webpack_require__) {
3095
3096"use strict";
3097__webpack_require__.r(__webpack_exports__);
3098/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bind; });
3099
3100
3101function bind(fn, thisArg) {
3102  return function wrap() {
3103    return fn.apply(thisArg, arguments);
3104  };
3105}
3106
3107
3108/***/ }),
3109
vendor: 2,399 bytes, lines 3110-3188
3110/***/ "./node_modules/axios/lib/helpers/buildURL.js":
3111/*!****************************************************!*\
3112  !*** ./node_modules/axios/lib/helpers/buildURL.js ***!
3113  \****************************************************/
3114/*! exports provided: default */
3115/***/ (function(module, __webpack_exports__, __webpack_require__) {
3116
3117"use strict";
3118__webpack_require__.r(__webpack_exports__);
3119/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return buildURL; });
3120/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
3121/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/AxiosURLSearchParams.js */ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js");
3122
3123
3124
3125
3126
3127/**
3128 * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
3129 * URI encoded counterparts
3130 *
3131 * @param {string} val The value to be encoded.
3132 *
3133 * @returns {string} The encoded value.
3134 */
3135function encode(val) {
3136  return encodeURIComponent(val).
3137    replace(/%3A/gi, ':').
3138    replace(/%24/g, '$').
3139    replace(/%2C/gi, ',').
3140    replace(/%20/g, '+').
3141    replace(/%5B/gi, '[').
3142    replace(/%5D/gi, ']');
3143}
3144
3145/**
3146 * Build a URL by appending params to the end
3147 *
3148 * @param {string} url The base of the url (e.g., http://www.google.com)
3149 * @param {object} [params] The params to be appended
3150 * @param {?object} options
3151 *
3152 * @returns {string} The formatted url
3153 */
3154function buildURL(url, params, options) {
3155  /*eslint no-param-reassign:0*/
3156  if (!params) {
3157    return url;
3158  }
3159  
3160  const _encode = options && options.encode || encode;
3161
3162  const serializeFn = options && options.serialize;
3163
3164  let serializedParams;
3165
3166  if (serializeFn) {
3167    serializedParams = serializeFn(params, options);
3168  } else {
3169    serializedParams = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isURLSearchParams(params) ?
3170      params.toString() :
3171      new _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__["default"](params, options).toString(_encode);
3172  }
3173
3174  if (serializedParams) {
3175    const hashmarkIndex = url.indexOf("#");
3176
3177    if (hashmarkIndex !== -1) {
3178      url = url.slice(0, hashmarkIndex);
3179    }
3180    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
3181  }
3182
3183  return url;
3184}
3185
3186
3187/***/ }),
3188
vendor: 886 bytes, lines 3189-3217
3189/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
3190/*!*******************************************************!*\
3191  !*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
3192  \*******************************************************/
3193/*! exports provided: default */
3194/***/ (function(module, __webpack_exports__, __webpack_require__) {
3195
3196"use strict";
3197__webpack_require__.r(__webpack_exports__);
3198/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineURLs; });
3199
3200
3201/**
3202 * Creates a new URL by combining the specified URLs
3203 *
3204 * @param {string} baseURL The base URL
3205 * @param {string} relativeURL The relative URL
3206 *
3207 * @returns {string} The combined URL
3208 */
3209function combineURLs(baseURL, relativeURL) {
3210  return relativeURL
3211    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
3212    : baseURL;
3213}
3214
3215
3216/***/ }),
3217
vendor: 2,254 bytes, lines 3218-3284
3218/***/ "./node_modules/axios/lib/helpers/cookies.js":
3219/*!***************************************************!*\
3220  !*** ./node_modules/axios/lib/helpers/cookies.js ***!
3221  \***************************************************/
3222/*! exports provided: default */
3223/***/ (function(module, __webpack_exports__, __webpack_require__) {
3224
3225"use strict";
3226__webpack_require__.r(__webpack_exports__);
3227/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
3228/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js");
3229
3230
3231
3232
3233
3234/* harmony default export */ __webpack_exports__["default"] = (_platform_index_js__WEBPACK_IMPORTED_MODULE_1__["default"].isStandardBrowserEnv ?
3235
3236// Standard browser envs support document.cookie
3237  (function standardBrowserEnv() {
3238    return {
3239      write: function write(name, value, expires, path, domain, secure) {
3240        const cookie = [];
3241        cookie.push(name + '=' + encodeURIComponent(value));
3242
3243        if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isNumber(expires)) {
3244          cookie.push('expires=' + new Date(expires).toGMTString());
3245        }
3246
3247        if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(path)) {
3248          cookie.push('path=' + path);
3249        }
3250
3251        if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(domain)) {
3252          cookie.push('domain=' + domain);
3253        }
3254
3255        if (secure === true) {
3256          cookie.push('secure');
3257        }
3258
3259        document.cookie = cookie.join('; ');
3260      },
3261
3262      read: function read(name) {
3263        const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
3264        return (match ? decodeURIComponent(match[3]) : null);
3265      },
3266
3267      remove: function remove(name) {
3268        this.write(name, '', Date.now() - 86400000);
3269      }
3270    };
3271  })() :
3272
3273// Non standard browser env (web workers, react-native) lack needed support.
3274  (function nonStandardBrowserEnv() {
3275    return {
3276      write: function write() {},
3277      read: function read() { return null; },
3278      remove: function remove() {}
3279    };
3280  })());
3281
3282
3283/***/ }),
3284
vendor: 3,042 bytes, lines 3285-3390
3285/***/ "./node_modules/axios/lib/helpers/formDataToJSON.js":
3286/*!**********************************************************!*\
3287  !*** ./node_modules/axios/lib/helpers/formDataToJSON.js ***!
3288  \**********************************************************/
3289/*! exports provided: default */
3290/***/ (function(module, __webpack_exports__, __webpack_require__) {
3291
3292"use strict";
3293__webpack_require__.r(__webpack_exports__);
3294/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
3295
3296
3297
3298
3299/**
3300 * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
3301 *
3302 * @param {string} name - The name of the property to get.
3303 *
3304 * @returns An array of strings.
3305 */
3306function parsePropPath(name) {
3307  // foo[x][y][z]
3308  // foo.x.y.z
3309  // foo-x-y-z
3310  // foo x y z
3311  return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].matchAll(/\w+|\[(\w*)]/g, name).map(match => {
3312    return match[0] === '[]' ? '' : match[1] || match[0];
3313  });
3314}
3315
3316/**
3317 * Convert an array to an object.
3318 *
3319 * @param {Array<any>} arr - The array to convert to an object.
3320 *
3321 * @returns An object with the same keys and values as the array.
3322 */
3323function arrayToObject(arr) {
3324  const obj = {};
3325  const keys = Object.keys(arr);
3326  let i;
3327  const len = keys.length;
3328  let key;
3329  for (i = 0; i < len; i++) {
3330    key = keys[i];
3331    obj[key] = arr[key];
3332  }
3333  return obj;
3334}
3335
3336/**
3337 * It takes a FormData object and returns a JavaScript object
3338 *
3339 * @param {string} formData The FormData object to convert to JSON.
3340 *
3341 * @returns {Object<string, any> | null} The converted object.
3342 */
3343function formDataToJSON(formData) {
3344  function buildPath(path, value, target, index) {
3345    let name = path[index++];
3346    const isNumericKey = Number.isFinite(+name);
3347    const isLast = index >= path.length;
3348    name = !name && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(target) ? target.length : name;
3349
3350    if (isLast) {
3351      if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(target, name)) {
3352        target[name] = [target[name], value];
3353      } else {
3354        target[name] = value;
3355      }
3356
3357      return !isNumericKey;
3358    }
3359
3360    if (!target[name] || !_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(target[name])) {
3361      target[name] = [];
3362    }
3363
3364    const result = buildPath(path, value, target[name], index);
3365
3366    if (result && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(target[name])) {
3367      target[name] = arrayToObject(target[name]);
3368    }
3369
3370    return !isNumericKey;
3371  }
3372
3373  if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(formData) && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(formData.entries)) {
3374    const obj = {};
3375
3376    _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEachEntry(formData, (name, value) => {
3377      buildPath(parsePropPath(name), value, obj, 0);
3378    });
3379
3380    return obj;
3381  }
3382
3383  return null;
3384}
3385
3386/* harmony default export */ __webpack_exports__["default"] = (formDataToJSON);
3387
3388
3389/***/ }),
3390
vendor: 1,077 bytes, lines 3391-3419
3391/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
3392/*!*********************************************************!*\
3393  !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
3394  \*********************************************************/
3395/*! exports provided: default */
3396/***/ (function(module, __webpack_exports__, __webpack_require__) {
3397
3398"use strict";
3399__webpack_require__.r(__webpack_exports__);
3400/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isAbsoluteURL; });
3401
3402
3403/**
3404 * Determines whether the specified URL is absolute
3405 *
3406 * @param {string} url The URL to test
3407 *
3408 * @returns {boolean} True if the specified URL is absolute, otherwise false
3409 */
3410function isAbsoluteURL(url) {
3411  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
3412  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
3413  // by any combination of letters, digits, plus, period, or hyphen.
3414  return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
3415}
3416
3417
3418/***/ }),
3419
vendor: 1,039 bytes, lines 3420-3448
3420/***/ "./node_modules/axios/lib/helpers/isAxiosError.js":
3421/*!********************************************************!*\
3422  !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
3423  \********************************************************/
3424/*! exports provided: default */
3425/***/ (function(module, __webpack_exports__, __webpack_require__) {
3426
3427"use strict";
3428__webpack_require__.r(__webpack_exports__);
3429/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isAxiosError; });
3430/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
3431
3432
3433
3434
3435/**
3436 * Determines whether the payload is an error thrown by Axios
3437 *
3438 * @param {*} payload The value to test
3439 *
3440 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
3441 */
3442function isAxiosError(payload) {
3443  return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(payload) && (payload.isAxiosError === true);
3444}
3445
3446
3447/***/ }),
3448
vendor: 3,062 bytes, lines 3449-3530
3449/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
3450/*!***********************************************************!*\
3451  !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
3452  \***********************************************************/
3453/*! exports provided: default */
3454/***/ (function(module, __webpack_exports__, __webpack_require__) {
3455
3456"use strict";
3457__webpack_require__.r(__webpack_exports__);
3458/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
3459/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js");
3460
3461
3462
3463
3464
3465/* harmony default export */ __webpack_exports__["default"] = (_platform_index_js__WEBPACK_IMPORTED_MODULE_1__["default"].isStandardBrowserEnv ?
3466
3467// Standard browser envs have full support of the APIs needed to test
3468// whether the request URL is of the same origin as current location.
3469  (function standardBrowserEnv() {
3470    const msie = /(msie|trident)/i.test(navigator.userAgent);
3471    const urlParsingNode = document.createElement('a');
3472    let originURL;
3473
3474    /**
3475    * Parse a URL to discover it's components
3476    *
3477    * @param {String} url The URL to be parsed
3478    * @returns {Object}
3479    */
3480    function resolveURL(url) {
3481      let href = url;
3482
3483      if (msie) {
3484        // IE needs attribute set twice to normalize properties
3485        urlParsingNode.setAttribute('href', href);
3486        href = urlParsingNode.href;
3487      }
3488
3489      urlParsingNode.setAttribute('href', href);
3490
3491      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
3492      return {
3493        href: urlParsingNode.href,
3494        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
3495        host: urlParsingNode.host,
3496        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
3497        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
3498        hostname: urlParsingNode.hostname,
3499        port: urlParsingNode.port,
3500        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
3501          urlParsingNode.pathname :
3502          '/' + urlParsingNode.pathname
3503      };
3504    }
3505
3506    originURL = resolveURL(window.location.href);
3507
3508    /**
3509    * Determine if a URL shares the same origin as the current location
3510    *
3511    * @param {String} requestURL The URL to test
3512    * @returns {boolean} True if URL shares the same origin, otherwise false
3513    */
3514    return function isURLSameOrigin(requestURL) {
3515      const parsed = (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(requestURL)) ? resolveURL(requestURL) : requestURL;
3516      return (parsed.protocol === originURL.protocol &&
3517          parsed.host === originURL.host);
3518    };
3519  })() :
3520
3521  // Non standard browser envs (web workers, react-native) lack needed support.
3522  (function nonStandardBrowserEnv() {
3523    return function isURLSameOrigin() {
3524      return true;
3525    };
3526  })());
3527
3528
3529/***/ }),
3530
vendor: 489 bytes, lines 3531-3545
3531/***/ "./node_modules/axios/lib/helpers/null.js":
3532/*!************************************************!*\
3533  !*** ./node_modules/axios/lib/helpers/null.js ***!
3534  \************************************************/
3535/*! exports provided: default */
3536/***/ (function(module, __webpack_exports__, __webpack_require__) {
3537
3538"use strict";
3539__webpack_require__.r(__webpack_exports__);
3540// eslint-disable-next-line strict
3541/* harmony default export */ __webpack_exports__["default"] = (null);
3542
3543
3544/***/ }),
3545
vendor: 1,989 bytes, lines 3546-3614
3546/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
3547/*!********************************************************!*\
3548  !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
3549  \********************************************************/
3550/*! exports provided: default */
3551/***/ (function(module, __webpack_exports__, __webpack_require__) {
3552
3553"use strict";
3554__webpack_require__.r(__webpack_exports__);
3555/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js");
3556
3557
3558
3559
3560// RawAxiosHeaders whose duplicates are ignored by node
3561// c.f. https://nodejs.org/api/http.html#http_message_headers
3562const ignoreDuplicateOf = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toObjectSet([
3563  'age', 'authorization', 'content-length', 'content-type', 'etag',
3564  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
3565  'last-modified', 'location', 'max-forwards', 'proxy-authorization',
3566  'referer', 'retry-after', 'user-agent'
3567]);
3568
3569/**
3570 * Parse headers into an object
3571 *
3572 * ```
3573 * Date: Wed, 27 Aug 2014 08:58:49 GMT
3574 * Content-Type: application/json
3575 * Connection: keep-alive
3576 * Transfer-Encoding: chunked
3577 * ```
3578 *
3579 * @param {String} rawHeaders Headers needing to be parsed
3580 *
3581 * @returns {Object} Headers parsed into an object
3582 */
3583/* harmony default export */ __webpack_exports__["default"] = (rawHeaders => {
3584  const parsed = {};
3585  let key;
3586  let val;
3587  let i;
3588
3589  rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
3590    i = line.indexOf(':');
3591    key = line.substring(0, i).trim().toLowerCase();
3592    val = line.substring(i + 1).trim();
3593
3594    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {
3595      return;
3596    }
3597
3598    if (key === 'set-cookie') {
3599      if (parsed[key]) {
3600        parsed[key].push(val);
3601      } else {
3602        parsed[key] = [val];
3603      }
3604    } else {
3605      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
3606    }
3607  });
3608
3609  return parsed;
3610});
3611
3612
3613/***/ }),
3614
vendor: 667 bytes, lines 3615-3634
3615/***/ "./node_modules/axios/lib/helpers/parseProtocol.js":
3616/*!*********************************************************!*\
3617  !*** ./node_modules/axios/lib/helpers/parseProtocol.js ***!
3618  \*********************************************************/
3619/*! exports provided: default */
3620/***/ (function(module, __webpack_exports__, __webpack_require__) {
3621
3622"use strict";
3623__webpack_require__.r(__webpack_exports__);
3624/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return parseProtocol; });
3625
3626
3627function parseProtocol(url) {
3628  const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
3629  return match && match[1] || '';
3630}
3631
3632
3633/***/ }),
3634
vendor: 1,540 bytes, lines 3635-3702
3635/***/ "./node_modules/axios/lib/helpers/speedometer.js":
3636/*!*******************************************************!*\
3637  !*** ./node_modules/axios/lib/helpers/speedometer.js ***!
3638  \*******************************************************/
3639/*! exports provided: default */
3640/***/ (function(module, __webpack_exports__, __webpack_require__) {
3641
3642"use strict";
3643__webpack_require__.r(__webpack_exports__);
3644
3645
3646/**
3647 * Calculate data maxRate
3648 * @param {Number} [samplesCount= 10]
3649 * @param {Number} [min= 1000]
3650 * @returns {Function}
3651 */
3652function speedometer(samplesCount, min) {
3653  samplesCount = samplesCount || 10;
3654  const bytes = new Array(samplesCount);
3655  const timestamps = new Array(samplesCount);
3656  let head = 0;
3657  let tail = 0;
3658  let firstSampleTS;
3659
3660  min = min !== undefined ? min : 1000;
3661
3662  return function push(chunkLength) {
3663    const now = Date.now();
3664
3665    const startedAt = timestamps[tail];
3666
3667    if (!firstSampleTS) {
3668      firstSampleTS = now;
3669    }
3670
3671    bytes[head] = chunkLength;
3672    timestamps[head] = now;
3673
3674    let i = tail;
3675    let bytesCount = 0;
3676
3677    while (i !== head) {
3678      bytesCount += bytes[i++];
3679      i = i % samplesCount;
3680    }
3681
3682    head = (head + 1) % samplesCount;
3683
3684    if (head === tail) {
3685      tail = (tail + 1) % samplesCount;
3686    }
3687
3688    if (now - firstSampleTS < min) {
3689      return;
3690    }
3691
3692    const passed = startedAt && now - startedAt;
3693
3694    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
3695  };
3696}
3697
3698/* harmony default export */ __webpack_exports__["default"] = (speedometer);
3699
3700
3701/***/ }),
3702
vendor: 1,045 bytes, lines 3703-3744
3703/***/ "./node_modules/axios/lib/helpers/spread.js":
3704/*!**************************************************!*\
3705  !*** ./node_modules/axios/lib/helpers/spread.js ***!
3706  \**************************************************/
3707/*! exports provided: default */
3708/***/ (function(module, __webpack_exports__, __webpack_require__) {
3709
3710"use strict";
3711__webpack_require__.r(__webpack_exports__);
3712/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return spread; });
3713
3714
3715/**
3716 * Syntactic sugar for invoking a function and expanding an array for arguments.
3717 *
3718 * Common use case would be to use `Function.prototype.apply`.
3719 *
3720 *  ```js
3721 *  function f(x, y, z) {}
3722 *  var args = [1, 2, 3];
3723 *  f.apply(null, args);
3724 *  ```
3725 *
3726 * With `spread` this example can be re-written.
3727 *
3728 *  ```js
3729 *  spread(function(x, y, z) {})([1, 2, 3]);
3730 *  ```
3731 *
3732 * @param {Function} callback
3733 *
3734 * @returns {Function}
3735 */
3736function spread(callback) {
3737  return function wrap(arr) {
3738    return callback.apply(null, arr);
3739  };
3740}
3741
3742
3743/***/ }),
3744
vendor: 8,483 bytes, lines 3745-3990
3745/***/ "./node_modules/axios/lib/helpers/toFormData.js":
3746/*!******************************************************!*\
3747  !*** ./node_modules/axios/lib/helpers/toFormData.js ***!
3748  \******************************************************/
3749/*! exports provided: default */
3750/***/ (function(module, __webpack_exports__, __webpack_require__) {
3751
3752"use strict";
3753__webpack_require__.r(__webpack_exports__);
3754/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
3755/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
3756/* harmony import */ var _env_classes_FormData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../env/classes/FormData.js */ "./node_modules/axios/lib/env/classes/FormData.js");
3757
3758
3759
3760
3761
3762
3763/**
3764 * Determines if the given thing is a array or js object.
3765 *
3766 * @param {string} thing - The object or array to be visited.
3767 *
3768 * @returns {boolean}
3769 */
3770function isVisitable(thing) {
3771  return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(thing) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(thing);
3772}
3773
3774/**
3775 * It removes the brackets from the end of a string
3776 *
3777 * @param {string} key - The key of the parameter.
3778 *
3779 * @returns {string} the key without the brackets.
3780 */
3781function removeBrackets(key) {
3782  return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].endsWith(key, '[]') ? key.slice(0, -2) : key;
3783}
3784
3785/**
3786 * It takes a path, a key, and a boolean, and returns a string
3787 *
3788 * @param {string} path - The path to the current key.
3789 * @param {string} key - The key of the current object being iterated over.
3790 * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
3791 *
3792 * @returns {string} The path to the current key.
3793 */
3794function renderKey(path, key, dots) {
3795  if (!path) return key;
3796  return path.concat(key).map(function each(token, i) {
3797    // eslint-disable-next-line no-param-reassign
3798    token = removeBrackets(token);
3799    return !dots && i ? '[' + token + ']' : token;
3800  }).join(dots ? '.' : '');
3801}
3802
3803/**
3804 * If the array is an array and none of its elements are visitable, then it's a flat array.
3805 *
3806 * @param {Array<any>} arr - The array to check
3807 *
3808 * @returns {boolean}
3809 */
3810function isFlatArray(arr) {
3811  return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(arr) && !arr.some(isVisitable);
3812}
3813
3814const predicates = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toFlatObject(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"], {}, null, function filter(prop) {
3815  return /^is[A-Z]/.test(prop);
3816});
3817
3818/**
3819 * If the thing is a FormData object, return true, otherwise return false.
3820 *
3821 * @param {unknown} thing - The thing to check.
3822 *
3823 * @returns {boolean}
3824 */
3825function isSpecCompliant(thing) {
3826  return thing && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];
3827}
3828
3829/**
3830 * Convert a data object to FormData
3831 *
3832 * @param {Object} obj
3833 * @param {?Object} [formData]
3834 * @param {?Object} [options]
3835 * @param {Function} [options.visitor]
3836 * @param {Boolean} [options.metaTokens = true]
3837 * @param {Boolean} [options.dots = false]
3838 * @param {?Boolean} [options.indexes = false]
3839 *
3840 * @returns {Object}
3841 **/
3842
3843/**
3844 * It converts an object into a FormData object
3845 *
3846 * @param {Object<any, any>} obj - The object to convert to form data.
3847 * @param {string} formData - The FormData object to append to.
3848 * @param {Object<string, any>} options
3849 *
3850 * @returns
3851 */
3852function toFormData(obj, formData, options) {
3853  if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(obj)) {
3854    throw new TypeError('target must be an object');
3855  }
3856
3857  // eslint-disable-next-line no-param-reassign
3858  formData = formData || new (_env_classes_FormData_js__WEBPACK_IMPORTED_MODULE_2__["default"] || FormData)();
3859
3860  // eslint-disable-next-line no-param-reassign
3861  options = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toFlatObject(options, {
3862    metaTokens: true,
3863    dots: false,
3864    indexes: false
3865  }, false, function defined(option, source) {
3866    // eslint-disable-next-line no-eq-null,eqeqeq
3867    return !_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(source[option]);
3868  });
3869
3870  const metaTokens = options.metaTokens;
3871  // eslint-disable-next-line no-use-before-define
3872  const visitor = options.visitor || defaultVisitor;
3873  const dots = options.dots;
3874  const indexes = options.indexes;
3875  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
3876  const useBlob = _Blob && isSpecCompliant(formData);
3877
3878  if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(visitor)) {
3879    throw new TypeError('visitor must be a function');
3880  }
3881
3882  function convertValue(value) {
3883    if (value === null) return '';
3884
3885    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isDate(value)) {
3886      return value.toISOString();
3887    }
3888
3889    if (!useBlob && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBlob(value)) {
3890      throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('Blob is not supported. Use a Buffer instead.');
3891    }
3892
3893    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBuffer(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isTypedArray(value)) {
3894      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
3895    }
3896
3897    return value;
3898  }
3899
3900  /**
3901   * Default visitor.
3902   *
3903   * @param {*} value
3904   * @param {String|Number} key
3905   * @param {Array<String|Number>} path
3906   * @this {FormData}
3907   *
3908   * @returns {boolean} return true to visit the each prop of the value recursively
3909   */
3910  function defaultVisitor(value, key, path) {
3911    let arr = value;
3912
3913    if (value && !path && typeof value === 'object') {
3914      if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].endsWith(key, '{}')) {
3915        // eslint-disable-next-line no-param-reassign
3916        key = metaTokens ? key : key.slice(0, -2);
3917        // eslint-disable-next-line no-param-reassign
3918        value = JSON.stringify(value);
3919      } else if (
3920        (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) && isFlatArray(value)) ||
3921        (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFileList(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].endsWith(key, '[]') && (arr = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toArray(value))
3922        )) {
3923        // eslint-disable-next-line no-param-reassign
3924        key = removeBrackets(key);
3925
3926        arr.forEach(function each(el, index) {
3927          !(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(el) || el === null) && formData.append(
3928            // eslint-disable-next-line no-nested-ternary
3929            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),
3930            convertValue(el)
3931          );
3932        });
3933        return false;
3934      }
3935    }
3936
3937    if (isVisitable(value)) {
3938      return true;
3939    }
3940
3941    formData.append(renderKey(path, key, dots), convertValue(value));
3942
3943    return false;
3944  }
3945
3946  const stack = [];
3947
3948  const exposedHelpers = Object.assign(predicates, {
3949    defaultVisitor,
3950    convertValue,
3951    isVisitable
3952  });
3953
3954  function build(value, path) {
3955    if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(value)) return;
3956
3957    if (stack.indexOf(value) !== -1) {
3958      throw Error('Circular reference detected in ' + path.join('.'));
3959    }
3960
3961    stack.push(value);
3962
3963    _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(value, function each(el, key) {
3964      const result = !(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(el) || el === null) && visitor.call(
3965        formData, el, _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(key) ? key.trim() : key, path, exposedHelpers
3966      );
3967
3968      if (result === true) {
3969        build(el, path ? path.concat(key) : [key]);
3970      }
3971    });
3972
3973    stack.pop();
3974  }
3975
3976  if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(obj)) {
3977    throw new TypeError('data must be an object');
3978  }
3979
3980  build(obj);
3981
3982  return formData;
3983}
3984
3985/* harmony default export */ __webpack_exports__["default"] = (toFormData);
3986
3987/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../buffer/index.js */ "./node_modules/buffer/index.js").Buffer))
3988
3989/***/ }),
3990
vendor: 1,636 bytes, lines 3991-4025
3991/***/ "./node_modules/axios/lib/helpers/toURLEncodedForm.js":
3992/*!************************************************************!*\
3993  !*** ./node_modules/axios/lib/helpers/toURLEncodedForm.js ***!
3994  \************************************************************/
3995/*! exports provided: default */
3996/***/ (function(module, __webpack_exports__, __webpack_require__) {
3997
3998"use strict";
3999__webpack_require__.r(__webpack_exports__);
4000/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return toURLEncodedForm; });
4001/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js");
4002/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js");
4003/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js");
4004
4005
4006
4007
4008
4009
4010function toURLEncodedForm(data, options) {
4011  return Object(_toFormData_js__WEBPACK_IMPORTED_MODULE_1__["default"])(data, new _platform_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].classes.URLSearchParams(), Object.assign({
4012    visitor: function(value, key, path, helpers) {
4013      if (_platform_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].isNode && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBuffer(value)) {
4014        this.append(key, value.toString('base64'));
4015        return false;
4016      }
4017
4018      return helpers.defaultVisitor.apply(this, arguments);
4019    }
4020  }, options));
4021}
4022
4023
4024/***/ }),
4025
vendor: 3,673 bytes, lines 4026-4131
4026/***/ "./node_modules/axios/lib/helpers/validator.js":
4027/*!*****************************************************!*\
4028  !*** ./node_modules/axios/lib/helpers/validator.js ***!
4029  \*****************************************************/
4030/*! exports provided: default */
4031/***/ (function(module, __webpack_exports__, __webpack_require__) {
4032
4033"use strict";
4034__webpack_require__.r(__webpack_exports__);
4035/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env/data.js */ "./node_modules/axios/lib/env/data.js");
4036/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js");
4037
4038
4039
4040
4041
4042const validators = {};
4043
4044// eslint-disable-next-line func-names
4045['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
4046  validators[type] = function validator(thing) {
4047    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
4048  };
4049});
4050
4051const deprecatedWarnings = {};
4052
4053/**
4054 * Transitional option validator
4055 *
4056 * @param {function|boolean?} validator - set to false if the transitional option has been removed
4057 * @param {string?} version - deprecated version / removed since version
4058 * @param {string?} message - some message with additional info
4059 *
4060 * @returns {function}
4061 */
4062validators.transitional = function transitional(validator, version, message) {
4063  function formatMessage(opt, desc) {
4064    return '[Axios v' + _env_data_js__WEBPACK_IMPORTED_MODULE_0__["VERSION"] + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
4065  }
4066
4067  // eslint-disable-next-line func-names
4068  return (value, opt, opts) => {
4069    if (validator === false) {
4070      throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"](
4071        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
4072        _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_DEPRECATED
4073      );
4074    }
4075
4076    if (version && !deprecatedWarnings[opt]) {
4077      deprecatedWarnings[opt] = true;
4078      // eslint-disable-next-line no-console
4079      console.warn(
4080        formatMessage(
4081          opt,
4082          ' has been deprecated since v' + version + ' and will be removed in the near future'
4083        )
4084      );
4085    }
4086
4087    return validator ? validator(value, opt, opts) : true;
4088  };
4089};
4090
4091/**
4092 * Assert object's properties type
4093 *
4094 * @param {object} options
4095 * @param {object} schema
4096 * @param {boolean?} allowUnknown
4097 *
4098 * @returns {object}
4099 */
4100
4101function assertOptions(options, schema, allowUnknown) {
4102  if (typeof options !== 'object') {
4103    throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('options must be an object', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_OPTION_VALUE);
4104  }
4105  const keys = Object.keys(options);
4106  let i = keys.length;
4107  while (i-- > 0) {
4108    const opt = keys[i];
4109    const validator = schema[opt];
4110    if (validator) {
4111      const value = options[opt];
4112      const result = value === undefined || validator(value, opt, options);
4113      if (result !== true) {
4114        throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('option ' + opt + ' must be ' + result, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_OPTION_VALUE);
4115      }
4116      continue;
4117    }
4118    if (allowUnknown !== true) {
4119      throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('Unknown option ' + opt, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_OPTION);
4120    }
4121  }
4122}
4123
4124/* harmony default export */ __webpack_exports__["default"] = ({
4125  assertOptions,
4126  validators
4127});
4128
4129
4130/***/ }),
4131
vendor: 544 bytes, lines 4132-4147
4132/***/ "./node_modules/axios/lib/platform/browser/classes/FormData.js":
4133/*!*********************************************************************!*\
4134  !*** ./node_modules/axios/lib/platform/browser/classes/FormData.js ***!
4135  \*********************************************************************/
4136/*! exports provided: default */
4137/***/ (function(module, __webpack_exports__, __webpack_require__) {
4138
4139"use strict";
4140__webpack_require__.r(__webpack_exports__);
4141
4142
4143/* harmony default export */ __webpack_exports__["default"] = (FormData);
4144
4145
4146/***/ }),
4147
vendor: 914 bytes, lines 4148-4165
4148/***/ "./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js":
4149/*!****************************************************************************!*\
4150  !*** ./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ***!
4151  \****************************************************************************/
4152/*! exports provided: default */
4153/***/ (function(module, __webpack_exports__, __webpack_require__) {
4154
4155"use strict";
4156__webpack_require__.r(__webpack_exports__);
4157/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../helpers/AxiosURLSearchParams.js */ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js");
4158
4159
4160
4161/* harmony default export */ __webpack_exports__["default"] = (typeof URLSearchParams !== 'undefined' ? URLSearchParams : _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
4162
4163
4164/***/ }),
4165
vendor: 2,643 bytes, lines 4166-4243
4166/***/ "./node_modules/axios/lib/platform/browser/index.js":
4167/*!**********************************************************!*\
4168  !*** ./node_modules/axios/lib/platform/browser/index.js ***!
4169  \**********************************************************/
4170/*! exports provided: default */
4171/***/ (function(module, __webpack_exports__, __webpack_require__) {
4172
4173"use strict";
4174__webpack_require__.r(__webpack_exports__);
4175/* harmony import */ var _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./classes/URLSearchParams.js */ "./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js");
4176/* harmony import */ var _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./classes/FormData.js */ "./node_modules/axios/lib/platform/browser/classes/FormData.js");
4177
4178
4179
4180/**
4181 * Determine if we're running in a standard browser environment
4182 *
4183 * This allows axios to run in a web worker, and react-native.
4184 * Both environments support XMLHttpRequest, but not fully standard globals.
4185 *
4186 * web workers:
4187 *  typeof window -> undefined
4188 *  typeof document -> undefined
4189 *
4190 * react-native:
4191 *  navigator.product -> 'ReactNative'
4192 * nativescript
4193 *  navigator.product -> 'NativeScript' or 'NS'
4194 *
4195 * @returns {boolean}
4196 */
4197const isStandardBrowserEnv = (() => {
4198  let product;
4199  if (typeof navigator !== 'undefined' && (
4200    (product = navigator.product) === 'ReactNative' ||
4201    product === 'NativeScript' ||
4202    product === 'NS')
4203  ) {
4204    return false;
4205  }
4206
4207  return typeof window !== 'undefined' && typeof document !== 'undefined';
4208})();
4209
4210/**
4211 * Determine if we're running in a standard browser webWorker environment
4212 *
4213 * Although the `isStandardBrowserEnv` method indicates that
4214 * `allows axios to run in a web worker`, the WebWorker will still be
4215 * filtered out due to its judgment standard
4216 * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
4217 * This leads to a problem when axios post `FormData` in webWorker
4218 */
4219 const isStandardBrowserWebWorkerEnv = (() => {
4220  return (
4221    typeof WorkerGlobalScope !== 'undefined' &&
4222    // eslint-disable-next-line no-undef
4223    self instanceof WorkerGlobalScope &&
4224    typeof self.importScripts === 'function'
4225  );
4226})();
4227
4228
4229/* harmony default export */ __webpack_exports__["default"] = ({
4230  isBrowser: true,
4231  classes: {
4232    URLSearchParams: _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__["default"],
4233    FormData: _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__["default"],
4234    Blob
4235  },
4236  isStandardBrowserEnv,
4237  isStandardBrowserWebWorkerEnv,
4238  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']
4239});
4240
4241
4242/***/ }),
4243
vendor: 729 bytes, lines 4244-4262
4244/***/ "./node_modules/axios/lib/platform/index.js":
4245/*!**************************************************!*\
4246  !*** ./node_modules/axios/lib/platform/index.js ***!
4247  \**************************************************/
4248/*! exports provided: default */
4249/***/ (function(module, __webpack_exports__, __webpack_require__) {
4250
4251"use strict";
4252__webpack_require__.r(__webpack_exports__);
4253/* harmony import */ var _node_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node/index.js */ "./node_modules/axios/lib/platform/browser/index.js");
4254/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _node_index_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4255
4256
4257
4258
4259
4260
4261/***/ }),
4262
vendor: 17,181 bytes, lines 4263-4954
4263/***/ "./node_modules/axios/lib/utils.js":
4264/*!*****************************************!*\
4265  !*** ./node_modules/axios/lib/utils.js ***!
4266  \*****************************************/
4267/*! exports provided: default */
4268/***/ (function(module, __webpack_exports__, __webpack_require__) {
4269
4270"use strict";
4271__webpack_require__.r(__webpack_exports__);
4272/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/bind.js */ "./node_modules/axios/lib/helpers/bind.js");
4273
4274
4275
4276
4277// utils is a library of generic helper functions non-specific to axios
4278
4279const {toString} = Object.prototype;
4280const {getPrototypeOf} = Object;
4281
4282const kindOf = (cache => thing => {
4283    const str = toString.call(thing);
4284    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
4285})(Object.create(null));
4286
4287const kindOfTest = (type) => {
4288  type = type.toLowerCase();
4289  return (thing) => kindOf(thing) === type
4290}
4291
4292const typeOfTest = type => thing => typeof thing === type;
4293
4294/**
4295 * Determine if a value is an Array
4296 *
4297 * @param {Object} val The value to test
4298 *
4299 * @returns {boolean} True if value is an Array, otherwise false
4300 */
4301const {isArray} = Array;
4302
4303/**
4304 * Determine if a value is undefined
4305 *
4306 * @param {*} val The value to test
4307 *
4308 * @returns {boolean} True if the value is undefined, otherwise false
4309 */
4310const isUndefined = typeOfTest('undefined');
4311
4312/**
4313 * Determine if a value is a Buffer
4314 *
4315 * @param {*} val The value to test
4316 *
4317 * @returns {boolean} True if value is a Buffer, otherwise false
4318 */
4319function isBuffer(val) {
4320  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
4321    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
4322}
4323
4324/**
4325 * Determine if a value is an ArrayBuffer
4326 *
4327 * @param {*} val The value to test
4328 *
4329 * @returns {boolean} True if value is an ArrayBuffer, otherwise false
4330 */
4331const isArrayBuffer = kindOfTest('ArrayBuffer');
4332
4333
4334/**
4335 * Determine if a value is a view on an ArrayBuffer
4336 *
4337 * @param {*} val The value to test
4338 *
4339 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
4340 */
4341function isArrayBufferView(val) {
4342  let result;
4343  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
4344    result = ArrayBuffer.isView(val);
4345  } else {
4346    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
4347  }
4348  return result;
4349}
4350
4351/**
4352 * Determine if a value is a String
4353 *
4354 * @param {*} val The value to test
4355 *
4356 * @returns {boolean} True if value is a String, otherwise false
4357 */
4358const isString = typeOfTest('string');
4359
4360/**
4361 * Determine if a value is a Function
4362 *
4363 * @param {*} val The value to test
4364 * @returns {boolean} True if value is a Function, otherwise false
4365 */
4366const isFunction = typeOfTest('function');
4367
4368/**
4369 * Determine if a value is a Number
4370 *
4371 * @param {*} val The value to test
4372 *
4373 * @returns {boolean} True if value is a Number, otherwise false
4374 */
4375const isNumber = typeOfTest('number');
4376
4377/**
4378 * Determine if a value is an Object
4379 *
4380 * @param {*} thing The value to test
4381 *
4382 * @returns {boolean} True if value is an Object, otherwise false
4383 */
4384const isObject = (thing) => thing !== null && typeof thing === 'object';
4385
4386/**
4387 * Determine if a value is a Boolean
4388 *
4389 * @param {*} thing The value to test
4390 * @returns {boolean} True if value is a Boolean, otherwise false
4391 */
4392const isBoolean = thing => thing === true || thing === false;
4393
4394/**
4395 * Determine if a value is a plain Object
4396 *
4397 * @param {*} val The value to test
4398 *
4399 * @returns {boolean} True if value is a plain Object, otherwise false
4400 */
4401const isPlainObject = (val) => {
4402  if (kindOf(val) !== 'object') {
4403    return false;
4404  }
4405
4406  const prototype = getPrototypeOf(val);
4407  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
4408}
4409
4410/**
4411 * Determine if a value is a Date
4412 *
4413 * @param {*} val The value to test
4414 *
4415 * @returns {boolean} True if value is a Date, otherwise false
4416 */
4417const isDate = kindOfTest('Date');
4418
4419/**
4420 * Determine if a value is a File
4421 *
4422 * @param {*} val The value to test
4423 *
4424 * @returns {boolean} True if value is a File, otherwise false
4425 */
4426const isFile = kindOfTest('File');
4427
4428/**
4429 * Determine if a value is a Blob
4430 *
4431 * @param {*} val The value to test
4432 *
4433 * @returns {boolean} True if value is a Blob, otherwise false
4434 */
4435const isBlob = kindOfTest('Blob');
4436
4437/**
4438 * Determine if a value is a FileList
4439 *
4440 * @param {*} val The value to test
4441 *
4442 * @returns {boolean} True if value is a File, otherwise false
4443 */
4444const isFileList = kindOfTest('FileList');
4445
4446/**
4447 * Determine if a value is a Stream
4448 *
4449 * @param {*} val The value to test
4450 *
4451 * @returns {boolean} True if value is a Stream, otherwise false
4452 */
4453const isStream = (val) => isObject(val) && isFunction(val.pipe);
4454
4455/**
4456 * Determine if a value is a FormData
4457 *
4458 * @param {*} thing The value to test
4459 *
4460 * @returns {boolean} True if value is an FormData, otherwise false
4461 */
4462const isFormData = (thing) => {
4463  const pattern = '[object FormData]';
4464  return thing && (
4465    (typeof FormData === 'function' && thing instanceof FormData) ||
4466    toString.call(thing) === pattern ||
4467    (isFunction(thing.toString) && thing.toString() === pattern)
4468  );
4469}
4470
4471/**
4472 * Determine if a value is a URLSearchParams object
4473 *
4474 * @param {*} val The value to test
4475 *
4476 * @returns {boolean} True if value is a URLSearchParams object, otherwise false
4477 */
4478const isURLSearchParams = kindOfTest('URLSearchParams');
4479
4480/**
4481 * Trim excess whitespace off the beginning and end of a string
4482 *
4483 * @param {String} str The String to trim
4484 *
4485 * @returns {String} The String freed of excess whitespace
4486 */
4487const trim = (str) => str.trim ?
4488  str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
4489
4490/**
4491 * Iterate over an Array or an Object invoking a function for each item.
4492 *
4493 * If `obj` is an Array callback will be called passing
4494 * the value, index, and complete array for each item.
4495 *
4496 * If 'obj' is an Object callback will be called passing
4497 * the value, key, and complete object for each property.
4498 *
4499 * @param {Object|Array} obj The object to iterate
4500 * @param {Function} fn The callback to invoke for each item
4501 *
4502 * @param {Boolean} [allOwnKeys = false]
4503 * @returns {any}
4504 */
4505function forEach(obj, fn, {allOwnKeys = false} = {}) {
4506  // Don't bother if no value provided
4507  if (obj === null || typeof obj === 'undefined') {
4508    return;
4509  }
4510
4511  let i;
4512  let l;
4513
4514  // Force an array if not already something iterable
4515  if (typeof obj !== 'object') {
4516    /*eslint no-param-reassign:0*/
4517    obj = [obj];
4518  }
4519
4520  if (isArray(obj)) {
4521    // Iterate over array values
4522    for (i = 0, l = obj.length; i < l; i++) {
4523      fn.call(null, obj[i], i, obj);
4524    }
4525  } else {
4526    // Iterate over object keys
4527    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
4528    const len = keys.length;
4529    let key;
4530
4531    for (i = 0; i < len; i++) {
4532      key = keys[i];
4533      fn.call(null, obj[key], key, obj);
4534    }
4535  }
4536}
4537
4538function findKey(obj, key) {
4539  key = key.toLowerCase();
4540  const keys = Object.keys(obj);
4541  let i = keys.length;
4542  let _key;
4543  while (i-- > 0) {
4544    _key = keys[i];
4545    if (key === _key.toLowerCase()) {
4546      return _key;
4547    }
4548  }
4549  return null;
4550}
4551
4552const _global = (() => {
4553  /*eslint no-undef:0*/
4554  if (typeof globalThis !== "undefined") return globalThis;
4555  return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global)
4556})();
4557
4558const isContextDefined = (context) => !isUndefined(context) && context !== _global;
4559
4560/**
4561 * Accepts varargs expecting each argument to be an object, then
4562 * immutably merges the properties of each object and returns result.
4563 *
4564 * When multiple objects contain the same key the later object in
4565 * the arguments list will take precedence.
4566 *
4567 * Example:
4568 *
4569 * ```js
4570 * var result = merge({foo: 123}, {foo: 456});
4571 * console.log(result.foo); // outputs 456
4572 * ```
4573 *
4574 * @param {Object} obj1 Object to merge
4575 *
4576 * @returns {Object} Result of all merge properties
4577 */
4578function merge(/* obj1, obj2, obj3, ... */) {
4579  const {caseless} = isContextDefined(this) && this || {};
4580  const result = {};
4581  const assignValue = (val, key) => {
4582    const targetKey = caseless && findKey(result, key) || key;
4583    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
4584      result[targetKey] = merge(result[targetKey], val);
4585    } else if (isPlainObject(val)) {
4586      result[targetKey] = merge({}, val);
4587    } else if (isArray(val)) {
4588      result[targetKey] = val.slice();
4589    } else {
4590      result[targetKey] = val;
4591    }
4592  }
4593
4594  for (let i = 0, l = arguments.length; i < l; i++) {
4595    arguments[i] && forEach(arguments[i], assignValue);
4596  }
4597  return result;
4598}
4599
4600/**
4601 * Extends object a by mutably adding to it the properties of object b.
4602 *
4603 * @param {Object} a The object to be extended
4604 * @param {Object} b The object to copy properties from
4605 * @param {Object} thisArg The object to bind function to
4606 *
4607 * @param {Boolean} [allOwnKeys]
4608 * @returns {Object} The resulting value of object a
4609 */
4610const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
4611  forEach(b, (val, key) => {
4612    if (thisArg && isFunction(val)) {
4613      a[key] = Object(_helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__["default"])(val, thisArg);
4614    } else {
4615      a[key] = val;
4616    }
4617  }, {allOwnKeys});
4618  return a;
4619}
4620
4621/**
4622 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
4623 *
4624 * @param {string} content with BOM
4625 *
4626 * @returns {string} content value without BOM
4627 */
4628const stripBOM = (content) => {
4629  if (content.charCodeAt(0) === 0xFEFF) {
4630    content = content.slice(1);
4631  }
4632  return content;
4633}
4634
4635/**
4636 * Inherit the prototype methods from one constructor into another
4637 * @param {function} constructor
4638 * @param {function} superConstructor
4639 * @param {object} [props]
4640 * @param {object} [descriptors]
4641 *
4642 * @returns {void}
4643 */
4644const inherits = (constructor, superConstructor, props, descriptors) => {
4645  constructor.prototype = Object.create(superConstructor.prototype, descriptors);
4646  constructor.prototype.constructor = constructor;
4647  Object.defineProperty(constructor, 'super', {
4648    value: superConstructor.prototype
4649  });
4650  props && Object.assign(constructor.prototype, props);
4651}
4652
4653/**
4654 * Resolve object with deep prototype chain to a flat object
4655 * @param {Object} sourceObj source object
4656 * @param {Object} [destObj]
4657 * @param {Function|Boolean} [filter]
4658 * @param {Function} [propFilter]
4659 *
4660 * @returns {Object}
4661 */
4662const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
4663  let props;
4664  let i;
4665  let prop;
4666  const merged = {};
4667
4668  destObj = destObj || {};
4669  // eslint-disable-next-line no-eq-null,eqeqeq
4670  if (sourceObj == null) return destObj;
4671
4672  do {
4673    props = Object.getOwnPropertyNames(sourceObj);
4674    i = props.length;
4675    while (i-- > 0) {
4676      prop = props[i];
4677      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
4678        destObj[prop] = sourceObj[prop];
4679        merged[prop] = true;
4680      }
4681    }
4682    sourceObj = filter !== false && getPrototypeOf(sourceObj);
4683  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
4684
4685  return destObj;
4686}
4687
4688/**
4689 * Determines whether a string ends with the characters of a specified string
4690 *
4691 * @param {String} str
4692 * @param {String} searchString
4693 * @param {Number} [position= 0]
4694 *
4695 * @returns {boolean}
4696 */
4697const endsWith = (str, searchString, position) => {
4698  str = String(str);
4699  if (position === undefined || position > str.length) {
4700    position = str.length;
4701  }
4702  position -= searchString.length;
4703  const lastIndex = str.indexOf(searchString, position);
4704  return lastIndex !== -1 && lastIndex === position;
4705}
4706
4707
4708/**
4709 * Returns new array from array like object or null if failed
4710 *
4711 * @param {*} [thing]
4712 *
4713 * @returns {?Array}
4714 */
4715const toArray = (thing) => {
4716  if (!thing) return null;
4717  if (isArray(thing)) return thing;
4718  let i = thing.length;
4719  if (!isNumber(i)) return null;
4720  const arr = new Array(i);
4721  while (i-- > 0) {
4722    arr[i] = thing[i];
4723  }
4724  return arr;
4725}
4726
4727/**
4728 * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
4729 * thing passed in is an instance of Uint8Array
4730 *
4731 * @param {TypedArray}
4732 *
4733 * @returns {Array}
4734 */
4735// eslint-disable-next-line func-names
4736const isTypedArray = (TypedArray => {
4737  // eslint-disable-next-line func-names
4738  return thing => {
4739    return TypedArray && thing instanceof TypedArray;
4740  };
4741})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
4742
4743/**
4744 * For each entry in the object, call the function with the key and value.
4745 *
4746 * @param {Object<any, any>} obj - The object to iterate over.
4747 * @param {Function} fn - The function to call for each entry.
4748 *
4749 * @returns {void}
4750 */
4751const forEachEntry = (obj, fn) => {
4752  const generator = obj && obj[Symbol.iterator];
4753
4754  const iterator = generator.call(obj);
4755
4756  let result;
4757
4758  while ((result = iterator.next()) && !result.done) {
4759    const pair = result.value;
4760    fn.call(obj, pair[0], pair[1]);
4761  }
4762}
4763
4764/**
4765 * It takes a regular expression and a string, and returns an array of all the matches
4766 *
4767 * @param {string} regExp - The regular expression to match against.
4768 * @param {string} str - The string to search.
4769 *
4770 * @returns {Array<boolean>}
4771 */
4772const matchAll = (regExp, str) => {
4773  let matches;
4774  const arr = [];
4775
4776  while ((matches = regExp.exec(str)) !== null) {
4777    arr.push(matches);
4778  }
4779
4780  return arr;
4781}
4782
4783/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
4784const isHTMLForm = kindOfTest('HTMLFormElement');
4785
4786const toCamelCase = str => {
4787  return str.toLowerCase().replace(/[_-\s]([a-z\d])(\w*)/g,
4788    function replacer(m, p1, p2) {
4789      return p1.toUpperCase() + p2;
4790    }
4791  );
4792};
4793
4794/* Creating a function that will check if an object has a property. */
4795const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);
4796
4797/**
4798 * Determine if a value is a RegExp object
4799 *
4800 * @param {*} val The value to test
4801 *
4802 * @returns {boolean} True if value is a RegExp object, otherwise false
4803 */
4804const isRegExp = kindOfTest('RegExp');
4805
4806const reduceDescriptors = (obj, reducer) => {
4807  const descriptors = Object.getOwnPropertyDescriptors(obj);
4808  const reducedDescriptors = {};
4809
4810  forEach(descriptors, (descriptor, name) => {
4811    if (reducer(descriptor, name, obj) !== false) {
4812      reducedDescriptors[name] = descriptor;
4813    }
4814  });
4815
4816  Object.defineProperties(obj, reducedDescriptors);
4817}
4818
4819/**
4820 * Makes all methods read-only
4821 * @param {Object} obj
4822 */
4823
4824const freezeMethods = (obj) => {
4825  reduceDescriptors(obj, (descriptor, name) => {
4826    // skip restricted props in strict mode
4827    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
4828      return false;
4829    }
4830
4831    const value = obj[name];
4832
4833    if (!isFunction(value)) return;
4834
4835    descriptor.enumerable = false;
4836
4837    if ('writable' in descriptor) {
4838      descriptor.writable = false;
4839      return;
4840    }
4841
4842    if (!descriptor.set) {
4843      descriptor.set = () => {
4844        throw Error('Can not rewrite read-only method \'' + name + '\'');
4845      };
4846    }
4847  });
4848}
4849
4850const toObjectSet = (arrayOrString, delimiter) => {
4851  const obj = {};
4852
4853  const define = (arr) => {
4854    arr.forEach(value => {
4855      obj[value] = true;
4856    });
4857  }
4858
4859  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
4860
4861  return obj;
4862}
4863
4864const noop = () => {}
4865
4866const toFiniteNumber = (value, defaultValue) => {
4867  value = +value;
4868  return Number.isFinite(value) ? value : defaultValue;
4869}
4870
4871const toJSONObject = (obj) => {
4872  const stack = new Array(10);
4873
4874  const visit = (source, i) => {
4875
4876    if (isObject(source)) {
4877      if (stack.indexOf(source) >= 0) {
4878        return;
4879      }
4880
4881      if(!('toJSON' in source)) {
4882        stack[i] = source;
4883        const target = isArray(source) ? [] : {};
4884
4885        forEach(source, (value, key) => {
4886          const reducedValue = visit(value, i + 1);
4887          !isUndefined(reducedValue) && (target[key] = reducedValue);
4888        });
4889
4890        stack[i] = undefined;
4891
4892        return target;
4893      }
4894    }
4895
4896    return source;
4897  }
4898
4899  return visit(obj, 0);
4900}
4901
4902/* harmony default export */ __webpack_exports__["default"] = ({
4903  isArray,
4904  isArrayBuffer,
4905  isBuffer,
4906  isFormData,
4907  isArrayBufferView,
4908  isString,
4909  isNumber,
4910  isBoolean,
4911  isObject,
4912  isPlainObject,
4913  isUndefined,
4914  isDate,
4915  isFile,
4916  isBlob,
4917  isRegExp,
4918  isFunction,
4919  isStream,
4920  isURLSearchParams,
4921  isTypedArray,
4922  isFileList,
4923  forEach,
4924  merge,
4925  extend,
4926  trim,
4927  stripBOM,
4928  inherits,
4929  toFlatObject,
4930  kindOf,
4931  kindOfTest,
4932  endsWith,
4933  toArray,
4934  forEachEntry,
4935  matchAll,
4936  isHTMLForm,
4937  hasOwnProperty,
4938  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
4939  reduceDescriptors,
4940  freezeMethods,
4941  toObjectSet,
4942  toCamelCase,
4943  noop,
4944  toFiniteNumber,
4945  findKey,
4946  global: _global,
4947  isContextDefined,
4948  toJSONObject
4949});
4950
4951/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
4952
4953/***/ }),
4954
vendor: 4,218 bytes, lines 4955-5116
4955/***/ "./node_modules/base64-js/index.js":
4956/*!*****************************************!*\
4957  !*** ./node_modules/base64-js/index.js ***!
4958  \*****************************************/
4959/*! no static exports found */
4960/***/ (function(module, exports, __webpack_require__) {
4961
4962"use strict";
4963
4964
4965exports.byteLength = byteLength
4966exports.toByteArray = toByteArray
4967exports.fromByteArray = fromByteArray
4968
4969var lookup = []
4970var revLookup = []
4971var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4972
4973var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4974for (var i = 0, len = code.length; i < len; ++i) {
4975  lookup[i] = code[i]
4976  revLookup[code.charCodeAt(i)] = i
4977}
4978
4979// Support decoding URL-safe base64 strings, as Node.js does.
4980// See: https://en.wikipedia.org/wiki/Base64#URL_applications
4981revLookup['-'.charCodeAt(0)] = 62
4982revLookup['_'.charCodeAt(0)] = 63
4983
4984function getLens (b64) {
4985  var len = b64.length
4986
4987  if (len % 4 > 0) {
4988    throw new Error('Invalid string. Length must be a multiple of 4')
4989  }
4990
4991  // Trim off extra bytes after placeholder bytes are found
4992  // See: https://github.com/beatgammit/base64-js/issues/42
4993  var validLen = b64.indexOf('=')
4994  if (validLen === -1) validLen = len
4995
4996  var placeHoldersLen = validLen === len
4997    ? 0
4998    : 4 - (validLen % 4)
4999
5000  return [validLen, placeHoldersLen]
5001}
5002
5003// base64 is 4/3 + up to two characters of the original data
5004function byteLength (b64) {
5005  var lens = getLens(b64)
5006  var validLen = lens[0]
5007  var placeHoldersLen = lens[1]
5008  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
5009}
5010
5011function _byteLength (b64, validLen, placeHoldersLen) {
5012  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
5013}
5014
5015function toByteArray (b64) {
5016  var tmp
5017  var lens = getLens(b64)
5018  var validLen = lens[0]
5019  var placeHoldersLen = lens[1]
5020
5021  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
5022
5023  var curByte = 0
5024
5025  // if there are placeholders, only get up to the last complete 4 chars
5026  var len = placeHoldersLen > 0
5027    ? validLen - 4
5028    : validLen
5029
5030  var i
5031  for (i = 0; i < len; i += 4) {
5032    tmp =
5033      (revLookup[b64.charCodeAt(i)] << 18) |
5034      (revLookup[b64.charCodeAt(i + 1)] << 12) |
5035      (revLookup[b64.charCodeAt(i + 2)] << 6) |
5036      revLookup[b64.charCodeAt(i + 3)]
5037    arr[curByte++] = (tmp >> 16) & 0xFF
5038    arr[curByte++] = (tmp >> 8) & 0xFF
5039    arr[curByte++] = tmp & 0xFF
5040  }
5041
5042  if (placeHoldersLen === 2) {
5043    tmp =
5044      (revLookup[b64.charCodeAt(i)] << 2) |
5045      (revLookup[b64.charCodeAt(i + 1)] >> 4)
5046    arr[curByte++] = tmp & 0xFF
5047  }
5048
5049  if (placeHoldersLen === 1) {
5050    tmp =
5051      (revLookup[b64.charCodeAt(i)] << 10) |
5052      (revLookup[b64.charCodeAt(i + 1)] << 4) |
5053      (revLookup[b64.charCodeAt(i + 2)] >> 2)
5054    arr[curByte++] = (tmp >> 8) & 0xFF
5055    arr[curByte++] = tmp & 0xFF
5056  }
5057
5058  return arr
5059}
5060
5061function tripletToBase64 (num) {
5062  return lookup[num >> 18 & 0x3F] +
5063    lookup[num >> 12 & 0x3F] +
5064    lookup[num >> 6 & 0x3F] +
5065    lookup[num & 0x3F]
5066}
5067
5068function encodeChunk (uint8, start, end) {
5069  var tmp
5070  var output = []
5071  for (var i = start; i < end; i += 3) {
5072    tmp =
5073      ((uint8[i] << 16) & 0xFF0000) +
5074      ((uint8[i + 1] << 8) & 0xFF00) +
5075      (uint8[i + 2] & 0xFF)
5076    output.push(tripletToBase64(tmp))
5077  }
5078  return output.join('')
5079}
5080
5081function fromByteArray (uint8) {
5082  var tmp
5083  var len = uint8.length
5084  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
5085  var parts = []
5086  var maxChunkLength = 16383 // must be multiple of 3
5087
5088  // go through the array every three bytes, we'll deal with trailing stuff later
5089  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
5090    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
5091  }
5092
5093  // pad the end with zeros, but make sure to not forget the extra bytes
5094  if (extraBytes === 1) {
5095    tmp = uint8[len - 1]
5096    parts.push(
5097      lookup[tmp >> 2] +
5098      lookup[(tmp << 4) & 0x3F] +
5099      '=='
5100    )
5101  } else if (extraBytes === 2) {
5102    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
5103    parts.push(
5104      lookup[tmp >> 10] +
5105      lookup[(tmp >> 4) & 0x3F] +
5106      lookup[(tmp << 2) & 0x3F] +
5107      '='
5108    )
5109  }
5110
5111  return parts.join('')
5112}
5113
5114
5115/***/ }),
5116
vendor: 137,882 bytes, lines 5117-9482
5117/***/ "./node_modules/bootstrap/dist/js/bootstrap.js":
5118/*!*****************************************************!*\
5119  !*** ./node_modules/bootstrap/dist/js/bootstrap.js ***!
5120  \*****************************************************/
5121/*! no static exports found */
5122/***/ (function(module, exports, __webpack_require__) {
5123
5124/*!
5125  * Bootstrap v4.6.2 (https://getbootstrap.com/)
5126  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
5127  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5128  */
5129(function (global, factory) {
5130   true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")) :
5131  undefined;
5132})(this, (function (exports, $, Popper) { 'use strict';
5133
5134  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
5135
5136  var $__default = /*#__PURE__*/_interopDefaultLegacy($);
5137  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);
5138
5139  function _defineProperties(target, props) {
5140    for (var i = 0; i < props.length; i++) {
5141      var descriptor = props[i];
5142      descriptor.enumerable = descriptor.enumerable || false;
5143      descriptor.configurable = true;
5144      if ("value" in descriptor) descriptor.writable = true;
5145      Object.defineProperty(target, descriptor.key, descriptor);
5146    }
5147  }
5148
5149  function _createClass(Constructor, protoProps, staticProps) {
5150    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
5151    if (staticProps) _defineProperties(Constructor, staticProps);
5152    Object.defineProperty(Constructor, "prototype", {
5153      writable: false
5154    });
5155    return Constructor;
5156  }
5157
5158  function _extends() {
5159    _extends = Object.assign ? Object.assign.bind() : function (target) {
5160      for (var i = 1; i < arguments.length; i++) {
5161        var source = arguments[i];
5162
5163        for (var key in source) {
5164          if (Object.prototype.hasOwnProperty.call(source, key)) {
5165            target[key] = source[key];
5166          }
5167        }
5168      }
5169
5170      return target;
5171    };
5172    return _extends.apply(this, arguments);
5173  }
5174
5175  function _inheritsLoose(subClass, superClass) {
5176    subClass.prototype = Object.create(superClass.prototype);
5177    subClass.prototype.constructor = subClass;
5178
5179    _setPrototypeOf(subClass, superClass);
5180  }
5181
5182  function _setPrototypeOf(o, p) {
5183    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
5184      o.__proto__ = p;
5185      return o;
5186    };
5187    return _setPrototypeOf(o, p);
5188  }
5189
5190  /**
5191   * --------------------------------------------------------------------------
5192   * Bootstrap (v4.6.2): util.js
5193   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5194   * --------------------------------------------------------------------------
5195   */
5196  /**
5197   * Private TransitionEnd Helpers
5198   */
5199
5200  var TRANSITION_END = 'transitionend';
5201  var MAX_UID = 1000000;
5202  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
5203
5204  function toType(obj) {
5205    if (obj === null || typeof obj === 'undefined') {
5206      return "" + obj;
5207    }
5208
5209    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
5210  }
5211
5212  function getSpecialTransitionEndEvent() {
5213    return {
5214      bindType: TRANSITION_END,
5215      delegateType: TRANSITION_END,
5216      handle: function handle(event) {
5217        if ($__default["default"](event.target).is(this)) {
5218          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
5219        }
5220
5221        return undefined;
5222      }
5223    };
5224  }
5225
5226  function transitionEndEmulator(duration) {
5227    var _this = this;
5228
5229    var called = false;
5230    $__default["default"](this).one(Util.TRANSITION_END, function () {
5231      called = true;
5232    });
5233    setTimeout(function () {
5234      if (!called) {
5235        Util.triggerTransitionEnd(_this);
5236      }
5237    }, duration);
5238    return this;
5239  }
5240
5241  function setTransitionEndSupport() {
5242    $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator;
5243    $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
5244  }
5245  /**
5246   * Public Util API
5247   */
5248
5249
5250  var Util = {
5251    TRANSITION_END: 'bsTransitionEnd',
5252    getUID: function getUID(prefix) {
5253      do {
5254        // eslint-disable-next-line no-bitwise
5255        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
5256      } while (document.getElementById(prefix));
5257
5258      return prefix;
5259    },
5260    getSelectorFromElement: function getSelectorFromElement(element) {
5261      var selector = element.getAttribute('data-target');
5262
5263      if (!selector || selector === '#') {
5264        var hrefAttr = element.getAttribute('href');
5265        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
5266      }
5267
5268      try {
5269        return document.querySelector(selector) ? selector : null;
5270      } catch (_) {
5271        return null;
5272      }
5273    },
5274    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
5275      if (!element) {
5276        return 0;
5277      } // Get transition-duration of the element
5278
5279
5280      var transitionDuration = $__default["default"](element).css('transition-duration');
5281      var transitionDelay = $__default["default"](element).css('transition-delay');
5282      var floatTransitionDuration = parseFloat(transitionDuration);
5283      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
5284
5285      if (!floatTransitionDuration && !floatTransitionDelay) {
5286        return 0;
5287      } // If multiple durations are defined, take the first
5288
5289
5290      transitionDuration = transitionDuration.split(',')[0];
5291      transitionDelay = transitionDelay.split(',')[0];
5292      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
5293    },
5294    reflow: function reflow(element) {
5295      return element.offsetHeight;
5296    },
5297    triggerTransitionEnd: function triggerTransitionEnd(element) {
5298      $__default["default"](element).trigger(TRANSITION_END);
5299    },
5300    supportsTransitionEnd: function supportsTransitionEnd() {
5301      return Boolean(TRANSITION_END);
5302    },
5303    isElement: function isElement(obj) {
5304      return (obj[0] || obj).nodeType;
5305    },
5306    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
5307      for (var property in configTypes) {
5308        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
5309          var expectedTypes = configTypes[property];
5310          var value = config[property];
5311          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
5312
5313          if (!new RegExp(expectedTypes).test(valueType)) {
5314            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
5315          }
5316        }
5317      }
5318    },
5319    findShadowRoot: function findShadowRoot(element) {
5320      if (!document.documentElement.attachShadow) {
5321        return null;
5322      } // Can find the shadow root otherwise it'll return the document
5323
5324
5325      if (typeof element.getRootNode === 'function') {
5326        var root = element.getRootNode();
5327        return root instanceof ShadowRoot ? root : null;
5328      }
5329
5330      if (element instanceof ShadowRoot) {
5331        return element;
5332      } // when we don't find a shadow root
5333
5334
5335      if (!element.parentNode) {
5336        return null;
5337      }
5338
5339      return Util.findShadowRoot(element.parentNode);
5340    },
5341    jQueryDetection: function jQueryDetection() {
5342      if (typeof $__default["default"] === 'undefined') {
5343        throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
5344      }
5345
5346      var version = $__default["default"].fn.jquery.split(' ')[0].split('.');
5347      var minMajor = 1;
5348      var ltMajor = 2;
5349      var minMinor = 9;
5350      var minPatch = 1;
5351      var maxMajor = 4;
5352
5353      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
5354        throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
5355      }
5356    }
5357  };
5358  Util.jQueryDetection();
5359  setTransitionEndSupport();
5360
5361  /**
5362   * Constants
5363   */
5364
5365  var NAME$a = 'alert';
5366  var VERSION$a = '4.6.2';
5367  var DATA_KEY$a = 'bs.alert';
5368  var EVENT_KEY$a = "." + DATA_KEY$a;
5369  var DATA_API_KEY$7 = '.data-api';
5370  var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a];
5371  var CLASS_NAME_ALERT = 'alert';
5372  var CLASS_NAME_FADE$5 = 'fade';
5373  var CLASS_NAME_SHOW$7 = 'show';
5374  var EVENT_CLOSE = "close" + EVENT_KEY$a;
5375  var EVENT_CLOSED = "closed" + EVENT_KEY$a;
5376  var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$7;
5377  var SELECTOR_DISMISS = '[data-dismiss="alert"]';
5378  /**
5379   * Class definition
5380   */
5381
5382  var Alert = /*#__PURE__*/function () {
5383    function Alert(element) {
5384      this._element = element;
5385    } // Getters
5386
5387
5388    var _proto = Alert.prototype;
5389
5390    // Public
5391    _proto.close = function close(element) {
5392      var rootElement = this._element;
5393
5394      if (element) {
5395        rootElement = this._getRootElement(element);
5396      }
5397
5398      var customEvent = this._triggerCloseEvent(rootElement);
5399
5400      if (customEvent.isDefaultPrevented()) {
5401        return;
5402      }
5403
5404      this._removeElement(rootElement);
5405    };
5406
5407    _proto.dispose = function dispose() {
5408      $__default["default"].removeData(this._element, DATA_KEY$a);
5409      this._element = null;
5410    } // Private
5411    ;
5412
5413    _proto._getRootElement = function _getRootElement(element) {
5414      var selector = Util.getSelectorFromElement(element);
5415      var parent = false;
5416
5417      if (selector) {
5418        parent = document.querySelector(selector);
5419      }
5420
5421      if (!parent) {
5422        parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
5423      }
5424
5425      return parent;
5426    };
5427
5428    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
5429      var closeEvent = $__default["default"].Event(EVENT_CLOSE);
5430      $__default["default"](element).trigger(closeEvent);
5431      return closeEvent;
5432    };
5433
5434    _proto._removeElement = function _removeElement(element) {
5435      var _this = this;
5436
5437      $__default["default"](element).removeClass(CLASS_NAME_SHOW$7);
5438
5439      if (!$__default["default"](element).hasClass(CLASS_NAME_FADE$5)) {
5440        this._destroyElement(element);
5441
5442        return;
5443      }
5444
5445      var transitionDuration = Util.getTransitionDurationFromElement(element);
5446      $__default["default"](element).one(Util.TRANSITION_END, function (event) {
5447        return _this._destroyElement(element, event);
5448      }).emulateTransitionEnd(transitionDuration);
5449    };
5450
5451    _proto._destroyElement = function _destroyElement(element) {
5452      $__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
5453    } // Static
5454    ;
5455
5456    Alert._jQueryInterface = function _jQueryInterface(config) {
5457      return this.each(function () {
5458        var $element = $__default["default"](this);
5459        var data = $element.data(DATA_KEY$a);
5460
5461        if (!data) {
5462          data = new Alert(this);
5463          $element.data(DATA_KEY$a, data);
5464        }
5465
5466        if (config === 'close') {
5467          data[config](this);
5468        }
5469      });
5470    };
5471
5472    Alert._handleDismiss = function _handleDismiss(alertInstance) {
5473      return function (event) {
5474        if (event) {
5475          event.preventDefault();
5476        }
5477
5478        alertInstance.close(this);
5479      };
5480    };
5481
5482    _createClass(Alert, null, [{
5483      key: "VERSION",
5484      get: function get() {
5485        return VERSION$a;
5486      }
5487    }]);
5488
5489    return Alert;
5490  }();
5491  /**
5492   * Data API implementation
5493   */
5494
5495
5496  $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
5497  /**
5498   * jQuery
5499   */
5500
5501  $__default["default"].fn[NAME$a] = Alert._jQueryInterface;
5502  $__default["default"].fn[NAME$a].Constructor = Alert;
5503
5504  $__default["default"].fn[NAME$a].noConflict = function () {
5505    $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;
5506    return Alert._jQueryInterface;
5507  };
5508
5509  /**
5510   * Constants
5511   */
5512
5513  var NAME$9 = 'button';
5514  var VERSION$9 = '4.6.2';
5515  var DATA_KEY$9 = 'bs.button';
5516  var EVENT_KEY$9 = "." + DATA_KEY$9;
5517  var DATA_API_KEY$6 = '.data-api';
5518  var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9];
5519  var CLASS_NAME_ACTIVE$3 = 'active';
5520  var CLASS_NAME_BUTTON = 'btn';
5521  var CLASS_NAME_FOCUS = 'focus';
5522  var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$9 + DATA_API_KEY$6;
5523  var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$9 + DATA_API_KEY$6 + " " + ("blur" + EVENT_KEY$9 + DATA_API_KEY$6);
5524  var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$9 + DATA_API_KEY$6;
5525  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
5526  var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
5527  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="button"]';
5528  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
5529  var SELECTOR_INPUT = 'input:not([type="hidden"])';
5530  var SELECTOR_ACTIVE$2 = '.active';
5531  var SELECTOR_BUTTON = '.btn';
5532  /**
5533   * Class definition
5534   */
5535
5536  var Button = /*#__PURE__*/function () {
5537    function Button(element) {
5538      this._element = element;
5539      this.shouldAvoidTriggerChange = false;
5540    } // Getters
5541
5542
5543    var _proto = Button.prototype;
5544
5545    // Public
5546    _proto.toggle = function toggle() {
5547      var triggerChangeEvent = true;
5548      var addAriaPressed = true;
5549      var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
5550
5551      if (rootElement) {
5552        var input = this._element.querySelector(SELECTOR_INPUT);
5553
5554        if (input) {
5555          if (input.type === 'radio') {
5556            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {
5557              triggerChangeEvent = false;
5558            } else {
5559              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);
5560
5561              if (activeElement) {
5562                $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);
5563              }
5564            }
5565          }
5566
5567          if (triggerChangeEvent) {
5568            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
5569            if (input.type === 'checkbox' || input.type === 'radio') {
5570              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);
5571            }
5572
5573            if (!this.shouldAvoidTriggerChange) {
5574              $__default["default"](input).trigger('change');
5575            }
5576          }
5577
5578          input.focus();
5579          addAriaPressed = false;
5580        }
5581      }
5582
5583      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
5584        if (addAriaPressed) {
5585          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));
5586        }
5587
5588        if (triggerChangeEvent) {
5589          $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);
5590        }
5591      }
5592    };
5593
5594    _proto.dispose = function dispose() {
5595      $__default["default"].removeData(this._element, DATA_KEY$9);
5596      this._element = null;
5597    } // Static
5598    ;
5599
5600    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
5601      return this.each(function () {
5602        var $element = $__default["default"](this);
5603        var data = $element.data(DATA_KEY$9);
5604
5605        if (!data) {
5606          data = new Button(this);
5607          $element.data(DATA_KEY$9, data);
5608        }
5609
5610        data.shouldAvoidTriggerChange = avoidTriggerChange;
5611
5612        if (config === 'toggle') {
5613          data[config]();
5614        }
5615      });
5616    };
5617
5618    _createClass(Button, null, [{
5619      key: "VERSION",
5620      get: function get() {
5621        return VERSION$9;
5622      }
5623    }]);
5624
5625    return Button;
5626  }();
5627  /**
5628   * Data API implementation
5629   */
5630
5631
5632  $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
5633    var button = event.target;
5634    var initialButton = button;
5635
5636    if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
5637      button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
5638    }
5639
5640    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
5641      event.preventDefault(); // work around Firefox bug #1540995
5642    } else {
5643      var inputBtn = button.querySelector(SELECTOR_INPUT);
5644
5645      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
5646        event.preventDefault(); // work around Firefox bug #1540995
5647
5648        return;
5649      }
5650
5651      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {
5652        Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT');
5653      }
5654    }
5655  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
5656    var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];
5657    $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
5658  });
5659  $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function () {
5660    // ensure correct active class is set to match the controls' actual values/states
5661    // find all checkboxes/readio buttons inside data-toggle groups
5662    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
5663
5664    for (var i = 0, len = buttons.length; i < len; i++) {
5665      var button = buttons[i];
5666      var input = button.querySelector(SELECTOR_INPUT);
5667
5668      if (input.checked || input.hasAttribute('checked')) {
5669        button.classList.add(CLASS_NAME_ACTIVE$3);
5670      } else {
5671        button.classList.remove(CLASS_NAME_ACTIVE$3);
5672      }
5673    } // find all button toggles
5674
5675
5676    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));
5677
5678    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
5679      var _button = buttons[_i];
5680
5681      if (_button.getAttribute('aria-pressed') === 'true') {
5682        _button.classList.add(CLASS_NAME_ACTIVE$3);
5683      } else {
5684        _button.classList.remove(CLASS_NAME_ACTIVE$3);
5685      }
5686    }
5687  });
5688  /**
5689   * jQuery
5690   */
5691
5692  $__default["default"].fn[NAME$9] = Button._jQueryInterface;
5693  $__default["default"].fn[NAME$9].Constructor = Button;
5694
5695  $__default["default"].fn[NAME$9].noConflict = function () {
5696    $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;
5697    return Button._jQueryInterface;
5698  };
5699
5700  /**
5701   * Constants
5702   */
5703
5704  var NAME$8 = 'carousel';
5705  var VERSION$8 = '4.6.2';
5706  var DATA_KEY$8 = 'bs.carousel';
5707  var EVENT_KEY$8 = "." + DATA_KEY$8;
5708  var DATA_API_KEY$5 = '.data-api';
5709  var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8];
5710  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
5711
5712  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
5713
5714  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
5715
5716  var SWIPE_THRESHOLD = 40;
5717  var CLASS_NAME_CAROUSEL = 'carousel';
5718  var CLASS_NAME_ACTIVE$2 = 'active';
5719  var CLASS_NAME_SLIDE = 'slide';
5720  var CLASS_NAME_RIGHT = 'carousel-item-right';
5721  var CLASS_NAME_LEFT = 'carousel-item-left';
5722  var CLASS_NAME_NEXT = 'carousel-item-next';
5723  var CLASS_NAME_PREV = 'carousel-item-prev';
5724  var CLASS_NAME_POINTER_EVENT = 'pointer-event';
5725  var DIRECTION_NEXT = 'next';
5726  var DIRECTION_PREV = 'prev';
5727  var DIRECTION_LEFT = 'left';
5728  var DIRECTION_RIGHT = 'right';
5729  var EVENT_SLIDE = "slide" + EVENT_KEY$8;
5730  var EVENT_SLID = "slid" + EVENT_KEY$8;
5731  var EVENT_KEYDOWN = "keydown" + EVENT_KEY$8;
5732  var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$8;
5733  var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$8;
5734  var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$8;
5735  var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$8;
5736  var EVENT_TOUCHEND = "touchend" + EVENT_KEY$8;
5737  var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$8;
5738  var EVENT_POINTERUP = "pointerup" + EVENT_KEY$8;
5739  var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8;
5740  var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$5;
5741  var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$8 + DATA_API_KEY$5;
5742  var SELECTOR_ACTIVE$1 = '.active';
5743  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
5744  var SELECTOR_ITEM = '.carousel-item';
5745  var SELECTOR_ITEM_IMG = '.carousel-item img';
5746  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
5747  var SELECTOR_INDICATORS = '.carousel-indicators';
5748  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
5749  var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
5750  var Default$7 = {
5751    interval: 5000,
5752    keyboard: true,
5753    slide: false,
5754    pause: 'hover',
5755    wrap: true,
5756    touch: true
5757  };
5758  var DefaultType$7 = {
5759    interval: '(number|boolean)',
5760    keyboard: 'boolean',
5761    slide: '(boolean|string)',
5762    pause: '(string|boolean)',
5763    wrap: 'boolean',
5764    touch: 'boolean'
5765  };
5766  var PointerType = {
5767    TOUCH: 'touch',
5768    PEN: 'pen'
5769  };
5770  /**
5771   * Class definition
5772   */
5773
5774  var Carousel = /*#__PURE__*/function () {
5775    function Carousel(element, config) {
5776      this._items = null;
5777      this._interval = null;
5778      this._activeElement = null;
5779      this._isPaused = false;
5780      this._isSliding = false;
5781      this.touchTimeout = null;
5782      this.touchStartX = 0;
5783      this.touchDeltaX = 0;
5784      this._config = this._getConfig(config);
5785      this._element = element;
5786      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
5787      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
5788      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
5789
5790      this._addEventListeners();
5791    } // Getters
5792
5793
5794    var _proto = Carousel.prototype;
5795
5796    // Public
5797    _proto.next = function next() {
5798      if (!this._isSliding) {
5799        this._slide(DIRECTION_NEXT);
5800      }
5801    };
5802
5803    _proto.nextWhenVisible = function nextWhenVisible() {
5804      var $element = $__default["default"](this._element); // Don't call next when the page isn't visible
5805      // or the carousel or its parent isn't visible
5806
5807      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {
5808        this.next();
5809      }
5810    };
5811
5812    _proto.prev = function prev() {
5813      if (!this._isSliding) {
5814        this._slide(DIRECTION_PREV);
5815      }
5816    };
5817
5818    _proto.pause = function pause(event) {
5819      if (!event) {
5820        this._isPaused = true;
5821      }
5822
5823      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
5824        Util.triggerTransitionEnd(this._element);
5825        this.cycle(true);
5826      }
5827
5828      clearInterval(this._interval);
5829      this._interval = null;
5830    };
5831
5832    _proto.cycle = function cycle(event) {
5833      if (!event) {
5834        this._isPaused = false;
5835      }
5836
5837      if (this._interval) {
5838        clearInterval(this._interval);
5839        this._interval = null;
5840      }
5841
5842      if (this._config.interval && !this._isPaused) {
5843        this._updateInterval();
5844
5845        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
5846      }
5847    };
5848
5849    _proto.to = function to(index) {
5850      var _this = this;
5851
5852      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
5853
5854      var activeIndex = this._getItemIndex(this._activeElement);
5855
5856      if (index > this._items.length - 1 || index < 0) {
5857        return;
5858      }
5859
5860      if (this._isSliding) {
5861        $__default["default"](this._element).one(EVENT_SLID, function () {
5862          return _this.to(index);
5863        });
5864        return;
5865      }
5866
5867      if (activeIndex === index) {
5868        this.pause();
5869        this.cycle();
5870        return;
5871      }
5872
5873      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
5874
5875      this._slide(direction, this._items[index]);
5876    };
5877
5878    _proto.dispose = function dispose() {
5879      $__default["default"](this._element).off(EVENT_KEY$8);
5880      $__default["default"].removeData(this._element, DATA_KEY$8);
5881      this._items = null;
5882      this._config = null;
5883      this._element = null;
5884      this._interval = null;
5885      this._isPaused = null;
5886      this._isSliding = null;
5887      this._activeElement = null;
5888      this._indicatorsElement = null;
5889    } // Private
5890    ;
5891
5892    _proto._getConfig = function _getConfig(config) {
5893      config = _extends({}, Default$7, config);
5894      Util.typeCheckConfig(NAME$8, config, DefaultType$7);
5895      return config;
5896    };
5897
5898    _proto._handleSwipe = function _handleSwipe() {
5899      var absDeltax = Math.abs(this.touchDeltaX);
5900
5901      if (absDeltax <= SWIPE_THRESHOLD) {
5902        return;
5903      }
5904
5905      var direction = absDeltax / this.touchDeltaX;
5906      this.touchDeltaX = 0; // swipe left
5907
5908      if (direction > 0) {
5909        this.prev();
5910      } // swipe right
5911
5912
5913      if (direction < 0) {
5914        this.next();
5915      }
5916    };
5917
5918    _proto._addEventListeners = function _addEventListeners() {
5919      var _this2 = this;
5920
5921      if (this._config.keyboard) {
5922        $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) {
5923          return _this2._keydown(event);
5924        });
5925      }
5926
5927      if (this._config.pause === 'hover') {
5928        $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) {
5929          return _this2.pause(event);
5930        }).on(EVENT_MOUSELEAVE, function (event) {
5931          return _this2.cycle(event);
5932        });
5933      }
5934
5935      if (this._config.touch) {
5936        this._addTouchEventListeners();
5937      }
5938    };
5939
5940    _proto._addTouchEventListeners = function _addTouchEventListeners() {
5941      var _this3 = this;
5942
5943      if (!this._touchSupported) {
5944        return;
5945      }
5946
5947      var start = function start(event) {
5948        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
5949          _this3.touchStartX = event.originalEvent.clientX;
5950        } else if (!_this3._pointerEvent) {
5951          _this3.touchStartX = event.originalEvent.touches[0].clientX;
5952        }
5953      };
5954
5955      var move = function move(event) {
5956        // ensure swiping with one touch and not pinching
5957        _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;
5958      };
5959
5960      var end = function end(event) {
5961        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
5962          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
5963        }
5964
5965        _this3._handleSwipe();
5966
5967        if (_this3._config.pause === 'hover') {
5968          // If it's a touch-enabled device, mouseenter/leave are fired as
5969          // part of the mouse compatibility events on first tap - the carousel
5970          // would stop cycling until user tapped out of it;
5971          // here, we listen for touchend, explicitly pause the carousel
5972          // (as if it's the second time we tap on it, mouseenter compat event
5973          // is NOT fired) and after a timeout (to allow for mouse compatibility
5974          // events to fire) we explicitly restart cycling
5975          _this3.pause();
5976
5977          if (_this3.touchTimeout) {
5978            clearTimeout(_this3.touchTimeout);
5979          }
5980
5981          _this3.touchTimeout = setTimeout(function (event) {
5982            return _this3.cycle(event);
5983          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
5984        }
5985      };
5986
5987      $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
5988        return e.preventDefault();
5989      });
5990
5991      if (this._pointerEvent) {
5992        $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) {
5993          return start(event);
5994        });
5995        $__default["default"](this._element).on(EVENT_POINTERUP, function (event) {
5996          return end(event);
5997        });
5998
5999        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
6000      } else {
6001        $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) {
6002          return start(event);
6003        });
6004        $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) {
6005          return move(event);
6006        });
6007        $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) {
6008          return end(event);
6009        });
6010      }
6011    };
6012
6013    _proto._keydown = function _keydown(event) {
6014      if (/input|textarea/i.test(event.target.tagName)) {
6015        return;
6016      }
6017
6018      switch (event.which) {
6019        case ARROW_LEFT_KEYCODE:
6020          event.preventDefault();
6021          this.prev();
6022          break;
6023
6024        case ARROW_RIGHT_KEYCODE:
6025          event.preventDefault();
6026          this.next();
6027          break;
6028      }
6029    };
6030
6031    _proto._getItemIndex = function _getItemIndex(element) {
6032      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
6033      return this._items.indexOf(element);
6034    };
6035
6036    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
6037      var isNextDirection = direction === DIRECTION_NEXT;
6038      var isPrevDirection = direction === DIRECTION_PREV;
6039
6040      var activeIndex = this._getItemIndex(activeElement);
6041
6042      var lastItemIndex = this._items.length - 1;
6043      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
6044
6045      if (isGoingToWrap && !this._config.wrap) {
6046        return activeElement;
6047      }
6048
6049      var delta = direction === DIRECTION_PREV ? -1 : 1;
6050      var itemIndex = (activeIndex + delta) % this._items.length;
6051      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
6052    };
6053
6054    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
6055      var targetIndex = this._getItemIndex(relatedTarget);
6056
6057      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
6058
6059      var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
6060        relatedTarget: relatedTarget,
6061        direction: eventDirectionName,
6062        from: fromIndex,
6063        to: targetIndex
6064      });
6065      $__default["default"](this._element).trigger(slideEvent);
6066      return slideEvent;
6067    };
6068
6069    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
6070      if (this._indicatorsElement) {
6071        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));
6072        $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$2);
6073
6074        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
6075
6076        if (nextIndicator) {
6077          $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);
6078        }
6079      }
6080    };
6081
6082    _proto._updateInterval = function _updateInterval() {
6083      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);
6084
6085      if (!element) {
6086        return;
6087      }
6088
6089      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);
6090
6091      if (elementInterval) {
6092        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
6093        this._config.interval = elementInterval;
6094      } else {
6095        this._config.interval = this._config.defaultInterval || this._config.interval;
6096      }
6097    };
6098
6099    _proto._slide = function _slide(direction, element) {
6100      var _this4 = this;
6101
6102      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
6103
6104      var activeElementIndex = this._getItemIndex(activeElement);
6105
6106      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
6107
6108      var nextElementIndex = this._getItemIndex(nextElement);
6109
6110      var isCycling = Boolean(this._interval);
6111      var directionalClassName;
6112      var orderClassName;
6113      var eventDirectionName;
6114
6115      if (direction === DIRECTION_NEXT) {
6116        directionalClassName = CLASS_NAME_LEFT;
6117        orderClassName = CLASS_NAME_NEXT;
6118        eventDirectionName = DIRECTION_LEFT;
6119      } else {
6120        directionalClassName = CLASS_NAME_RIGHT;
6121        orderClassName = CLASS_NAME_PREV;
6122        eventDirectionName = DIRECTION_RIGHT;
6123      }
6124
6125      if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {
6126        this._isSliding = false;
6127        return;
6128      }
6129
6130      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
6131
6132      if (slideEvent.isDefaultPrevented()) {
6133        return;
6134      }
6135
6136      if (!activeElement || !nextElement) {
6137        // Some weirdness is happening, so we bail
6138        return;
6139      }
6140
6141      this._isSliding = true;
6142
6143      if (isCycling) {
6144        this.pause();
6145      }
6146
6147      this._setActiveIndicatorElement(nextElement);
6148
6149      this._activeElement = nextElement;
6150      var slidEvent = $__default["default"].Event(EVENT_SLID, {
6151        relatedTarget: nextElement,
6152        direction: eventDirectionName,
6153        from: activeElementIndex,
6154        to: nextElementIndex
6155      });
6156
6157      if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {
6158        $__default["default"](nextElement).addClass(orderClassName);
6159        Util.reflow(nextElement);
6160        $__default["default"](activeElement).addClass(directionalClassName);
6161        $__default["default"](nextElement).addClass(directionalClassName);
6162        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
6163        $__default["default"](activeElement).one(Util.TRANSITION_END, function () {
6164          $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$2);
6165          $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + " " + orderClassName + " " + directionalClassName);
6166          _this4._isSliding = false;
6167          setTimeout(function () {
6168            return $__default["default"](_this4._element).trigger(slidEvent);
6169          }, 0);
6170        }).emulateTransitionEnd(transitionDuration);
6171      } else {
6172        $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);
6173        $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$2);
6174        this._isSliding = false;
6175        $__default["default"](this._element).trigger(slidEvent);
6176      }
6177
6178      if (isCycling) {
6179        this.cycle();
6180      }
6181    } // Static
6182    ;
6183
6184    Carousel._jQueryInterface = function _jQueryInterface(config) {
6185      return this.each(function () {
6186        var data = $__default["default"](this).data(DATA_KEY$8);
6187
6188        var _config = _extends({}, Default$7, $__default["default"](this).data());
6189
6190        if (typeof config === 'object') {
6191          _config = _extends({}, _config, config);
6192        }
6193
6194        var action = typeof config === 'string' ? config : _config.slide;
6195
6196        if (!data) {
6197          data = new Carousel(this, _config);
6198          $__default["default"](this).data(DATA_KEY$8, data);
6199        }
6200
6201        if (typeof config === 'number') {
6202          data.to(config);
6203        } else if (typeof action === 'string') {
6204          if (typeof data[action] === 'undefined') {
6205            throw new TypeError("No method named \"" + action + "\"");
6206          }
6207
6208          data[action]();
6209        } else if (_config.interval && _config.ride) {
6210          data.pause();
6211          data.cycle();
6212        }
6213      });
6214    };
6215
6216    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
6217      var selector = Util.getSelectorFromElement(this);
6218
6219      if (!selector) {
6220        return;
6221      }
6222
6223      var target = $__default["default"](selector)[0];
6224
6225      if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
6226        return;
6227      }
6228
6229      var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
6230
6231      var slideIndex = this.getAttribute('data-slide-to');
6232
6233      if (slideIndex) {
6234        config.interval = false;
6235      }
6236
6237      Carousel._jQueryInterface.call($__default["default"](target), config);
6238
6239      if (slideIndex) {
6240        $__default["default"](target).data(DATA_KEY$8).to(slideIndex);
6241      }
6242
6243      event.preventDefault();
6244    };
6245
6246    _createClass(Carousel, null, [{
6247      key: "VERSION",
6248      get: function get() {
6249        return VERSION$8;
6250      }
6251    }, {
6252      key: "Default",
6253      get: function get() {
6254        return Default$7;
6255      }
6256    }]);
6257
6258    return Carousel;
6259  }();
6260  /**
6261   * Data API implementation
6262   */
6263
6264
6265  $__default["default"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);
6266  $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () {
6267    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
6268
6269    for (var i = 0, len = carousels.length; i < len; i++) {
6270      var $carousel = $__default["default"](carousels[i]);
6271
6272      Carousel._jQueryInterface.call($carousel, $carousel.data());
6273    }
6274  });
6275  /**
6276   * jQuery
6277   */
6278
6279  $__default["default"].fn[NAME$8] = Carousel._jQueryInterface;
6280  $__default["default"].fn[NAME$8].Constructor = Carousel;
6281
6282  $__default["default"].fn[NAME$8].noConflict = function () {
6283    $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;
6284    return Carousel._jQueryInterface;
6285  };
6286
6287  /**
6288   * Constants
6289   */
6290
6291  var NAME$7 = 'collapse';
6292  var VERSION$7 = '4.6.2';
6293  var DATA_KEY$7 = 'bs.collapse';
6294  var EVENT_KEY$7 = "." + DATA_KEY$7;
6295  var DATA_API_KEY$4 = '.data-api';
6296  var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7];
6297  var CLASS_NAME_SHOW$6 = 'show';
6298  var CLASS_NAME_COLLAPSE = 'collapse';
6299  var CLASS_NAME_COLLAPSING = 'collapsing';
6300  var CLASS_NAME_COLLAPSED = 'collapsed';
6301  var DIMENSION_WIDTH = 'width';
6302  var DIMENSION_HEIGHT = 'height';
6303  var EVENT_SHOW$4 = "show" + EVENT_KEY$7;
6304  var EVENT_SHOWN$4 = "shown" + EVENT_KEY$7;
6305  var EVENT_HIDE$4 = "hide" + EVENT_KEY$7;
6306  var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$7;
6307  var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$7 + DATA_API_KEY$4;
6308  var SELECTOR_ACTIVES = '.show, .collapsing';
6309  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="collapse"]';
6310  var Default$6 = {
6311    toggle: true,
6312    parent: ''
6313  };
6314  var DefaultType$6 = {
6315    toggle: 'boolean',
6316    parent: '(string|element)'
6317  };
6318  /**
6319   * Class definition
6320   */
6321
6322  var Collapse = /*#__PURE__*/function () {
6323    function Collapse(element, config) {
6324      this._isTransitioning = false;
6325      this._element = element;
6326      this._config = this._getConfig(config);
6327      this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
6328      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));
6329
6330      for (var i = 0, len = toggleList.length; i < len; i++) {
6331        var elem = toggleList[i];
6332        var selector = Util.getSelectorFromElement(elem);
6333        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
6334          return foundElem === element;
6335        });
6336
6337        if (selector !== null && filterElement.length > 0) {
6338          this._selector = selector;
6339
6340          this._triggerArray.push(elem);
6341        }
6342      }
6343
6344      this._parent = this._config.parent ? this._getParent() : null;
6345
6346      if (!this._config.parent) {
6347        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
6348      }
6349
6350      if (this._config.toggle) {
6351        this.toggle();
6352      }
6353    } // Getters
6354
6355
6356    var _proto = Collapse.prototype;
6357
6358    // Public
6359    _proto.toggle = function toggle() {
6360      if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {
6361        this.hide();
6362      } else {
6363        this.show();
6364      }
6365    };
6366
6367    _proto.show = function show() {
6368      var _this = this;
6369
6370      if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {
6371        return;
6372      }
6373
6374      var actives;
6375      var activesData;
6376
6377      if (this._parent) {
6378        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
6379          if (typeof _this._config.parent === 'string') {
6380            return elem.getAttribute('data-parent') === _this._config.parent;
6381          }
6382
6383          return elem.classList.contains(CLASS_NAME_COLLAPSE);
6384        });
6385
6386        if (actives.length === 0) {
6387          actives = null;
6388        }
6389      }
6390
6391      if (actives) {
6392        activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$7);
6393
6394        if (activesData && activesData._isTransitioning) {
6395          return;
6396        }
6397      }
6398
6399      var startEvent = $__default["default"].Event(EVENT_SHOW$4);
6400      $__default["default"](this._element).trigger(startEvent);
6401
6402      if (startEvent.isDefaultPrevented()) {
6403        return;
6404      }
6405
6406      if (actives) {
6407        Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide');
6408
6409        if (!activesData) {
6410          $__default["default"](actives).data(DATA_KEY$7, null);
6411        }
6412      }
6413
6414      var dimension = this._getDimension();
6415
6416      $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
6417      this._element.style[dimension] = 0;
6418
6419      if (this._triggerArray.length) {
6420        $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
6421      }
6422
6423      this.setTransitioning(true);
6424
6425      var complete = function complete() {
6426        $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6);
6427        _this._element.style[dimension] = '';
6428
6429        _this.setTransitioning(false);
6430
6431        $__default["default"](_this._element).trigger(EVENT_SHOWN$4);
6432      };
6433
6434      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
6435      var scrollSize = "scroll" + capitalizedDimension;
6436      var transitionDuration = Util.getTransitionDurationFromElement(this._element);
6437      $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
6438      this._element.style[dimension] = this._element[scrollSize] + "px";
6439    };
6440
6441    _proto.hide = function hide() {
6442      var _this2 = this;
6443
6444      if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) {
6445        return;
6446      }
6447
6448      var startEvent = $__default["default"].Event(EVENT_HIDE$4);
6449      $__default["default"](this._element).trigger(startEvent);
6450
6451      if (startEvent.isDefaultPrevented()) {
6452        return;
6453      }
6454
6455      var dimension = this._getDimension();
6456
6457      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
6458      Util.reflow(this._element);
6459      $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6);
6460      var triggerArrayLength = this._triggerArray.length;
6461
6462      if (triggerArrayLength > 0) {
6463        for (var i = 0; i < triggerArrayLength; i++) {
6464          var trigger = this._triggerArray[i];
6465          var selector = Util.getSelectorFromElement(trigger);
6466
6467          if (selector !== null) {
6468            var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
6469
6470            if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {
6471              $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
6472            }
6473          }
6474        }
6475      }
6476
6477      this.setTransitioning(true);
6478
6479      var complete = function complete() {
6480        _this2.setTransitioning(false);
6481
6482        $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);
6483      };
6484
6485      this._element.style[dimension] = '';
6486      var transitionDuration = Util.getTransitionDurationFromElement(this._element);
6487      $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
6488    };
6489
6490    _proto.setTransitioning = function setTransitioning(isTransitioning) {
6491      this._isTransitioning = isTransitioning;
6492    };
6493
6494    _proto.dispose = function dispose() {
6495      $__default["default"].removeData(this._element, DATA_KEY$7);
6496      this._config = null;
6497      this._parent = null;
6498      this._element = null;
6499      this._triggerArray = null;
6500      this._isTransitioning = null;
6501    } // Private
6502    ;
6503
6504    _proto._getConfig = function _getConfig(config) {
6505      config = _extends({}, Default$6, config);
6506      config.toggle = Boolean(config.toggle); // Coerce string values
6507
6508      Util.typeCheckConfig(NAME$7, config, DefaultType$6);
6509      return config;
6510    };
6511
6512    _proto._getDimension = function _getDimension() {
6513      var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);
6514      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
6515    };
6516
6517    _proto._getParent = function _getParent() {
6518      var _this3 = this;
6519
6520      var parent;
6521
6522      if (Util.isElement(this._config.parent)) {
6523        parent = this._config.parent; // It's a jQuery object
6524
6525        if (typeof this._config.parent.jquery !== 'undefined') {
6526          parent = this._config.parent[0];
6527        }
6528      } else {
6529        parent = document.querySelector(this._config.parent);
6530      }
6531
6532      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
6533      var children = [].slice.call(parent.querySelectorAll(selector));
6534      $__default["default"](children).each(function (i, element) {
6535        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
6536      });
6537      return parent;
6538    };
6539
6540    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
6541      var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$6);
6542
6543      if (triggerArray.length) {
6544        $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
6545      }
6546    } // Static
6547    ;
6548
6549    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
6550      var selector = Util.getSelectorFromElement(element);
6551      return selector ? document.querySelector(selector) : null;
6552    };
6553
6554    Collapse._jQueryInterface = function _jQueryInterface(config) {
6555      return this.each(function () {
6556        var $element = $__default["default"](this);
6557        var data = $element.data(DATA_KEY$7);
6558
6559        var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});
6560
6561        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
6562          _config.toggle = false;
6563        }
6564
6565        if (!data) {
6566          data = new Collapse(this, _config);
6567          $element.data(DATA_KEY$7, data);
6568        }
6569
6570        if (typeof config === 'string') {
6571          if (typeof data[config] === 'undefined') {
6572            throw new TypeError("No method named \"" + config + "\"");
6573          }
6574
6575          data[config]();
6576        }
6577      });
6578    };
6579
6580    _createClass(Collapse, null, [{
6581      key: "VERSION",
6582      get: function get() {
6583        return VERSION$7;
6584      }
6585    }, {
6586      key: "Default",
6587      get: function get() {
6588        return Default$6;
6589      }
6590    }]);
6591
6592    return Collapse;
6593  }();
6594  /**
6595   * Data API implementation
6596   */
6597
6598
6599  $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
6600    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
6601    if (event.currentTarget.tagName === 'A') {
6602      event.preventDefault();
6603    }
6604
6605    var $trigger = $__default["default"](this);
6606    var selector = Util.getSelectorFromElement(this);
6607    var selectors = [].slice.call(document.querySelectorAll(selector));
6608    $__default["default"](selectors).each(function () {
6609      var $target = $__default["default"](this);
6610      var data = $target.data(DATA_KEY$7);
6611      var config = data ? 'toggle' : $trigger.data();
6612
6613      Collapse._jQueryInterface.call($target, config);
6614    });
6615  });
6616  /**
6617   * jQuery
6618   */
6619
6620  $__default["default"].fn[NAME$7] = Collapse._jQueryInterface;
6621  $__default["default"].fn[NAME$7].Constructor = Collapse;
6622
6623  $__default["default"].fn[NAME$7].noConflict = function () {
6624    $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;
6625    return Collapse._jQueryInterface;
6626  };
6627
6628  /**
6629   * Constants
6630   */
6631
6632  var NAME$6 = 'dropdown';
6633  var VERSION$6 = '4.6.2';
6634  var DATA_KEY$6 = 'bs.dropdown';
6635  var EVENT_KEY$6 = "." + DATA_KEY$6;
6636  var DATA_API_KEY$3 = '.data-api';
6637  var JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6];
6638  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
6639
6640  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
6641
6642  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
6643
6644  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
6645
6646  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
6647
6648  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
6649
6650  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE$1);
6651  var CLASS_NAME_DISABLED$1 = 'disabled';
6652  var CLASS_NAME_SHOW$5 = 'show';
6653  var CLASS_NAME_DROPUP = 'dropup';
6654  var CLASS_NAME_DROPRIGHT = 'dropright';
6655  var CLASS_NAME_DROPLEFT = 'dropleft';
6656  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
6657  var CLASS_NAME_POSITION_STATIC = 'position-static';
6658  var EVENT_HIDE$3 = "hide" + EVENT_KEY$6;
6659  var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$6;
6660  var EVENT_SHOW$3 = "show" + EVENT_KEY$6;
6661  var EVENT_SHOWN$3 = "shown" + EVENT_KEY$6;
6662  var EVENT_CLICK = "click" + EVENT_KEY$6;
6663  var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$6 + DATA_API_KEY$3;
6664  var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$6 + DATA_API_KEY$3;
6665  var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$6 + DATA_API_KEY$3;
6666  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]';
6667  var SELECTOR_FORM_CHILD = '.dropdown form';
6668  var SELECTOR_MENU = '.dropdown-menu';
6669  var SELECTOR_NAVBAR_NAV = '.navbar-nav';
6670  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
6671  var PLACEMENT_TOP = 'top-start';
6672  var PLACEMENT_TOPEND = 'top-end';
6673  var PLACEMENT_BOTTOM = 'bottom-start';
6674  var PLACEMENT_BOTTOMEND = 'bottom-end';
6675  var PLACEMENT_RIGHT = 'right-start';
6676  var PLACEMENT_LEFT = 'left-start';
6677  var Default$5 = {
6678    offset: 0,
6679    flip: true,
6680    boundary: 'scrollParent',
6681    reference: 'toggle',
6682    display: 'dynamic',
6683    popperConfig: null
6684  };
6685  var DefaultType$5 = {
6686    offset: '(number|string|function)',
6687    flip: 'boolean',
6688    boundary: '(string|element)',
6689    reference: '(string|element)',
6690    display: 'string',
6691    popperConfig: '(null|object)'
6692  };
6693  /**
6694   * Class definition
6695   */
6696
6697  var Dropdown = /*#__PURE__*/function () {
6698    function Dropdown(element, config) {
6699      this._element = element;
6700      this._popper = null;
6701      this._config = this._getConfig(config);
6702      this._menu = this._getMenuElement();
6703      this._inNavbar = this._detectNavbar();
6704
6705      this._addEventListeners();
6706    } // Getters
6707
6708
6709    var _proto = Dropdown.prototype;
6710
6711    // Public
6712    _proto.toggle = function toggle() {
6713      if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {
6714        return;
6715      }
6716
6717      var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5);
6718
6719      Dropdown._clearMenus();
6720
6721      if (isActive) {
6722        return;
6723      }
6724
6725      this.show(true);
6726    };
6727
6728    _proto.show = function show(usePopper) {
6729      if (usePopper === void 0) {
6730        usePopper = false;
6731      }
6732
6733      if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {
6734        return;
6735      }
6736
6737      var relatedTarget = {
6738        relatedTarget: this._element
6739      };
6740      var showEvent = $__default["default"].Event(EVENT_SHOW$3, relatedTarget);
6741
6742      var parent = Dropdown._getParentFromElement(this._element);
6743
6744      $__default["default"](parent).trigger(showEvent);
6745
6746      if (showEvent.isDefaultPrevented()) {
6747        return;
6748      } // Totally disable Popper for Dropdowns in Navbar
6749
6750
6751      if (!this._inNavbar && usePopper) {
6752        // Check for Popper dependency
6753        if (typeof Popper__default["default"] === 'undefined') {
6754          throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
6755        }
6756
6757        var referenceElement = this._element;
6758
6759        if (this._config.reference === 'parent') {
6760          referenceElement = parent;
6761        } else if (Util.isElement(this._config.reference)) {
6762          referenceElement = this._config.reference; // Check if it's jQuery element
6763
6764          if (typeof this._config.reference.jquery !== 'undefined') {
6765            referenceElement = this._config.reference[0];
6766          }
6767        } // If boundary is not `scrollParent`, then set position to `static`
6768        // to allow the menu to "escape" the scroll parent's boundaries
6769        // https://github.com/twbs/bootstrap/issues/24251
6770
6771
6772        if (this._config.boundary !== 'scrollParent') {
6773          $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
6774        }
6775
6776        this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
6777      } // If this is a touch-enabled device we add extra
6778      // empty mouseover listeners to the body's immediate children;
6779      // only needed because of broken event delegation on iOS
6780      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
6781
6782
6783      if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
6784        $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
6785      }
6786
6787      this._element.focus();
6788
6789      this._element.setAttribute('aria-expanded', true);
6790
6791      $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5);
6792      $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_SHOWN$3, relatedTarget));
6793    };
6794
6795    _proto.hide = function hide() {
6796      if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {
6797        return;
6798      }
6799
6800      var relatedTarget = {
6801        relatedTarget: this._element
6802      };
6803      var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget);
6804
6805      var parent = Dropdown._getParentFromElement(this._element);
6806
6807      $__default["default"](parent).trigger(hideEvent);
6808
6809      if (hideEvent.isDefaultPrevented()) {
6810        return;
6811      }
6812
6813      if (this._popper) {
6814        this._popper.destroy();
6815      }
6816
6817      $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5);
6818      $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget));
6819    };
6820
6821    _proto.dispose = function dispose() {
6822      $__default["default"].removeData(this._element, DATA_KEY$6);
6823      $__default["default"](this._element).off(EVENT_KEY$6);
6824      this._element = null;
6825      this._menu = null;
6826
6827      if (this._popper !== null) {
6828        this._popper.destroy();
6829
6830        this._popper = null;
6831      }
6832    };
6833
6834    _proto.update = function update() {
6835      this._inNavbar = this._detectNavbar();
6836
6837      if (this._popper !== null) {
6838        this._popper.scheduleUpdate();
6839      }
6840    } // Private
6841    ;
6842
6843    _proto._addEventListeners = function _addEventListeners() {
6844      var _this = this;
6845
6846      $__default["default"](this._element).on(EVENT_CLICK, function (event) {
6847        event.preventDefault();
6848        event.stopPropagation();
6849
6850        _this.toggle();
6851      });
6852    };
6853
6854    _proto._getConfig = function _getConfig(config) {
6855      config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
6856      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
6857      return config;
6858    };
6859
6860    _proto._getMenuElement = function _getMenuElement() {
6861      if (!this._menu) {
6862        var parent = Dropdown._getParentFromElement(this._element);
6863
6864        if (parent) {
6865          this._menu = parent.querySelector(SELECTOR_MENU);
6866        }
6867      }
6868
6869      return this._menu;
6870    };
6871
6872    _proto._getPlacement = function _getPlacement() {
6873      var $parentDropdown = $__default["default"](this._element.parentNode);
6874      var placement = PLACEMENT_BOTTOM; // Handle dropup
6875
6876      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
6877        placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
6878      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
6879        placement = PLACEMENT_RIGHT;
6880      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
6881        placement = PLACEMENT_LEFT;
6882      } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
6883        placement = PLACEMENT_BOTTOMEND;
6884      }
6885
6886      return placement;
6887    };
6888
6889    _proto._detectNavbar = function _detectNavbar() {
6890      return $__default["default"](this._element).closest('.navbar').length > 0;
6891    };
6892
6893    _proto._getOffset = function _getOffset() {
6894      var _this2 = this;
6895
6896      var offset = {};
6897
6898      if (typeof this._config.offset === 'function') {
6899        offset.fn = function (data) {
6900          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
6901          return data;
6902        };
6903      } else {
6904        offset.offset = this._config.offset;
6905      }
6906
6907      return offset;
6908    };
6909
6910    _proto._getPopperConfig = function _getPopperConfig() {
6911      var popperConfig = {
6912        placement: this._getPlacement(),
6913        modifiers: {
6914          offset: this._getOffset(),
6915          flip: {
6916            enabled: this._config.flip
6917          },
6918          preventOverflow: {
6919            boundariesElement: this._config.boundary
6920          }
6921        }
6922      }; // Disable Popper if we have a static display
6923
6924      if (this._config.display === 'static') {
6925        popperConfig.modifiers.applyStyle = {
6926          enabled: false
6927        };
6928      }
6929
6930      return _extends({}, popperConfig, this._config.popperConfig);
6931    } // Static
6932    ;
6933
6934    Dropdown._jQueryInterface = function _jQueryInterface(config) {
6935      return this.each(function () {
6936        var data = $__default["default"](this).data(DATA_KEY$6);
6937
6938        var _config = typeof config === 'object' ? config : null;
6939
6940        if (!data) {
6941          data = new Dropdown(this, _config);
6942          $__default["default"](this).data(DATA_KEY$6, data);
6943        }
6944
6945        if (typeof config === 'string') {
6946          if (typeof data[config] === 'undefined') {
6947            throw new TypeError("No method named \"" + config + "\"");
6948          }
6949
6950          data[config]();
6951        }
6952      });
6953    };
6954
6955    Dropdown._clearMenus = function _clearMenus(event) {
6956      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
6957        return;
6958      }
6959
6960      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));
6961
6962      for (var i = 0, len = toggles.length; i < len; i++) {
6963        var parent = Dropdown._getParentFromElement(toggles[i]);
6964
6965        var context = $__default["default"](toggles[i]).data(DATA_KEY$6);
6966        var relatedTarget = {
6967          relatedTarget: toggles[i]
6968        };
6969
6970        if (event && event.type === 'click') {
6971          relatedTarget.clickEvent = event;
6972        }
6973
6974        if (!context) {
6975          continue;
6976        }
6977
6978        var dropdownMenu = context._menu;
6979
6980        if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$5)) {
6981          continue;
6982        }
6983
6984        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)) {
6985          continue;
6986        }
6987
6988        var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget);
6989        $__default["default"](parent).trigger(hideEvent);
6990
6991        if (hideEvent.isDefaultPrevented()) {
6992          continue;
6993        } // If this is a touch-enabled device we remove the extra
6994        // empty mouseover listeners we added for iOS support
6995
6996
6997        if ('ontouchstart' in document.documentElement) {
6998          $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
6999        }
7000
7001        toggles[i].setAttribute('aria-expanded', 'false');
7002
7003        if (context._popper) {
7004          context._popper.destroy();
7005        }
7006
7007        $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);
7008        $__default["default"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget));
7009      }
7010    };
7011
7012    Dropdown._getParentFromElement = function _getParentFromElement(element) {
7013      var parent;
7014      var selector = Util.getSelectorFromElement(element);
7015
7016      if (selector) {
7017        parent = document.querySelector(selector);
7018      }
7019
7020      return parent || element.parentNode;
7021    } // eslint-disable-next-line complexity
7022    ;
7023
7024    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
7025      // If not input/textarea:
7026      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
7027      // If input/textarea:
7028      //  - If space key => not a dropdown command
7029      //  - If key is other than escape
7030      //    - If key is not up or down => not a dropdown command
7031      //    - If trigger inside the menu => not a dropdown command
7032      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
7033        return;
7034      }
7035
7036      if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED$1)) {
7037        return;
7038      }
7039
7040      var parent = Dropdown._getParentFromElement(this);
7041
7042      var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$5);
7043
7044      if (!isActive && event.which === ESCAPE_KEYCODE$1) {
7045        return;
7046      }
7047
7048      event.preventDefault();
7049      event.stopPropagation();
7050
7051      if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {
7052        if (event.which === ESCAPE_KEYCODE$1) {
7053          $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');
7054        }
7055
7056        $__default["default"](this).trigger('click');
7057        return;
7058      }
7059
7060      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
7061        return $__default["default"](item).is(':visible');
7062      });
7063
7064      if (items.length === 0) {
7065        return;
7066      }
7067
7068      var index = items.indexOf(event.target);
7069
7070      if (event.which === ARROW_UP_KEYCODE && index > 0) {
7071        // Up
7072        index--;
7073      }
7074
7075      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
7076        // Down
7077        index++;
7078      }
7079
7080      if (index < 0) {
7081        index = 0;
7082      }
7083
7084      items[index].focus();
7085    };
7086
7087    _createClass(Dropdown, null, [{
7088      key: "VERSION",
7089      get: function get() {
7090        return VERSION$6;
7091      }
7092    }, {
7093      key: "Default",
7094      get: function get() {
7095        return Default$5;
7096      }
7097    }, {
7098      key: "DefaultType",
7099      get: function get() {
7100        return DefaultType$5;
7101      }
7102    }]);
7103
7104    return Dropdown;
7105  }();
7106  /**
7107   * Data API implementation
7108   */
7109
7110
7111  $__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$2 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
7112    event.preventDefault();
7113    event.stopPropagation();
7114
7115    Dropdown._jQueryInterface.call($__default["default"](this), 'toggle');
7116  }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {
7117    e.stopPropagation();
7118  });
7119  /**
7120   * jQuery
7121   */
7122
7123  $__default["default"].fn[NAME$6] = Dropdown._jQueryInterface;
7124  $__default["default"].fn[NAME$6].Constructor = Dropdown;
7125
7126  $__default["default"].fn[NAME$6].noConflict = function () {
7127    $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;
7128    return Dropdown._jQueryInterface;
7129  };
7130
7131  /**
7132   * Constants
7133   */
7134
7135  var NAME$5 = 'modal';
7136  var VERSION$5 = '4.6.2';
7137  var DATA_KEY$5 = 'bs.modal';
7138  var EVENT_KEY$5 = "." + DATA_KEY$5;
7139  var DATA_API_KEY$2 = '.data-api';
7140  var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5];
7141  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
7142
7143  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
7144  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
7145  var CLASS_NAME_BACKDROP = 'modal-backdrop';
7146  var CLASS_NAME_OPEN = 'modal-open';
7147  var CLASS_NAME_FADE$4 = 'fade';
7148  var CLASS_NAME_SHOW$4 = 'show';
7149  var CLASS_NAME_STATIC = 'modal-static';
7150  var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
7151  var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
7152  var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
7153  var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
7154  var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
7155  var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
7156  var EVENT_RESIZE = "resize" + EVENT_KEY$5;
7157  var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$5;
7158  var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
7159  var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
7160  var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
7161  var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$5 + DATA_API_KEY$2;
7162  var SELECTOR_DIALOG = '.modal-dialog';
7163  var SELECTOR_MODAL_BODY = '.modal-body';
7164  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="modal"]';
7165  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="modal"]';
7166  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
7167  var SELECTOR_STICKY_CONTENT = '.sticky-top';
7168  var Default$4 = {
7169    backdrop: true,
7170    keyboard: true,
7171    focus: true,
7172    show: true
7173  };
7174  var DefaultType$4 = {
7175    backdrop: '(boolean|string)',
7176    keyboard: 'boolean',
7177    focus: 'boolean',
7178    show: 'boolean'
7179  };
7180  /**
7181   * Class definition
7182   */
7183
7184  var Modal = /*#__PURE__*/function () {
7185    function Modal(element, config) {
7186      this._config = this._getConfig(config);
7187      this._element = element;
7188      this._dialog = element.querySelector(SELECTOR_DIALOG);
7189      this._backdrop = null;
7190      this._isShown = false;
7191      this._isBodyOverflowing = false;
7192      this._ignoreBackdropClick = false;
7193      this._isTransitioning = false;
7194      this._scrollbarWidth = 0;
7195    } // Getters
7196
7197
7198    var _proto = Modal.prototype;
7199
7200    // Public
7201    _proto.toggle = function toggle(relatedTarget) {
7202      return this._isShown ? this.hide() : this.show(relatedTarget);
7203    };
7204
7205    _proto.show = function show(relatedTarget) {
7206      var _this = this;
7207
7208      if (this._isShown || this._isTransitioning) {
7209        return;
7210      }
7211
7212      var showEvent = $__default["default"].Event(EVENT_SHOW$2, {
7213        relatedTarget: relatedTarget
7214      });
7215      $__default["default"](this._element).trigger(showEvent);
7216
7217      if (showEvent.isDefaultPrevented()) {
7218        return;
7219      }
7220
7221      this._isShown = true;
7222
7223      if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) {
7224        this._isTransitioning = true;
7225      }
7226
7227      this._checkScrollbar();
7228
7229      this._setScrollbar();
7230
7231      this._adjustDialog();
7232
7233      this._setEscapeEvent();
7234
7235      this._setResizeEvent();
7236
7237      $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {
7238        return _this.hide(event);
7239      });
7240      $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
7241        $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
7242          if ($__default["default"](event.target).is(_this._element)) {
7243            _this._ignoreBackdropClick = true;
7244          }
7245        });
7246      });
7247
7248      this._showBackdrop(function () {
7249        return _this._showElement(relatedTarget);
7250      });
7251    };
7252
7253    _proto.hide = function hide(event) {
7254      var _this2 = this;
7255
7256      if (event) {
7257        event.preventDefault();
7258      }
7259
7260      if (!this._isShown || this._isTransitioning) {
7261        return;
7262      }
7263
7264      var hideEvent = $__default["default"].Event(EVENT_HIDE$2);
7265      $__default["default"](this._element).trigger(hideEvent);
7266
7267      if (!this._isShown || hideEvent.isDefaultPrevented()) {
7268        return;
7269      }
7270
7271      this._isShown = false;
7272      var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4);
7273
7274      if (transition) {
7275        this._isTransitioning = true;
7276      }
7277
7278      this._setEscapeEvent();
7279
7280      this._setResizeEvent();
7281
7282      $__default["default"](document).off(EVENT_FOCUSIN);
7283      $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$4);
7284      $__default["default"](this._element).off(EVENT_CLICK_DISMISS$1);
7285      $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
7286
7287      if (transition) {
7288        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
7289        $__default["default"](this._element).one(Util.TRANSITION_END, function (event) {
7290          return _this2._hideModal(event);
7291        }).emulateTransitionEnd(transitionDuration);
7292      } else {
7293        this._hideModal();
7294      }
7295    };
7296
7297    _proto.dispose = function dispose() {
7298      [window, this._element, this._dialog].forEach(function (htmlElement) {
7299        return $__default["default"](htmlElement).off(EVENT_KEY$5);
7300      });
7301      /**
7302       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
7303       * Do not move `document` in `htmlElements` array
7304       * It will remove `EVENT_CLICK_DATA_API` event that should remain
7305       */
7306
7307      $__default["default"](document).off(EVENT_FOCUSIN);
7308      $__default["default"].removeData(this._element, DATA_KEY$5);
7309      this._config = null;
7310      this._element = null;
7311      this._dialog = null;
7312      this._backdrop = null;
7313      this._isShown = null;
7314      this._isBodyOverflowing = null;
7315      this._ignoreBackdropClick = null;
7316      this._isTransitioning = null;
7317      this._scrollbarWidth = null;
7318    };
7319
7320    _proto.handleUpdate = function handleUpdate() {
7321      this._adjustDialog();
7322    } // Private
7323    ;
7324
7325    _proto._getConfig = function _getConfig(config) {
7326      config = _extends({}, Default$4, config);
7327      Util.typeCheckConfig(NAME$5, config, DefaultType$4);
7328      return config;
7329    };
7330
7331    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
7332      var _this3 = this;
7333
7334      var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
7335      $__default["default"](this._element).trigger(hideEventPrevented);
7336
7337      if (hideEventPrevented.isDefaultPrevented()) {
7338        return;
7339      }
7340
7341      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
7342
7343      if (!isModalOverflowing) {
7344        this._element.style.overflowY = 'hidden';
7345      }
7346
7347      this._element.classList.add(CLASS_NAME_STATIC);
7348
7349      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);
7350      $__default["default"](this._element).off(Util.TRANSITION_END);
7351      $__default["default"](this._element).one(Util.TRANSITION_END, function () {
7352        _this3._element.classList.remove(CLASS_NAME_STATIC);
7353
7354        if (!isModalOverflowing) {
7355          $__default["default"](_this3._element).one(Util.TRANSITION_END, function () {
7356            _this3._element.style.overflowY = '';
7357          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
7358        }
7359      }).emulateTransitionEnd(modalTransitionDuration);
7360
7361      this._element.focus();
7362    };
7363
7364    _proto._showElement = function _showElement(relatedTarget) {
7365      var _this4 = this;
7366
7367      var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4);
7368      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
7369
7370      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
7371        // Don't move modal's DOM position
7372        document.body.appendChild(this._element);
7373      }
7374
7375      this._element.style.display = 'block';
7376
7377      this._element.removeAttribute('aria-hidden');
7378
7379      this._element.setAttribute('aria-modal', true);
7380
7381      this._element.setAttribute('role', 'dialog');
7382
7383      if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
7384        modalBody.scrollTop = 0;
7385      } else {
7386        this._element.scrollTop = 0;
7387      }
7388
7389      if (transition) {
7390        Util.reflow(this._element);
7391      }
7392
7393      $__default["default"](this._element).addClass(CLASS_NAME_SHOW$4);
7394
7395      if (this._config.focus) {
7396        this._enforceFocus();
7397      }
7398
7399      var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, {
7400        relatedTarget: relatedTarget
7401      });
7402
7403      var transitionComplete = function transitionComplete() {
7404        if (_this4._config.focus) {
7405          _this4._element.focus();
7406        }
7407
7408        _this4._isTransitioning = false;
7409        $__default["default"](_this4._element).trigger(shownEvent);
7410      };
7411
7412      if (transition) {
7413        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
7414        $__default["default"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
7415      } else {
7416        transitionComplete();
7417      }
7418    };
7419
7420    _proto._enforceFocus = function _enforceFocus() {
7421      var _this5 = this;
7422
7423      $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
7424      .on(EVENT_FOCUSIN, function (event) {
7425        if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
7426          _this5._element.focus();
7427        }
7428      });
7429    };
7430
7431    _proto._setEscapeEvent = function _setEscapeEvent() {
7432      var _this6 = this;
7433
7434      if (this._isShown) {
7435        $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {
7436          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
7437            event.preventDefault();
7438
7439            _this6.hide();
7440          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
7441            _this6._triggerBackdropTransition();
7442          }
7443        });
7444      } else if (!this._isShown) {
7445        $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);
7446      }
7447    };
7448
7449    _proto._setResizeEvent = function _setResizeEvent() {
7450      var _this7 = this;
7451
7452      if (this._isShown) {
7453        $__default["default"](window).on(EVENT_RESIZE, function (event) {
7454          return _this7.handleUpdate(event);
7455        });
7456      } else {
7457        $__default["default"](window).off(EVENT_RESIZE);
7458      }
7459    };
7460
7461    _proto._hideModal = function _hideModal() {
7462      var _this8 = this;
7463
7464      this._element.style.display = 'none';
7465
7466      this._element.setAttribute('aria-hidden', true);
7467
7468      this._element.removeAttribute('aria-modal');
7469
7470      this._element.removeAttribute('role');
7471
7472      this._isTransitioning = false;
7473
7474      this._showBackdrop(function () {
7475        $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);
7476
7477        _this8._resetAdjustments();
7478
7479        _this8._resetScrollbar();
7480
7481        $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2);
7482      });
7483    };
7484
7485    _proto._removeBackdrop = function _removeBackdrop() {
7486      if (this._backdrop) {
7487        $__default["default"](this._backdrop).remove();
7488        this._backdrop = null;
7489      }
7490    };
7491
7492    _proto._showBackdrop = function _showBackdrop(callback) {
7493      var _this9 = this;
7494
7495      var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';
7496
7497      if (this._isShown && this._config.backdrop) {
7498        this._backdrop = document.createElement('div');
7499        this._backdrop.className = CLASS_NAME_BACKDROP;
7500
7501        if (animate) {
7502          this._backdrop.classList.add(animate);
7503        }
7504
7505        $__default["default"](this._backdrop).appendTo(document.body);
7506        $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {
7507          if (_this9._ignoreBackdropClick) {
7508            _this9._ignoreBackdropClick = false;
7509            return;
7510          }
7511
7512          if (event.target !== event.currentTarget) {
7513            return;
7514          }
7515
7516          if (_this9._config.backdrop === 'static') {
7517            _this9._triggerBackdropTransition();
7518          } else {
7519            _this9.hide();
7520          }
7521        });
7522
7523        if (animate) {
7524          Util.reflow(this._backdrop);
7525        }
7526
7527        $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$4);
7528
7529        if (!callback) {
7530          return;
7531        }
7532
7533        if (!animate) {
7534          callback();
7535          return;
7536        }
7537
7538        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
7539        $__default["default"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
7540      } else if (!this._isShown && this._backdrop) {
7541        $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);
7542
7543        var callbackRemove = function callbackRemove() {
7544          _this9._removeBackdrop();
7545
7546          if (callback) {
7547            callback();
7548          }
7549        };
7550
7551        if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) {
7552          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
7553
7554          $__default["default"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
7555        } else {
7556          callbackRemove();
7557        }
7558      } else if (callback) {
7559        callback();
7560      }
7561    } // ----------------------------------------------------------------------
7562    // the following methods are used to handle overflowing modals
7563    // todo (fat): these should probably be refactored out of modal.js
7564    // ----------------------------------------------------------------------
7565    ;
7566
7567    _proto._adjustDialog = function _adjustDialog() {
7568      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
7569
7570      if (!this._isBodyOverflowing && isModalOverflowing) {
7571        this._element.style.paddingLeft = this._scrollbarWidth + "px";
7572      }
7573
7574      if (this._isBodyOverflowing && !isModalOverflowing) {
7575        this._element.style.paddingRight = this._scrollbarWidth + "px";
7576      }
7577    };
7578
7579    _proto._resetAdjustments = function _resetAdjustments() {
7580      this._element.style.paddingLeft = '';
7581      this._element.style.paddingRight = '';
7582    };
7583
7584    _proto._checkScrollbar = function _checkScrollbar() {
7585      var rect = document.body.getBoundingClientRect();
7586      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
7587      this._scrollbarWidth = this._getScrollbarWidth();
7588    };
7589
7590    _proto._setScrollbar = function _setScrollbar() {
7591      var _this10 = this;
7592
7593      if (this._isBodyOverflowing) {
7594        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
7595        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
7596        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
7597        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
7598
7599        $__default["default"](fixedContent).each(function (index, element) {
7600          var actualPadding = element.style.paddingRight;
7601          var calculatedPadding = $__default["default"](element).css('padding-right');
7602          $__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
7603        }); // Adjust sticky content margin
7604
7605        $__default["default"](stickyContent).each(function (index, element) {
7606          var actualMargin = element.style.marginRight;
7607          var calculatedMargin = $__default["default"](element).css('margin-right');
7608          $__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
7609        }); // Adjust body padding
7610
7611        var actualPadding = document.body.style.paddingRight;
7612        var calculatedPadding = $__default["default"](document.body).css('padding-right');
7613        $__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
7614      }
7615
7616      $__default["default"](document.body).addClass(CLASS_NAME_OPEN);
7617    };
7618
7619    _proto._resetScrollbar = function _resetScrollbar() {
7620      // Restore fixed content padding
7621      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
7622      $__default["default"](fixedContent).each(function (index, element) {
7623        var padding = $__default["default"](element).data('padding-right');
7624        $__default["default"](element).removeData('padding-right');
7625        element.style.paddingRight = padding ? padding : '';
7626      }); // Restore sticky content
7627
7628      var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
7629      $__default["default"](elements).each(function (index, element) {
7630        var margin = $__default["default"](element).data('margin-right');
7631
7632        if (typeof margin !== 'undefined') {
7633          $__default["default"](element).css('margin-right', margin).removeData('margin-right');
7634        }
7635      }); // Restore body padding
7636
7637      var padding = $__default["default"](document.body).data('padding-right');
7638      $__default["default"](document.body).removeData('padding-right');
7639      document.body.style.paddingRight = padding ? padding : '';
7640    };
7641
7642    _proto._getScrollbarWidth = function _getScrollbarWidth() {
7643      // thx d.walsh
7644      var scrollDiv = document.createElement('div');
7645      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
7646      document.body.appendChild(scrollDiv);
7647      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
7648      document.body.removeChild(scrollDiv);
7649      return scrollbarWidth;
7650    } // Static
7651    ;
7652
7653    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
7654      return this.each(function () {
7655        var data = $__default["default"](this).data(DATA_KEY$5);
7656
7657        var _config = _extends({}, Default$4, $__default["default"](this).data(), typeof config === 'object' && config ? config : {});
7658
7659        if (!data) {
7660          data = new Modal(this, _config);
7661          $__default["default"](this).data(DATA_KEY$5, data);
7662        }
7663
7664        if (typeof config === 'string') {
7665          if (typeof data[config] === 'undefined') {
7666            throw new TypeError("No method named \"" + config + "\"");
7667          }
7668
7669          data[config](relatedTarget);
7670        } else if (_config.show) {
7671          data.show(relatedTarget);
7672        }
7673      });
7674    };
7675
7676    _createClass(Modal, null, [{
7677      key: "VERSION",
7678      get: function get() {
7679        return VERSION$5;
7680      }
7681    }, {
7682      key: "Default",
7683      get: function get() {
7684        return Default$4;
7685      }
7686    }]);
7687
7688    return Modal;
7689  }();
7690  /**
7691   * Data API implementation
7692   */
7693
7694
7695  $__default["default"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
7696    var _this11 = this;
7697
7698    var target;
7699    var selector = Util.getSelectorFromElement(this);
7700
7701    if (selector) {
7702      target = document.querySelector(selector);
7703    }
7704
7705    var config = $__default["default"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
7706
7707    if (this.tagName === 'A' || this.tagName === 'AREA') {
7708      event.preventDefault();
7709    }
7710
7711    var $target = $__default["default"](target).one(EVENT_SHOW$2, function (showEvent) {
7712      if (showEvent.isDefaultPrevented()) {
7713        // Only register focus restorer if modal will actually get shown
7714        return;
7715      }
7716
7717      $target.one(EVENT_HIDDEN$2, function () {
7718        if ($__default["default"](_this11).is(':visible')) {
7719          _this11.focus();
7720        }
7721      });
7722    });
7723
7724    Modal._jQueryInterface.call($__default["default"](target), config, this);
7725  });
7726  /**
7727   * jQuery
7728   */
7729
7730  $__default["default"].fn[NAME$5] = Modal._jQueryInterface;
7731  $__default["default"].fn[NAME$5].Constructor = Modal;
7732
7733  $__default["default"].fn[NAME$5].noConflict = function () {
7734    $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;
7735    return Modal._jQueryInterface;
7736  };
7737
7738  /**
7739   * --------------------------------------------------------------------------
7740   * Bootstrap (v4.6.2): tools/sanitizer.js
7741   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7742   * --------------------------------------------------------------------------
7743   */
7744  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
7745  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
7746  var DefaultWhitelist = {
7747    // Global attributes allowed on any supplied element below.
7748    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
7749    a: ['target', 'href', 'title', 'rel'],
7750    area: [],
7751    b: [],
7752    br: [],
7753    col: [],
7754    code: [],
7755    div: [],
7756    em: [],
7757    hr: [],
7758    h1: [],
7759    h2: [],
7760    h3: [],
7761    h4: [],
7762    h5: [],
7763    h6: [],
7764    i: [],
7765    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
7766    li: [],
7767    ol: [],
7768    p: [],
7769    pre: [],
7770    s: [],
7771    small: [],
7772    span: [],
7773    sub: [],
7774    sup: [],
7775    strong: [],
7776    u: [],
7777    ul: []
7778  };
7779  /**
7780   * A pattern that recognizes a commonly useful subset of URLs that are safe.
7781   *
7782   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
7783   */
7784
7785  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
7786  /**
7787   * A pattern that matches safe data URLs. Only matches image, video and audio types.
7788   *
7789   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
7790   */
7791
7792  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;
7793
7794  function allowedAttribute(attr, allowedAttributeList) {
7795    var attrName = attr.nodeName.toLowerCase();
7796
7797    if (allowedAttributeList.indexOf(attrName) !== -1) {
7798      if (uriAttrs.indexOf(attrName) !== -1) {
7799        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
7800      }
7801
7802      return true;
7803    }
7804
7805    var regExp = allowedAttributeList.filter(function (attrRegex) {
7806      return attrRegex instanceof RegExp;
7807    }); // Check if a regular expression validates the attribute.
7808
7809    for (var i = 0, len = regExp.length; i < len; i++) {
7810      if (regExp[i].test(attrName)) {
7811        return true;
7812      }
7813    }
7814
7815    return false;
7816  }
7817
7818  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
7819    if (unsafeHtml.length === 0) {
7820      return unsafeHtml;
7821    }
7822
7823    if (sanitizeFn && typeof sanitizeFn === 'function') {
7824      return sanitizeFn(unsafeHtml);
7825    }
7826
7827    var domParser = new window.DOMParser();
7828    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
7829    var whitelistKeys = Object.keys(whiteList);
7830    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
7831
7832    var _loop = function _loop(i, len) {
7833      var el = elements[i];
7834      var elName = el.nodeName.toLowerCase();
7835
7836      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
7837        el.parentNode.removeChild(el);
7838        return "continue";
7839      }
7840
7841      var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread
7842
7843      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
7844      attributeList.forEach(function (attr) {
7845        if (!allowedAttribute(attr, whitelistedAttributes)) {
7846          el.removeAttribute(attr.nodeName);
7847        }
7848      });
7849    };
7850
7851    for (var i = 0, len = elements.length; i < len; i++) {
7852      var _ret = _loop(i);
7853
7854      if (_ret === "continue") continue;
7855    }
7856
7857    return createdDocument.body.innerHTML;
7858  }
7859
7860  /**
7861   * Constants
7862   */
7863
7864  var NAME$4 = 'tooltip';
7865  var VERSION$4 = '4.6.2';
7866  var DATA_KEY$4 = 'bs.tooltip';
7867  var EVENT_KEY$4 = "." + DATA_KEY$4;
7868  var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4];
7869  var CLASS_PREFIX$1 = 'bs-tooltip';
7870  var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
7871  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
7872  var CLASS_NAME_FADE$3 = 'fade';
7873  var CLASS_NAME_SHOW$3 = 'show';
7874  var HOVER_STATE_SHOW = 'show';
7875  var HOVER_STATE_OUT = 'out';
7876  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
7877  var SELECTOR_ARROW = '.arrow';
7878  var TRIGGER_HOVER = 'hover';
7879  var TRIGGER_FOCUS = 'focus';
7880  var TRIGGER_CLICK = 'click';
7881  var TRIGGER_MANUAL = 'manual';
7882  var AttachmentMap = {
7883    AUTO: 'auto',
7884    TOP: 'top',
7885    RIGHT: 'right',
7886    BOTTOM: 'bottom',
7887    LEFT: 'left'
7888  };
7889  var Default$3 = {
7890    animation: true,
7891    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
7892    trigger: 'hover focus',
7893    title: '',
7894    delay: 0,
7895    html: false,
7896    selector: false,
7897    placement: 'top',
7898    offset: 0,
7899    container: false,
7900    fallbackPlacement: 'flip',
7901    boundary: 'scrollParent',
7902    customClass: '',
7903    sanitize: true,
7904    sanitizeFn: null,
7905    whiteList: DefaultWhitelist,
7906    popperConfig: null
7907  };
7908  var DefaultType$3 = {
7909    animation: 'boolean',
7910    template: 'string',
7911    title: '(string|element|function)',
7912    trigger: 'string',
7913    delay: '(number|object)',
7914    html: 'boolean',
7915    selector: '(string|boolean)',
7916    placement: '(string|function)',
7917    offset: '(number|string|function)',
7918    container: '(string|element|boolean)',
7919    fallbackPlacement: '(string|array)',
7920    boundary: '(string|element)',
7921    customClass: '(string|function)',
7922    sanitize: 'boolean',
7923    sanitizeFn: '(null|function)',
7924    whiteList: 'object',
7925    popperConfig: '(null|object)'
7926  };
7927  var Event$1 = {
7928    HIDE: "hide" + EVENT_KEY$4,
7929    HIDDEN: "hidden" + EVENT_KEY$4,
7930    SHOW: "show" + EVENT_KEY$4,
7931    SHOWN: "shown" + EVENT_KEY$4,
7932    INSERTED: "inserted" + EVENT_KEY$4,
7933    CLICK: "click" + EVENT_KEY$4,
7934    FOCUSIN: "focusin" + EVENT_KEY$4,
7935    FOCUSOUT: "focusout" + EVENT_KEY$4,
7936    MOUSEENTER: "mouseenter" + EVENT_KEY$4,
7937    MOUSELEAVE: "mouseleave" + EVENT_KEY$4
7938  };
7939  /**
7940   * Class definition
7941   */
7942
7943  var Tooltip = /*#__PURE__*/function () {
7944    function Tooltip(element, config) {
7945      if (typeof Popper__default["default"] === 'undefined') {
7946        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
7947      } // Private
7948
7949
7950      this._isEnabled = true;
7951      this._timeout = 0;
7952      this._hoverState = '';
7953      this._activeTrigger = {};
7954      this._popper = null; // Protected
7955
7956      this.element = element;
7957      this.config = this._getConfig(config);
7958      this.tip = null;
7959
7960      this._setListeners();
7961    } // Getters
7962
7963
7964    var _proto = Tooltip.prototype;
7965
7966    // Public
7967    _proto.enable = function enable() {
7968      this._isEnabled = true;
7969    };
7970
7971    _proto.disable = function disable() {
7972      this._isEnabled = false;
7973    };
7974
7975    _proto.toggleEnabled = function toggleEnabled() {
7976      this._isEnabled = !this._isEnabled;
7977    };
7978
7979    _proto.toggle = function toggle(event) {
7980      if (!this._isEnabled) {
7981        return;
7982      }
7983
7984      if (event) {
7985        var dataKey = this.constructor.DATA_KEY;
7986        var context = $__default["default"](event.currentTarget).data(dataKey);
7987
7988        if (!context) {
7989          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
7990          $__default["default"](event.currentTarget).data(dataKey, context);
7991        }
7992
7993        context._activeTrigger.click = !context._activeTrigger.click;
7994
7995        if (context._isWithActiveTrigger()) {
7996          context._enter(null, context);
7997        } else {
7998          context._leave(null, context);
7999        }
8000      } else {
8001        if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {
8002          this._leave(null, this);
8003
8004          return;
8005        }
8006
8007        this._enter(null, this);
8008      }
8009    };
8010
8011    _proto.dispose = function dispose() {
8012      clearTimeout(this._timeout);
8013      $__default["default"].removeData(this.element, this.constructor.DATA_KEY);
8014      $__default["default"](this.element).off(this.constructor.EVENT_KEY);
8015      $__default["default"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);
8016
8017      if (this.tip) {
8018        $__default["default"](this.tip).remove();
8019      }
8020
8021      this._isEnabled = null;
8022      this._timeout = null;
8023      this._hoverState = null;
8024      this._activeTrigger = null;
8025
8026      if (this._popper) {
8027        this._popper.destroy();
8028      }
8029
8030      this._popper = null;
8031      this.element = null;
8032      this.config = null;
8033      this.tip = null;
8034    };
8035
8036    _proto.show = function show() {
8037      var _this = this;
8038
8039      if ($__default["default"](this.element).css('display') === 'none') {
8040        throw new Error('Please use show on visible elements');
8041      }
8042
8043      var showEvent = $__default["default"].Event(this.constructor.Event.SHOW);
8044
8045      if (this.isWithContent() && this._isEnabled) {
8046        $__default["default"](this.element).trigger(showEvent);
8047        var shadowRoot = Util.findShadowRoot(this.element);
8048        var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
8049
8050        if (showEvent.isDefaultPrevented() || !isInTheDom) {
8051          return;
8052        }
8053
8054        var tip = this.getTipElement();
8055        var tipId = Util.getUID(this.constructor.NAME);
8056        tip.setAttribute('id', tipId);
8057        this.element.setAttribute('aria-describedby', tipId);
8058        this.setContent();
8059
8060        if (this.config.animation) {
8061          $__default["default"](tip).addClass(CLASS_NAME_FADE$3);
8062        }
8063
8064        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
8065
8066        var attachment = this._getAttachment(placement);
8067
8068        this.addAttachmentClass(attachment);
8069
8070        var container = this._getContainer();
8071
8072        $__default["default"](tip).data(this.constructor.DATA_KEY, this);
8073
8074        if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) {
8075          $__default["default"](tip).appendTo(container);
8076        }
8077
8078        $__default["default"](this.element).trigger(this.constructor.Event.INSERTED);
8079        this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment));
8080        $__default["default"](tip).addClass(CLASS_NAME_SHOW$3);
8081        $__default["default"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra
8082        // empty mouseover listeners to the body's immediate children;
8083        // only needed because of broken event delegation on iOS
8084        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
8085
8086        if ('ontouchstart' in document.documentElement) {
8087          $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
8088        }
8089
8090        var complete = function complete() {
8091          if (_this.config.animation) {
8092            _this._fixTransition();
8093          }
8094
8095          var prevHoverState = _this._hoverState;
8096          _this._hoverState = null;
8097          $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN);
8098
8099          if (prevHoverState === HOVER_STATE_OUT) {
8100            _this._leave(null, _this);
8101          }
8102        };
8103
8104        if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) {
8105          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
8106          $__default["default"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
8107        } else {
8108          complete();
8109        }
8110      }
8111    };
8112
8113    _proto.hide = function hide(callback) {
8114      var _this2 = this;
8115
8116      var tip = this.getTipElement();
8117      var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE);
8118
8119      var complete = function complete() {
8120        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
8121          tip.parentNode.removeChild(tip);
8122        }
8123
8124        _this2._cleanTipClass();
8125
8126        _this2.element.removeAttribute('aria-describedby');
8127
8128        $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);
8129
8130        if (_this2._popper !== null) {
8131          _this2._popper.destroy();
8132        }
8133
8134        if (callback) {
8135          callback();
8136        }
8137      };
8138
8139      $__default["default"](this.element).trigger(hideEvent);
8140
8141      if (hideEvent.isDefaultPrevented()) {
8142        return;
8143      }
8144
8145      $__default["default"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra
8146      // empty mouseover listeners we added for iOS support
8147
8148      if ('ontouchstart' in document.documentElement) {
8149        $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
8150      }
8151
8152      this._activeTrigger[TRIGGER_CLICK] = false;
8153      this._activeTrigger[TRIGGER_FOCUS] = false;
8154      this._activeTrigger[TRIGGER_HOVER] = false;
8155
8156      if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) {
8157        var transitionDuration = Util.getTransitionDurationFromElement(tip);
8158        $__default["default"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
8159      } else {
8160        complete();
8161      }
8162
8163      this._hoverState = '';
8164    };
8165
8166    _proto.update = function update() {
8167      if (this._popper !== null) {
8168        this._popper.scheduleUpdate();
8169      }
8170    } // Protected
8171    ;
8172
8173    _proto.isWithContent = function isWithContent() {
8174      return Boolean(this.getTitle());
8175    };
8176
8177    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
8178      $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
8179    };
8180
8181    _proto.getTipElement = function getTipElement() {
8182      this.tip = this.tip || $__default["default"](this.config.template)[0];
8183      return this.tip;
8184    };
8185
8186    _proto.setContent = function setContent() {
8187      var tip = this.getTipElement();
8188      this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());
8189      $__default["default"](tip).removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$3);
8190    };
8191
8192    _proto.setElementContent = function setElementContent($element, content) {
8193      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
8194        // Content is a DOM node or a jQuery
8195        if (this.config.html) {
8196          if (!$__default["default"](content).parent().is($element)) {
8197            $element.empty().append(content);
8198          }
8199        } else {
8200          $element.text($__default["default"](content).text());
8201        }
8202
8203        return;
8204      }
8205
8206      if (this.config.html) {
8207        if (this.config.sanitize) {
8208          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
8209        }
8210
8211        $element.html(content);
8212      } else {
8213        $element.text(content);
8214      }
8215    };
8216
8217    _proto.getTitle = function getTitle() {
8218      var title = this.element.getAttribute('data-original-title');
8219
8220      if (!title) {
8221        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
8222      }
8223
8224      return title;
8225    } // Private
8226    ;
8227
8228    _proto._getPopperConfig = function _getPopperConfig(attachment) {
8229      var _this3 = this;
8230
8231      var defaultBsConfig = {
8232        placement: attachment,
8233        modifiers: {
8234          offset: this._getOffset(),
8235          flip: {
8236            behavior: this.config.fallbackPlacement
8237          },
8238          arrow: {
8239            element: SELECTOR_ARROW
8240          },
8241          preventOverflow: {
8242            boundariesElement: this.config.boundary
8243          }
8244        },
8245        onCreate: function onCreate(data) {
8246          if (data.originalPlacement !== data.placement) {
8247            _this3._handlePopperPlacementChange(data);
8248          }
8249        },
8250        onUpdate: function onUpdate(data) {
8251          return _this3._handlePopperPlacementChange(data);
8252        }
8253      };
8254      return _extends({}, defaultBsConfig, this.config.popperConfig);
8255    };
8256
8257    _proto._getOffset = function _getOffset() {
8258      var _this4 = this;
8259
8260      var offset = {};
8261
8262      if (typeof this.config.offset === 'function') {
8263        offset.fn = function (data) {
8264          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));
8265          return data;
8266        };
8267      } else {
8268        offset.offset = this.config.offset;
8269      }
8270
8271      return offset;
8272    };
8273
8274    _proto._getContainer = function _getContainer() {
8275      if (this.config.container === false) {
8276        return document.body;
8277      }
8278
8279      if (Util.isElement(this.config.container)) {
8280        return $__default["default"](this.config.container);
8281      }
8282
8283      return $__default["default"](document).find(this.config.container);
8284    };
8285
8286    _proto._getAttachment = function _getAttachment(placement) {
8287      return AttachmentMap[placement.toUpperCase()];
8288    };
8289
8290    _proto._setListeners = function _setListeners() {
8291      var _this5 = this;
8292
8293      var triggers = this.config.trigger.split(' ');
8294      triggers.forEach(function (trigger) {
8295        if (trigger === 'click') {
8296          $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
8297            return _this5.toggle(event);
8298          });
8299        } else if (trigger !== TRIGGER_MANUAL) {
8300          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
8301          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
8302          $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function (event) {
8303            return _this5._enter(event);
8304          }).on(eventOut, _this5.config.selector, function (event) {
8305            return _this5._leave(event);
8306          });
8307        }
8308      });
8309
8310      this._hideModalHandler = function () {
8311        if (_this5.element) {
8312          _this5.hide();
8313        }
8314      };
8315
8316      $__default["default"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);
8317
8318      if (this.config.selector) {
8319        this.config = _extends({}, this.config, {
8320          trigger: 'manual',
8321          selector: ''
8322        });
8323      } else {
8324        this._fixTitle();
8325      }
8326    };
8327
8328    _proto._fixTitle = function _fixTitle() {
8329      var titleType = typeof this.element.getAttribute('data-original-title');
8330
8331      if (this.element.getAttribute('title') || titleType !== 'string') {
8332        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
8333        this.element.setAttribute('title', '');
8334      }
8335    };
8336
8337    _proto._enter = function _enter(event, context) {
8338      var dataKey = this.constructor.DATA_KEY;
8339      context = context || $__default["default"](event.currentTarget).data(dataKey);
8340
8341      if (!context) {
8342        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
8343        $__default["default"](event.currentTarget).data(dataKey, context);
8344      }
8345
8346      if (event) {
8347        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
8348      }
8349
8350      if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
8351        context._hoverState = HOVER_STATE_SHOW;
8352        return;
8353      }
8354
8355      clearTimeout(context._timeout);
8356      context._hoverState = HOVER_STATE_SHOW;
8357
8358      if (!context.config.delay || !context.config.delay.show) {
8359        context.show();
8360        return;
8361      }
8362
8363      context._timeout = setTimeout(function () {
8364        if (context._hoverState === HOVER_STATE_SHOW) {
8365          context.show();
8366        }
8367      }, context.config.delay.show);
8368    };
8369
8370    _proto._leave = function _leave(event, context) {
8371      var dataKey = this.constructor.DATA_KEY;
8372      context = context || $__default["default"](event.currentTarget).data(dataKey);
8373
8374      if (!context) {
8375        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
8376        $__default["default"](event.currentTarget).data(dataKey, context);
8377      }
8378
8379      if (event) {
8380        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
8381      }
8382
8383      if (context._isWithActiveTrigger()) {
8384        return;
8385      }
8386
8387      clearTimeout(context._timeout);
8388      context._hoverState = HOVER_STATE_OUT;
8389
8390      if (!context.config.delay || !context.config.delay.hide) {
8391        context.hide();
8392        return;
8393      }
8394
8395      context._timeout = setTimeout(function () {
8396        if (context._hoverState === HOVER_STATE_OUT) {
8397          context.hide();
8398        }
8399      }, context.config.delay.hide);
8400    };
8401
8402    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
8403      for (var trigger in this._activeTrigger) {
8404        if (this._activeTrigger[trigger]) {
8405          return true;
8406        }
8407      }
8408
8409      return false;
8410    };
8411
8412    _proto._getConfig = function _getConfig(config) {
8413      var dataAttributes = $__default["default"](this.element).data();
8414      Object.keys(dataAttributes).forEach(function (dataAttr) {
8415        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
8416          delete dataAttributes[dataAttr];
8417        }
8418      });
8419      config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
8420
8421      if (typeof config.delay === 'number') {
8422        config.delay = {
8423          show: config.delay,
8424          hide: config.delay
8425        };
8426      }
8427
8428      if (typeof config.title === 'number') {
8429        config.title = config.title.toString();
8430      }
8431
8432      if (typeof config.content === 'number') {
8433        config.content = config.content.toString();
8434      }
8435
8436      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
8437
8438      if (config.sanitize) {
8439        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
8440      }
8441
8442      return config;
8443    };
8444
8445    _proto._getDelegateConfig = function _getDelegateConfig() {
8446      var config = {};
8447
8448      if (this.config) {
8449        for (var key in this.config) {
8450          if (this.constructor.Default[key] !== this.config[key]) {
8451            config[key] = this.config[key];
8452          }
8453        }
8454      }
8455
8456      return config;
8457    };
8458
8459    _proto._cleanTipClass = function _cleanTipClass() {
8460      var $tip = $__default["default"](this.getTipElement());
8461      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
8462
8463      if (tabClass !== null && tabClass.length) {
8464        $tip.removeClass(tabClass.join(''));
8465      }
8466    };
8467
8468    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
8469      this.tip = popperData.instance.popper;
8470
8471      this._cleanTipClass();
8472
8473      this.addAttachmentClass(this._getAttachment(popperData.placement));
8474    };
8475
8476    _proto._fixTransition = function _fixTransition() {
8477      var tip = this.getTipElement();
8478      var initConfigAnimation = this.config.animation;
8479
8480      if (tip.getAttribute('x-placement') !== null) {
8481        return;
8482      }
8483
8484      $__default["default"](tip).removeClass(CLASS_NAME_FADE$3);
8485      this.config.animation = false;
8486      this.hide();
8487      this.show();
8488      this.config.animation = initConfigAnimation;
8489    } // Static
8490    ;
8491
8492    Tooltip._jQueryInterface = function _jQueryInterface(config) {
8493      return this.each(function () {
8494        var $element = $__default["default"](this);
8495        var data = $element.data(DATA_KEY$4);
8496
8497        var _config = typeof config === 'object' && config;
8498
8499        if (!data && /dispose|hide/.test(config)) {
8500          return;
8501        }
8502
8503        if (!data) {
8504          data = new Tooltip(this, _config);
8505          $element.data(DATA_KEY$4, data);
8506        }
8507
8508        if (typeof config === 'string') {
8509          if (typeof data[config] === 'undefined') {
8510            throw new TypeError("No method named \"" + config + "\"");
8511          }
8512
8513          data[config]();
8514        }
8515      });
8516    };
8517
8518    _createClass(Tooltip, null, [{
8519      key: "VERSION",
8520      get: function get() {
8521        return VERSION$4;
8522      }
8523    }, {
8524      key: "Default",
8525      get: function get() {
8526        return Default$3;
8527      }
8528    }, {
8529      key: "NAME",
8530      get: function get() {
8531        return NAME$4;
8532      }
8533    }, {
8534      key: "DATA_KEY",
8535      get: function get() {
8536        return DATA_KEY$4;
8537      }
8538    }, {
8539      key: "Event",
8540      get: function get() {
8541        return Event$1;
8542      }
8543    }, {
8544      key: "EVENT_KEY",
8545      get: function get() {
8546        return EVENT_KEY$4;
8547      }
8548    }, {
8549      key: "DefaultType",
8550      get: function get() {
8551        return DefaultType$3;
8552      }
8553    }]);
8554
8555    return Tooltip;
8556  }();
8557  /**
8558   * jQuery
8559   */
8560
8561
8562  $__default["default"].fn[NAME$4] = Tooltip._jQueryInterface;
8563  $__default["default"].fn[NAME$4].Constructor = Tooltip;
8564
8565  $__default["default"].fn[NAME$4].noConflict = function () {
8566    $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;
8567    return Tooltip._jQueryInterface;
8568  };
8569
8570  /**
8571   * Constants
8572   */
8573
8574  var NAME$3 = 'popover';
8575  var VERSION$3 = '4.6.2';
8576  var DATA_KEY$3 = 'bs.popover';
8577  var EVENT_KEY$3 = "." + DATA_KEY$3;
8578  var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3];
8579  var CLASS_PREFIX = 'bs-popover';
8580  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
8581  var CLASS_NAME_FADE$2 = 'fade';
8582  var CLASS_NAME_SHOW$2 = 'show';
8583  var SELECTOR_TITLE = '.popover-header';
8584  var SELECTOR_CONTENT = '.popover-body';
8585
8586  var Default$2 = _extends({}, Tooltip.Default, {
8587    placement: 'right',
8588    trigger: 'click',
8589    content: '',
8590    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
8591  });
8592
8593  var DefaultType$2 = _extends({}, Tooltip.DefaultType, {
8594    content: '(string|element|function)'
8595  });
8596
8597  var Event = {
8598    HIDE: "hide" + EVENT_KEY$3,
8599    HIDDEN: "hidden" + EVENT_KEY$3,
8600    SHOW: "show" + EVENT_KEY$3,
8601    SHOWN: "shown" + EVENT_KEY$3,
8602    INSERTED: "inserted" + EVENT_KEY$3,
8603    CLICK: "click" + EVENT_KEY$3,
8604    FOCUSIN: "focusin" + EVENT_KEY$3,
8605    FOCUSOUT: "focusout" + EVENT_KEY$3,
8606    MOUSEENTER: "mouseenter" + EVENT_KEY$3,
8607    MOUSELEAVE: "mouseleave" + EVENT_KEY$3
8608  };
8609  /**
8610   * Class definition
8611   */
8612
8613  var Popover = /*#__PURE__*/function (_Tooltip) {
8614    _inheritsLoose(Popover, _Tooltip);
8615
8616    function Popover() {
8617      return _Tooltip.apply(this, arguments) || this;
8618    }
8619
8620    var _proto = Popover.prototype;
8621
8622    // Overrides
8623    _proto.isWithContent = function isWithContent() {
8624      return this.getTitle() || this._getContent();
8625    };
8626
8627    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
8628      $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
8629    };
8630
8631    _proto.getTipElement = function getTipElement() {
8632      this.tip = this.tip || $__default["default"](this.config.template)[0];
8633      return this.tip;
8634    };
8635
8636    _proto.setContent = function setContent() {
8637      var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events
8638
8639      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
8640
8641      var content = this._getContent();
8642
8643      if (typeof content === 'function') {
8644        content = content.call(this.element);
8645      }
8646
8647      this.setElementContent($tip.find(SELECTOR_CONTENT), content);
8648      $tip.removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$2);
8649    } // Private
8650    ;
8651
8652    _proto._getContent = function _getContent() {
8653      return this.element.getAttribute('data-content') || this.config.content;
8654    };
8655
8656    _proto._cleanTipClass = function _cleanTipClass() {
8657      var $tip = $__default["default"](this.getTipElement());
8658      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
8659
8660      if (tabClass !== null && tabClass.length > 0) {
8661        $tip.removeClass(tabClass.join(''));
8662      }
8663    } // Static
8664    ;
8665
8666    Popover._jQueryInterface = function _jQueryInterface(config) {
8667      return this.each(function () {
8668        var data = $__default["default"](this).data(DATA_KEY$3);
8669
8670        var _config = typeof config === 'object' ? config : null;
8671
8672        if (!data && /dispose|hide/.test(config)) {
8673          return;
8674        }
8675
8676        if (!data) {
8677          data = new Popover(this, _config);
8678          $__default["default"](this).data(DATA_KEY$3, data);
8679        }
8680
8681        if (typeof config === 'string') {
8682          if (typeof data[config] === 'undefined') {
8683            throw new TypeError("No method named \"" + config + "\"");
8684          }
8685
8686          data[config]();
8687        }
8688      });
8689    };
8690
8691    _createClass(Popover, null, [{
8692      key: "VERSION",
8693      get: // Getters
8694      function get() {
8695        return VERSION$3;
8696      }
8697    }, {
8698      key: "Default",
8699      get: function get() {
8700        return Default$2;
8701      }
8702    }, {
8703      key: "NAME",
8704      get: function get() {
8705        return NAME$3;
8706      }
8707    }, {
8708      key: "DATA_KEY",
8709      get: function get() {
8710        return DATA_KEY$3;
8711      }
8712    }, {
8713      key: "Event",
8714      get: function get() {
8715        return Event;
8716      }
8717    }, {
8718      key: "EVENT_KEY",
8719      get: function get() {
8720        return EVENT_KEY$3;
8721      }
8722    }, {
8723      key: "DefaultType",
8724      get: function get() {
8725        return DefaultType$2;
8726      }
8727    }]);
8728
8729    return Popover;
8730  }(Tooltip);
8731  /**
8732   * jQuery
8733   */
8734
8735
8736  $__default["default"].fn[NAME$3] = Popover._jQueryInterface;
8737  $__default["default"].fn[NAME$3].Constructor = Popover;
8738
8739  $__default["default"].fn[NAME$3].noConflict = function () {
8740    $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;
8741    return Popover._jQueryInterface;
8742  };
8743
8744  /**
8745   * Constants
8746   */
8747
8748  var NAME$2 = 'scrollspy';
8749  var VERSION$2 = '4.6.2';
8750  var DATA_KEY$2 = 'bs.scrollspy';
8751  var EVENT_KEY$2 = "." + DATA_KEY$2;
8752  var DATA_API_KEY$1 = '.data-api';
8753  var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2];
8754  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
8755  var CLASS_NAME_ACTIVE$1 = 'active';
8756  var EVENT_ACTIVATE = "activate" + EVENT_KEY$2;
8757  var EVENT_SCROLL = "scroll" + EVENT_KEY$2;
8758  var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$1;
8759  var METHOD_OFFSET = 'offset';
8760  var METHOD_POSITION = 'position';
8761  var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
8762  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
8763  var SELECTOR_NAV_LINKS = '.nav-link';
8764  var SELECTOR_NAV_ITEMS = '.nav-item';
8765  var SELECTOR_LIST_ITEMS = '.list-group-item';
8766  var SELECTOR_DROPDOWN$1 = '.dropdown';
8767  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';
8768  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
8769  var Default$1 = {
8770    offset: 10,
8771    method: 'auto',
8772    target: ''
8773  };
8774  var DefaultType$1 = {
8775    offset: 'number',
8776    method: 'string',
8777    target: '(string|element)'
8778  };
8779  /**
8780   * Class definition
8781   */
8782
8783  var ScrollSpy = /*#__PURE__*/function () {
8784    function ScrollSpy(element, config) {
8785      var _this = this;
8786
8787      this._element = element;
8788      this._scrollElement = element.tagName === 'BODY' ? window : element;
8789      this._config = this._getConfig(config);
8790      this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
8791      this._offsets = [];
8792      this._targets = [];
8793      this._activeTarget = null;
8794      this._scrollHeight = 0;
8795      $__default["default"](this._scrollElement).on(EVENT_SCROLL, function (event) {
8796        return _this._process(event);
8797      });
8798      this.refresh();
8799
8800      this._process();
8801    } // Getters
8802
8803
8804    var _proto = ScrollSpy.prototype;
8805
8806    // Public
8807    _proto.refresh = function refresh() {
8808      var _this2 = this;
8809
8810      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
8811      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
8812      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
8813      this._offsets = [];
8814      this._targets = [];
8815      this._scrollHeight = this._getScrollHeight();
8816      var targets = [].slice.call(document.querySelectorAll(this._selector));
8817      targets.map(function (element) {
8818        var target;
8819        var targetSelector = Util.getSelectorFromElement(element);
8820
8821        if (targetSelector) {
8822          target = document.querySelector(targetSelector);
8823        }
8824
8825        if (target) {
8826          var targetBCR = target.getBoundingClientRect();
8827
8828          if (targetBCR.width || targetBCR.height) {
8829            // TODO (fat): remove sketch reliance on jQuery position/offset
8830            return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector];
8831          }
8832        }
8833
8834        return null;
8835      }).filter(Boolean).sort(function (a, b) {
8836        return a[0] - b[0];
8837      }).forEach(function (item) {
8838        _this2._offsets.push(item[0]);
8839
8840        _this2._targets.push(item[1]);
8841      });
8842    };
8843
8844    _proto.dispose = function dispose() {
8845      $__default["default"].removeData(this._element, DATA_KEY$2);
8846      $__default["default"](this._scrollElement).off(EVENT_KEY$2);
8847      this._element = null;
8848      this._scrollElement = null;
8849      this._config = null;
8850      this._selector = null;
8851      this._offsets = null;
8852      this._targets = null;
8853      this._activeTarget = null;
8854      this._scrollHeight = null;
8855    } // Private
8856    ;
8857
8858    _proto._getConfig = function _getConfig(config) {
8859      config = _extends({}, Default$1, typeof config === 'object' && config ? config : {});
8860
8861      if (typeof config.target !== 'string' && Util.isElement(config.target)) {
8862        var id = $__default["default"](config.target).attr('id');
8863
8864        if (!id) {
8865          id = Util.getUID(NAME$2);
8866          $__default["default"](config.target).attr('id', id);
8867        }
8868
8869        config.target = "#" + id;
8870      }
8871
8872      Util.typeCheckConfig(NAME$2, config, DefaultType$1);
8873      return config;
8874    };
8875
8876    _proto._getScrollTop = function _getScrollTop() {
8877      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
8878    };
8879
8880    _proto._getScrollHeight = function _getScrollHeight() {
8881      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
8882    };
8883
8884    _proto._getOffsetHeight = function _getOffsetHeight() {
8885      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
8886    };
8887
8888    _proto._process = function _process() {
8889      var scrollTop = this._getScrollTop() + this._config.offset;
8890
8891      var scrollHeight = this._getScrollHeight();
8892
8893      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
8894
8895      if (this._scrollHeight !== scrollHeight) {
8896        this.refresh();
8897      }
8898
8899      if (scrollTop >= maxScroll) {
8900        var target = this._targets[this._targets.length - 1];
8901
8902        if (this._activeTarget !== target) {
8903          this._activate(target);
8904        }
8905
8906        return;
8907      }
8908
8909      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
8910        this._activeTarget = null;
8911
8912        this._clear();
8913
8914        return;
8915      }
8916
8917      for (var i = this._offsets.length; i--;) {
8918        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
8919
8920        if (isActiveTarget) {
8921          this._activate(this._targets[i]);
8922        }
8923      }
8924    };
8925
8926    _proto._activate = function _activate(target) {
8927      this._activeTarget = target;
8928
8929      this._clear();
8930
8931      var queries = this._selector.split(',').map(function (selector) {
8932        return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
8933      });
8934
8935      var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(','))));
8936
8937      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
8938        $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);
8939        $link.addClass(CLASS_NAME_ACTIVE$1);
8940      } else {
8941        // Set triggered link as active
8942        $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active
8943        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
8944
8945        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item
8946
8947        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);
8948      }
8949
8950      $__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, {
8951        relatedTarget: target
8952      });
8953    };
8954
8955    _proto._clear = function _clear() {
8956      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
8957        return node.classList.contains(CLASS_NAME_ACTIVE$1);
8958      }).forEach(function (node) {
8959        return node.classList.remove(CLASS_NAME_ACTIVE$1);
8960      });
8961    } // Static
8962    ;
8963
8964    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
8965      return this.each(function () {
8966        var data = $__default["default"](this).data(DATA_KEY$2);
8967
8968        var _config = typeof config === 'object' && config;
8969
8970        if (!data) {
8971          data = new ScrollSpy(this, _config);
8972          $__default["default"](this).data(DATA_KEY$2, data);
8973        }
8974
8975        if (typeof config === 'string') {
8976          if (typeof data[config] === 'undefined') {
8977            throw new TypeError("No method named \"" + config + "\"");
8978          }
8979
8980          data[config]();
8981        }
8982      });
8983    };
8984
8985    _createClass(ScrollSpy, null, [{
8986      key: "VERSION",
8987      get: function get() {
8988        return VERSION$2;
8989      }
8990    }, {
8991      key: "Default",
8992      get: function get() {
8993        return Default$1;
8994      }
8995    }]);
8996
8997    return ScrollSpy;
8998  }();
8999  /**
9000   * Data API implementation
9001   */
9002
9003
9004  $__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
9005    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
9006    var scrollSpysLength = scrollSpys.length;
9007
9008    for (var i = scrollSpysLength; i--;) {
9009      var $spy = $__default["default"](scrollSpys[i]);
9010
9011      ScrollSpy._jQueryInterface.call($spy, $spy.data());
9012    }
9013  });
9014  /**
9015   * jQuery
9016   */
9017
9018  $__default["default"].fn[NAME$2] = ScrollSpy._jQueryInterface;
9019  $__default["default"].fn[NAME$2].Constructor = ScrollSpy;
9020
9021  $__default["default"].fn[NAME$2].noConflict = function () {
9022    $__default["default"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;
9023    return ScrollSpy._jQueryInterface;
9024  };
9025
9026  /**
9027   * Constants
9028   */
9029
9030  var NAME$1 = 'tab';
9031  var VERSION$1 = '4.6.2';
9032  var DATA_KEY$1 = 'bs.tab';
9033  var EVENT_KEY$1 = "." + DATA_KEY$1;
9034  var DATA_API_KEY = '.data-api';
9035  var JQUERY_NO_CONFLICT$1 = $__default["default"].fn[NAME$1];
9036  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
9037  var CLASS_NAME_ACTIVE = 'active';
9038  var CLASS_NAME_DISABLED = 'disabled';
9039  var CLASS_NAME_FADE$1 = 'fade';
9040  var CLASS_NAME_SHOW$1 = 'show';
9041  var EVENT_HIDE$1 = "hide" + EVENT_KEY$1;
9042  var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$1;
9043  var EVENT_SHOW$1 = "show" + EVENT_KEY$1;
9044  var EVENT_SHOWN$1 = "shown" + EVENT_KEY$1;
9045  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY$1 + DATA_API_KEY;
9046  var SELECTOR_DROPDOWN = '.dropdown';
9047  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
9048  var SELECTOR_ACTIVE = '.active';
9049  var SELECTOR_ACTIVE_UL = '> li > .active';
9050  var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
9051  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
9052  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';
9053  /**
9054   * Class definition
9055   */
9056
9057  var Tab = /*#__PURE__*/function () {
9058    function Tab(element) {
9059      this._element = element;
9060    } // Getters
9061
9062
9063    var _proto = Tab.prototype;
9064
9065    // Public
9066    _proto.show = function show() {
9067      var _this = this;
9068
9069      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default["default"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {
9070        return;
9071      }
9072
9073      var target;
9074      var previous;
9075      var listElement = $__default["default"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];
9076      var selector = Util.getSelectorFromElement(this._element);
9077
9078      if (listElement) {
9079        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
9080        previous = $__default["default"].makeArray($__default["default"](listElement).find(itemSelector));
9081        previous = previous[previous.length - 1];
9082      }
9083
9084      var hideEvent = $__default["default"].Event(EVENT_HIDE$1, {
9085        relatedTarget: this._element
9086      });
9087      var showEvent = $__default["default"].Event(EVENT_SHOW$1, {
9088        relatedTarget: previous
9089      });
9090
9091      if (previous) {
9092        $__default["default"](previous).trigger(hideEvent);
9093      }
9094
9095      $__default["default"](this._element).trigger(showEvent);
9096
9097      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
9098        return;
9099      }
9100
9101      if (selector) {
9102        target = document.querySelector(selector);
9103      }
9104
9105      this._activate(this._element, listElement);
9106
9107      var complete = function complete() {
9108        var hiddenEvent = $__default["default"].Event(EVENT_HIDDEN$1, {
9109          relatedTarget: _this._element
9110        });
9111        var shownEvent = $__default["default"].Event(EVENT_SHOWN$1, {
9112          relatedTarget: previous
9113        });
9114        $__default["default"](previous).trigger(hiddenEvent);
9115        $__default["default"](_this._element).trigger(shownEvent);
9116      };
9117
9118      if (target) {
9119        this._activate(target, target.parentNode, complete);
9120      } else {
9121        complete();
9122      }
9123    };
9124
9125    _proto.dispose = function dispose() {
9126      $__default["default"].removeData(this._element, DATA_KEY$1);
9127      this._element = null;
9128    } // Private
9129    ;
9130
9131    _proto._activate = function _activate(element, container, callback) {
9132      var _this2 = this;
9133
9134      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default["default"](container).find(SELECTOR_ACTIVE_UL) : $__default["default"](container).children(SELECTOR_ACTIVE);
9135      var active = activeElements[0];
9136      var isTransitioning = callback && active && $__default["default"](active).hasClass(CLASS_NAME_FADE$1);
9137
9138      var complete = function complete() {
9139        return _this2._transitionComplete(element, active, callback);
9140      };
9141
9142      if (active && isTransitioning) {
9143        var transitionDuration = Util.getTransitionDurationFromElement(active);
9144        $__default["default"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
9145      } else {
9146        complete();
9147      }
9148    };
9149
9150    _proto._transitionComplete = function _transitionComplete(element, active, callback) {
9151      if (active) {
9152        $__default["default"](active).removeClass(CLASS_NAME_ACTIVE);
9153        var dropdownChild = $__default["default"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];
9154
9155        if (dropdownChild) {
9156          $__default["default"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);
9157        }
9158
9159        if (active.getAttribute('role') === 'tab') {
9160          active.setAttribute('aria-selected', false);
9161        }
9162      }
9163
9164      $__default["default"](element).addClass(CLASS_NAME_ACTIVE);
9165
9166      if (element.getAttribute('role') === 'tab') {
9167        element.setAttribute('aria-selected', true);
9168      }
9169
9170      Util.reflow(element);
9171
9172      if (element.classList.contains(CLASS_NAME_FADE$1)) {
9173        element.classList.add(CLASS_NAME_SHOW$1);
9174      }
9175
9176      var parent = element.parentNode;
9177
9178      if (parent && parent.nodeName === 'LI') {
9179        parent = parent.parentNode;
9180      }
9181
9182      if (parent && $__default["default"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
9183        var dropdownElement = $__default["default"](element).closest(SELECTOR_DROPDOWN)[0];
9184
9185        if (dropdownElement) {
9186          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));
9187          $__default["default"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);
9188        }
9189
9190        element.setAttribute('aria-expanded', true);
9191      }
9192
9193      if (callback) {
9194        callback();
9195      }
9196    } // Static
9197    ;
9198
9199    Tab._jQueryInterface = function _jQueryInterface(config) {
9200      return this.each(function () {
9201        var $this = $__default["default"](this);
9202        var data = $this.data(DATA_KEY$1);
9203
9204        if (!data) {
9205          data = new Tab(this);
9206          $this.data(DATA_KEY$1, data);
9207        }
9208
9209        if (typeof config === 'string') {
9210          if (typeof data[config] === 'undefined') {
9211            throw new TypeError("No method named \"" + config + "\"");
9212          }
9213
9214          data[config]();
9215        }
9216      });
9217    };
9218
9219    _createClass(Tab, null, [{
9220      key: "VERSION",
9221      get: function get() {
9222        return VERSION$1;
9223      }
9224    }]);
9225
9226    return Tab;
9227  }();
9228  /**
9229   * Data API implementation
9230   */
9231
9232
9233  $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
9234    event.preventDefault();
9235
9236    Tab._jQueryInterface.call($__default["default"](this), 'show');
9237  });
9238  /**
9239   * jQuery
9240   */
9241
9242  $__default["default"].fn[NAME$1] = Tab._jQueryInterface;
9243  $__default["default"].fn[NAME$1].Constructor = Tab;
9244
9245  $__default["default"].fn[NAME$1].noConflict = function () {
9246    $__default["default"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;
9247    return Tab._jQueryInterface;
9248  };
9249
9250  /**
9251   * Constants
9252   */
9253
9254  var NAME = 'toast';
9255  var VERSION = '4.6.2';
9256  var DATA_KEY = 'bs.toast';
9257  var EVENT_KEY = "." + DATA_KEY;
9258  var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
9259  var CLASS_NAME_FADE = 'fade';
9260  var CLASS_NAME_HIDE = 'hide';
9261  var CLASS_NAME_SHOW = 'show';
9262  var CLASS_NAME_SHOWING = 'showing';
9263  var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
9264  var EVENT_HIDE = "hide" + EVENT_KEY;
9265  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
9266  var EVENT_SHOW = "show" + EVENT_KEY;
9267  var EVENT_SHOWN = "shown" + EVENT_KEY;
9268  var SELECTOR_DATA_DISMISS = '[data-dismiss="toast"]';
9269  var Default = {
9270    animation: true,
9271    autohide: true,
9272    delay: 500
9273  };
9274  var DefaultType = {
9275    animation: 'boolean',
9276    autohide: 'boolean',
9277    delay: 'number'
9278  };
9279  /**
9280   * Class definition
9281   */
9282
9283  var Toast = /*#__PURE__*/function () {
9284    function Toast(element, config) {
9285      this._element = element;
9286      this._config = this._getConfig(config);
9287      this._timeout = null;
9288
9289      this._setListeners();
9290    } // Getters
9291
9292
9293    var _proto = Toast.prototype;
9294
9295    // Public
9296    _proto.show = function show() {
9297      var _this = this;
9298
9299      var showEvent = $__default["default"].Event(EVENT_SHOW);
9300      $__default["default"](this._element).trigger(showEvent);
9301
9302      if (showEvent.isDefaultPrevented()) {
9303        return;
9304      }
9305
9306      this._clearTimeout();
9307
9308      if (this._config.animation) {
9309        this._element.classList.add(CLASS_NAME_FADE);
9310      }
9311
9312      var complete = function complete() {
9313        _this._element.classList.remove(CLASS_NAME_SHOWING);
9314
9315        _this._element.classList.add(CLASS_NAME_SHOW);
9316
9317        $__default["default"](_this._element).trigger(EVENT_SHOWN);
9318
9319        if (_this._config.autohide) {
9320          _this._timeout = setTimeout(function () {
9321            _this.hide();
9322          }, _this._config.delay);
9323        }
9324      };
9325
9326      this._element.classList.remove(CLASS_NAME_HIDE);
9327
9328      Util.reflow(this._element);
9329
9330      this._element.classList.add(CLASS_NAME_SHOWING);
9331
9332      if (this._config.animation) {
9333        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
9334        $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
9335      } else {
9336        complete();
9337      }
9338    };
9339
9340    _proto.hide = function hide() {
9341      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
9342        return;
9343      }
9344
9345      var hideEvent = $__default["default"].Event(EVENT_HIDE);
9346      $__default["default"](this._element).trigger(hideEvent);
9347
9348      if (hideEvent.isDefaultPrevented()) {
9349        return;
9350      }
9351
9352      this._close();
9353    };
9354
9355    _proto.dispose = function dispose() {
9356      this._clearTimeout();
9357
9358      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
9359        this._element.classList.remove(CLASS_NAME_SHOW);
9360      }
9361
9362      $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
9363      $__default["default"].removeData(this._element, DATA_KEY);
9364      this._element = null;
9365      this._config = null;
9366    } // Private
9367    ;
9368
9369    _proto._getConfig = function _getConfig(config) {
9370      config = _extends({}, Default, $__default["default"](this._element).data(), typeof config === 'object' && config ? config : {});
9371      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
9372      return config;
9373    };
9374
9375    _proto._setListeners = function _setListeners() {
9376      var _this2 = this;
9377
9378      $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
9379        return _this2.hide();
9380      });
9381    };
9382
9383    _proto._close = function _close() {
9384      var _this3 = this;
9385
9386      var complete = function complete() {
9387        _this3._element.classList.add(CLASS_NAME_HIDE);
9388
9389        $__default["default"](_this3._element).trigger(EVENT_HIDDEN);
9390      };
9391
9392      this._element.classList.remove(CLASS_NAME_SHOW);
9393
9394      if (this._config.animation) {
9395        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
9396        $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
9397      } else {
9398        complete();
9399      }
9400    };
9401
9402    _proto._clearTimeout = function _clearTimeout() {
9403      clearTimeout(this._timeout);
9404      this._timeout = null;
9405    } // Static
9406    ;
9407
9408    Toast._jQueryInterface = function _jQueryInterface(config) {
9409      return this.each(function () {
9410        var $element = $__default["default"](this);
9411        var data = $element.data(DATA_KEY);
9412
9413        var _config = typeof config === 'object' && config;
9414
9415        if (!data) {
9416          data = new Toast(this, _config);
9417          $element.data(DATA_KEY, data);
9418        }
9419
9420        if (typeof config === 'string') {
9421          if (typeof data[config] === 'undefined') {
9422            throw new TypeError("No method named \"" + config + "\"");
9423          }
9424
9425          data[config](this);
9426        }
9427      });
9428    };
9429
9430    _createClass(Toast, null, [{
9431      key: "VERSION",
9432      get: function get() {
9433        return VERSION;
9434      }
9435    }, {
9436      key: "DefaultType",
9437      get: function get() {
9438        return DefaultType;
9439      }
9440    }, {
9441      key: "Default",
9442      get: function get() {
9443        return Default;
9444      }
9445    }]);
9446
9447    return Toast;
9448  }();
9449  /**
9450   * jQuery
9451   */
9452
9453
9454  $__default["default"].fn[NAME] = Toast._jQueryInterface;
9455  $__default["default"].fn[NAME].Constructor = Toast;
9456
9457  $__default["default"].fn[NAME].noConflict = function () {
9458    $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
9459    return Toast._jQueryInterface;
9460  };
9461
9462  exports.Alert = Alert;
9463  exports.Button = Button;
9464  exports.Carousel = Carousel;
9465  exports.Collapse = Collapse;
9466  exports.Dropdown = Dropdown;
9467  exports.Modal = Modal;
9468  exports.Popover = Popover;
9469  exports.Scrollspy = ScrollSpy;
9470  exports.Tab = Tab;
9471  exports.Toast = Toast;
9472  exports.Tooltip = Tooltip;
9473  exports.Util = Util;
9474
9475  Object.defineProperty(exports, '__esModule', { value: true });
9476
9477}));
9478//# sourceMappingURL=bootstrap.js.map
9479
9480
9481/***/ }),
9482
vendor: 49,209 bytes, lines 9483-11284
9483/***/ "./node_modules/buffer/index.js":
9484/*!**************************************!*\
9485  !*** ./node_modules/buffer/index.js ***!
9486  \**************************************/
9487/*! no static exports found */
9488/***/ (function(module, exports, __webpack_require__) {
9489
9490"use strict";
9491/* WEBPACK VAR INJECTION */(function(global) {/*!
9492 * The buffer module from node.js, for the browser.
9493 *
9494 * @author   Feross Aboukhadijeh <http://feross.org>
9495 * @license  MIT
9496 */
9497/* eslint-disable no-proto */
9498
9499
9500
9501var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js")
9502var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js")
9503var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js")
9504
9505exports.Buffer = Buffer
9506exports.SlowBuffer = SlowBuffer
9507exports.INSPECT_MAX_BYTES = 50
9508
9509/**
9510 * If `Buffer.TYPED_ARRAY_SUPPORT`:
9511 *   === true    Use Uint8Array implementation (fastest)
9512 *   === false   Use Object implementation (most compatible, even IE6)
9513 *
9514 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
9515 * Opera 11.6+, iOS 4.2+.
9516 *
9517 * Due to various browser bugs, sometimes the Object implementation will be used even
9518 * when the browser supports typed arrays.
9519 *
9520 * Note:
9521 *
9522 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
9523 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
9524 *
9525 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
9526 *
9527 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
9528 *     incorrect length in some situations.
9529
9530 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
9531 * get the Object implementation, which is slower but behaves correctly.
9532 */
9533Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
9534  ? global.TYPED_ARRAY_SUPPORT
9535  : typedArraySupport()
9536
9537/*
9538 * Export kMaxLength after typed array support is determined.
9539 */
9540exports.kMaxLength = kMaxLength()
9541
9542function typedArraySupport () {
9543  try {
9544    var arr = new Uint8Array(1)
9545    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
9546    return arr.foo() === 42 && // typed array instances can be augmented
9547        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
9548        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
9549  } catch (e) {
9550    return false
9551  }
9552}
9553
9554function kMaxLength () {
9555  return Buffer.TYPED_ARRAY_SUPPORT
9556    ? 0x7fffffff
9557    : 0x3fffffff
9558}
9559
9560function createBuffer (that, length) {
9561  if (kMaxLength() < length) {
9562    throw new RangeError('Invalid typed array length')
9563  }
9564  if (Buffer.TYPED_ARRAY_SUPPORT) {
9565    // Return an augmented `Uint8Array` instance, for best performance
9566    that = new Uint8Array(length)
9567    that.__proto__ = Buffer.prototype
9568  } else {
9569    // Fallback: Return an object instance of the Buffer class
9570    if (that === null) {
9571      that = new Buffer(length)
9572    }
9573    that.length = length
9574  }
9575
9576  return that
9577}
9578
9579/**
9580 * The Buffer constructor returns instances of `Uint8Array` that have their
9581 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
9582 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
9583 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
9584 * returns a single octet.
9585 *
9586 * The `Uint8Array` prototype remains unmodified.
9587 */
9588
9589function Buffer (arg, encodingOrOffset, length) {
9590  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
9591    return new Buffer(arg, encodingOrOffset, length)
9592  }
9593
9594  // Common case.
9595  if (typeof arg === 'number') {
9596    if (typeof encodingOrOffset === 'string') {
9597      throw new Error(
9598        'If encoding is specified then the first argument must be a string'
9599      )
9600    }
9601    return allocUnsafe(this, arg)
9602  }
9603  return from(this, arg, encodingOrOffset, length)
9604}
9605
9606Buffer.poolSize = 8192 // not used by this implementation
9607
9608// TODO: Legacy, not needed anymore. Remove in next major version.
9609Buffer._augment = function (arr) {
9610  arr.__proto__ = Buffer.prototype
9611  return arr
9612}
9613
9614function from (that, value, encodingOrOffset, length) {
9615  if (typeof value === 'number') {
9616    throw new TypeError('"value" argument must not be a number')
9617  }
9618
9619  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
9620    return fromArrayBuffer(that, value, encodingOrOffset, length)
9621  }
9622
9623  if (typeof value === 'string') {
9624    return fromString(that, value, encodingOrOffset)
9625  }
9626
9627  return fromObject(that, value)
9628}
9629
9630/**
9631 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
9632 * if value is a number.
9633 * Buffer.from(str[, encoding])
9634 * Buffer.from(array)
9635 * Buffer.from(buffer)
9636 * Buffer.from(arrayBuffer[, byteOffset[, length]])
9637 **/
9638Buffer.from = function (value, encodingOrOffset, length) {
9639  return from(null, value, encodingOrOffset, length)
9640}
9641
9642if (Buffer.TYPED_ARRAY_SUPPORT) {
9643  Buffer.prototype.__proto__ = Uint8Array.prototype
9644  Buffer.__proto__ = Uint8Array
9645  if (typeof Symbol !== 'undefined' && Symbol.species &&
9646      Buffer[Symbol.species] === Buffer) {
9647    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
9648    Object.defineProperty(Buffer, Symbol.species, {
9649      value: null,
9650      configurable: true
9651    })
9652  }
9653}
9654
9655function assertSize (size) {
9656  if (typeof size !== 'number') {
9657    throw new TypeError('"size" argument must be a number')
9658  } else if (size < 0) {
9659    throw new RangeError('"size" argument must not be negative')
9660  }
9661}
9662
9663function alloc (that, size, fill, encoding) {
9664  assertSize(size)
9665  if (size <= 0) {
9666    return createBuffer(that, size)
9667  }
9668  if (fill !== undefined) {
9669    // Only pay attention to encoding if it's a string. This
9670    // prevents accidentally sending in a number that would
9671    // be interpretted as a start offset.
9672    return typeof encoding === 'string'
9673      ? createBuffer(that, size).fill(fill, encoding)
9674      : createBuffer(that, size).fill(fill)
9675  }
9676  return createBuffer(that, size)
9677}
9678
9679/**
9680 * Creates a new filled Buffer instance.
9681 * alloc(size[, fill[, encoding]])
9682 **/
9683Buffer.alloc = function (size, fill, encoding) {
9684  return alloc(null, size, fill, encoding)
9685}
9686
9687function allocUnsafe (that, size) {
9688  assertSize(size)
9689  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
9690  if (!Buffer.TYPED_ARRAY_SUPPORT) {
9691    for (var i = 0; i < size; ++i) {
9692      that[i] = 0
9693    }
9694  }
9695  return that
9696}
9697
9698/**
9699 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
9700 * */
9701Buffer.allocUnsafe = function (size) {
9702  return allocUnsafe(null, size)
9703}
9704/**
9705 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
9706 */
9707Buffer.allocUnsafeSlow = function (size) {
9708  return allocUnsafe(null, size)
9709}
9710
9711function fromString (that, string, encoding) {
9712  if (typeof encoding !== 'string' || encoding === '') {
9713    encoding = 'utf8'
9714  }
9715
9716  if (!Buffer.isEncoding(encoding)) {
9717    throw new TypeError('"encoding" must be a valid string encoding')
9718  }
9719
9720  var length = byteLength(string, encoding) | 0
9721  that = createBuffer(that, length)
9722
9723  var actual = that.write(string, encoding)
9724
9725  if (actual !== length) {
9726    // Writing a hex string, for example, that contains invalid characters will
9727    // cause everything after the first invalid character to be ignored. (e.g.
9728    // 'abxxcd' will be treated as 'ab')
9729    that = that.slice(0, actual)
9730  }
9731
9732  return that
9733}
9734
9735function fromArrayLike (that, array) {
9736  var length = array.length < 0 ? 0 : checked(array.length) | 0
9737  that = createBuffer(that, length)
9738  for (var i = 0; i < length; i += 1) {
9739    that[i] = array[i] & 255
9740  }
9741  return that
9742}
9743
9744function fromArrayBuffer (that, array, byteOffset, length) {
9745  array.byteLength // this throws if `array` is not a valid ArrayBuffer
9746
9747  if (byteOffset < 0 || array.byteLength < byteOffset) {
9748    throw new RangeError('\'offset\' is out of bounds')
9749  }
9750
9751  if (array.byteLength < byteOffset + (length || 0)) {
9752    throw new RangeError('\'length\' is out of bounds')
9753  }
9754
9755  if (byteOffset === undefined && length === undefined) {
9756    array = new Uint8Array(array)
9757  } else if (length === undefined) {
9758    array = new Uint8Array(array, byteOffset)
9759  } else {
9760    array = new Uint8Array(array, byteOffset, length)
9761  }
9762
9763  if (Buffer.TYPED_ARRAY_SUPPORT) {
9764    // Return an augmented `Uint8Array` instance, for best performance
9765    that = array
9766    that.__proto__ = Buffer.prototype
9767  } else {
9768    // Fallback: Return an object instance of the Buffer class
9769    that = fromArrayLike(that, array)
9770  }
9771  return that
9772}
9773
9774function fromObject (that, obj) {
9775  if (Buffer.isBuffer(obj)) {
9776    var len = checked(obj.length) | 0
9777    that = createBuffer(that, len)
9778
9779    if (that.length === 0) {
9780      return that
9781    }
9782
9783    obj.copy(that, 0, 0, len)
9784    return that
9785  }
9786
9787  if (obj) {
9788    if ((typeof ArrayBuffer !== 'undefined' &&
9789        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
9790      if (typeof obj.length !== 'number' || isnan(obj.length)) {
9791        return createBuffer(that, 0)
9792      }
9793      return fromArrayLike(that, obj)
9794    }
9795
9796    if (obj.type === 'Buffer' && isArray(obj.data)) {
9797      return fromArrayLike(that, obj.data)
9798    }
9799  }
9800
9801  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
9802}
9803
9804function checked (length) {
9805  // Note: cannot use `length < kMaxLength()` here because that fails when
9806  // length is NaN (which is otherwise coerced to zero.)
9807  if (length >= kMaxLength()) {
9808    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
9809                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
9810  }
9811  return length | 0
9812}
9813
9814function SlowBuffer (length) {
9815  if (+length != length) { // eslint-disable-line eqeqeq
9816    length = 0
9817  }
9818  return Buffer.alloc(+length)
9819}
9820
9821Buffer.isBuffer = function isBuffer (b) {
9822  return !!(b != null && b._isBuffer)
9823}
9824
9825Buffer.compare = function compare (a, b) {
9826  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
9827    throw new TypeError('Arguments must be Buffers')
9828  }
9829
9830  if (a === b) return 0
9831
9832  var x = a.length
9833  var y = b.length
9834
9835  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
9836    if (a[i] !== b[i]) {
9837      x = a[i]
9838      y = b[i]
9839      break
9840    }
9841  }
9842
9843  if (x < y) return -1
9844  if (y < x) return 1
9845  return 0
9846}
9847
9848Buffer.isEncoding = function isEncoding (encoding) {
9849  switch (String(encoding).toLowerCase()) {
9850    case 'hex':
9851    case 'utf8':
9852    case 'utf-8':
9853    case 'ascii':
9854    case 'latin1':
9855    case 'binary':
9856    case 'base64':
9857    case 'ucs2':
9858    case 'ucs-2':
9859    case 'utf16le':
9860    case 'utf-16le':
9861      return true
9862    default:
9863      return false
9864  }
9865}
9866
9867Buffer.concat = function concat (list, length) {
9868  if (!isArray(list)) {
9869    throw new TypeError('"list" argument must be an Array of Buffers')
9870  }
9871
9872  if (list.length === 0) {
9873    return Buffer.alloc(0)
9874  }
9875
9876  var i
9877  if (length === undefined) {
9878    length = 0
9879    for (i = 0; i < list.length; ++i) {
9880      length += list[i].length
9881    }
9882  }
9883
9884  var buffer = Buffer.allocUnsafe(length)
9885  var pos = 0
9886  for (i = 0; i < list.length; ++i) {
9887    var buf = list[i]
9888    if (!Buffer.isBuffer(buf)) {
9889      throw new TypeError('"list" argument must be an Array of Buffers')
9890    }
9891    buf.copy(buffer, pos)
9892    pos += buf.length
9893  }
9894  return buffer
9895}
9896
9897function byteLength (string, encoding) {
9898  if (Buffer.isBuffer(string)) {
9899    return string.length
9900  }
9901  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
9902      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
9903    return string.byteLength
9904  }
9905  if (typeof string !== 'string') {
9906    string = '' + string
9907  }
9908
9909  var len = string.length
9910  if (len === 0) return 0
9911
9912  // Use a for loop to avoid recursion
9913  var loweredCase = false
9914  for (;;) {
9915    switch (encoding) {
9916      case 'ascii':
9917      case 'latin1':
9918      case 'binary':
9919        return len
9920      case 'utf8':
9921      case 'utf-8':
9922      case undefined:
9923        return utf8ToBytes(string).length
9924      case 'ucs2':
9925      case 'ucs-2':
9926      case 'utf16le':
9927      case 'utf-16le':
9928        return len * 2
9929      case 'hex':
9930        return len >>> 1
9931      case 'base64':
9932        return base64ToBytes(string).length
9933      default:
9934        if (loweredCase) return utf8ToBytes(string).length // assume utf8
9935        encoding = ('' + encoding).toLowerCase()
9936        loweredCase = true
9937    }
9938  }
9939}
9940Buffer.byteLength = byteLength
9941
9942function slowToString (encoding, start, end) {
9943  var loweredCase = false
9944
9945  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
9946  // property of a typed array.
9947
9948  // This behaves neither like String nor Uint8Array in that we set start/end
9949  // to their upper/lower bounds if the value passed is out of range.
9950  // undefined is handled specially as per ECMA-262 6th Edition,
9951  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
9952  if (start === undefined || start < 0) {
9953    start = 0
9954  }
9955  // Return early if start > this.length. Done here to prevent potential uint32
9956  // coercion fail below.
9957  if (start > this.length) {
9958    return ''
9959  }
9960
9961  if (end === undefined || end > this.length) {
9962    end = this.length
9963  }
9964
9965  if (end <= 0) {
9966    return ''
9967  }
9968
9969  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
9970  end >>>= 0
9971  start >>>= 0
9972
9973  if (end <= start) {
9974    return ''
9975  }
9976
9977  if (!encoding) encoding = 'utf8'
9978
9979  while (true) {
9980    switch (encoding) {
9981      case 'hex':
9982        return hexSlice(this, start, end)
9983
9984      case 'utf8':
9985      case 'utf-8':
9986        return utf8Slice(this, start, end)
9987
9988      case 'ascii':
9989        return asciiSlice(this, start, end)
9990
9991      case 'latin1':
9992      case 'binary':
9993        return latin1Slice(this, start, end)
9994
9995      case 'base64':
9996        return base64Slice(this, start, end)
9997
9998      case 'ucs2':
9999      case 'ucs-2':
10000      case 'utf16le':
10001      case 'utf-16le':
10002        return utf16leSlice(this, start, end)
10003
10004      default:
10005        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
10006        encoding = (encoding + '').toLowerCase()
10007        loweredCase = true
10008    }
10009  }
10010}
10011
10012// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
10013// Buffer instances.
10014Buffer.prototype._isBuffer = true
10015
10016function swap (b, n, m) {
10017  var i = b[n]
10018  b[n] = b[m]
10019  b[m] = i
10020}
10021
10022Buffer.prototype.swap16 = function swap16 () {
10023  var len = this.length
10024  if (len % 2 !== 0) {
10025    throw new RangeError('Buffer size must be a multiple of 16-bits')
10026  }
10027  for (var i = 0; i < len; i += 2) {
10028    swap(this, i, i + 1)
10029  }
10030  return this
10031}
10032
10033Buffer.prototype.swap32 = function swap32 () {
10034  var len = this.length
10035  if (len % 4 !== 0) {
10036    throw new RangeError('Buffer size must be a multiple of 32-bits')
10037  }
10038  for (var i = 0; i < len; i += 4) {
10039    swap(this, i, i + 3)
10040    swap(this, i + 1, i + 2)
10041  }
10042  return this
10043}
10044
10045Buffer.prototype.swap64 = function swap64 () {
10046  var len = this.length
10047  if (len % 8 !== 0) {
10048    throw new RangeError('Buffer size must be a multiple of 64-bits')
10049  }
10050  for (var i = 0; i < len; i += 8) {
10051    swap(this, i, i + 7)
10052    swap(this, i + 1, i + 6)
10053    swap(this, i + 2, i + 5)
10054    swap(this, i + 3, i + 4)
10055  }
10056  return this
10057}
10058
10059Buffer.prototype.toString = function toString () {
10060  var length = this.length | 0
10061  if (length === 0) return ''
10062  if (arguments.length === 0) return utf8Slice(this, 0, length)
10063  return slowToString.apply(this, arguments)
10064}
10065
10066Buffer.prototype.equals = function equals (b) {
10067  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
10068  if (this === b) return true
10069  return Buffer.compare(this, b) === 0
10070}
10071
10072Buffer.prototype.inspect = function inspect () {
10073  var str = ''
10074  var max = exports.INSPECT_MAX_BYTES
10075  if (this.length > 0) {
10076    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
10077    if (this.length > max) str += ' ... '
10078  }
10079  return '<Buffer ' + str + '>'
10080}
10081
10082Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
10083  if (!Buffer.isBuffer(target)) {
10084    throw new TypeError('Argument must be a Buffer')
10085  }
10086
10087  if (start === undefined) {
10088    start = 0
10089  }
10090  if (end === undefined) {
10091    end = target ? target.length : 0
10092  }
10093  if (thisStart === undefined) {
10094    thisStart = 0
10095  }
10096  if (thisEnd === undefined) {
10097    thisEnd = this.length
10098  }
10099
10100  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
10101    throw new RangeError('out of range index')
10102  }
10103
10104  if (thisStart >= thisEnd && start >= end) {
10105    return 0
10106  }
10107  if (thisStart >= thisEnd) {
10108    return -1
10109  }
10110  if (start >= end) {
10111    return 1
10112  }
10113
10114  start >>>= 0
10115  end >>>= 0
10116  thisStart >>>= 0
10117  thisEnd >>>= 0
10118
10119  if (this === target) return 0
10120
10121  var x = thisEnd - thisStart
10122  var y = end - start
10123  var len = Math.min(x, y)
10124
10125  var thisCopy = this.slice(thisStart, thisEnd)
10126  var targetCopy = target.slice(start, end)
10127
10128  for (var i = 0; i < len; ++i) {
10129    if (thisCopy[i] !== targetCopy[i]) {
10130      x = thisCopy[i]
10131      y = targetCopy[i]
10132      break
10133    }
10134  }
10135
10136  if (x < y) return -1
10137  if (y < x) return 1
10138  return 0
10139}
10140
10141// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
10142// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
10143//
10144// Arguments:
10145// - buffer - a Buffer to search
10146// - val - a string, Buffer, or number
10147// - byteOffset - an index into `buffer`; will be clamped to an int32
10148// - encoding - an optional encoding, relevant is val is a string
10149// - dir - true for indexOf, false for lastIndexOf
10150function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
10151  // Empty buffer means no match
10152  if (buffer.length === 0) return -1
10153
10154  // Normalize byteOffset
10155  if (typeof byteOffset === 'string') {
10156    encoding = byteOffset
10157    byteOffset = 0
10158  } else if (byteOffset > 0x7fffffff) {
10159    byteOffset = 0x7fffffff
10160  } else if (byteOffset < -0x80000000) {
10161    byteOffset = -0x80000000
10162  }
10163  byteOffset = +byteOffset  // Coerce to Number.
10164  if (isNaN(byteOffset)) {
10165    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
10166    byteOffset = dir ? 0 : (buffer.length - 1)
10167  }
10168
10169  // Normalize byteOffset: negative offsets start from the end of the buffer
10170  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
10171  if (byteOffset >= buffer.length) {
10172    if (dir) return -1
10173    else byteOffset = buffer.length - 1
10174  } else if (byteOffset < 0) {
10175    if (dir) byteOffset = 0
10176    else return -1
10177  }
10178
10179  // Normalize val
10180  if (typeof val === 'string') {
10181    val = Buffer.from(val, encoding)
10182  }
10183
10184  // Finally, search either indexOf (if dir is true) or lastIndexOf
10185  if (Buffer.isBuffer(val)) {
10186    // Special case: looking for empty string/buffer always fails
10187    if (val.length === 0) {
10188      return -1
10189    }
10190    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
10191  } else if (typeof val === 'number') {
10192    val = val & 0xFF // Search for a byte value [0-255]
10193    if (Buffer.TYPED_ARRAY_SUPPORT &&
10194        typeof Uint8Array.prototype.indexOf === 'function') {
10195      if (dir) {
10196        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
10197      } else {
10198        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
10199      }
10200    }
10201    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
10202  }
10203
10204  throw new TypeError('val must be string, number or Buffer')
10205}
10206
10207function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
10208  var indexSize = 1
10209  var arrLength = arr.length
10210  var valLength = val.length
10211
10212  if (encoding !== undefined) {
10213    encoding = String(encoding).toLowerCase()
10214    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
10215        encoding === 'utf16le' || encoding === 'utf-16le') {
10216      if (arr.length < 2 || val.length < 2) {
10217        return -1
10218      }
10219      indexSize = 2
10220      arrLength /= 2
10221      valLength /= 2
10222      byteOffset /= 2
10223    }
10224  }
10225
10226  function read (buf, i) {
10227    if (indexSize === 1) {
10228      return buf[i]
10229    } else {
10230      return buf.readUInt16BE(i * indexSize)
10231    }
10232  }
10233
10234  var i
10235  if (dir) {
10236    var foundIndex = -1
10237    for (i = byteOffset; i < arrLength; i++) {
10238      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
10239        if (foundIndex === -1) foundIndex = i
10240        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
10241      } else {
10242        if (foundIndex !== -1) i -= i - foundIndex
10243        foundIndex = -1
10244      }
10245    }
10246  } else {
10247    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
10248    for (i = byteOffset; i >= 0; i--) {
10249      var found = true
10250      for (var j = 0; j < valLength; j++) {
10251        if (read(arr, i + j) !== read(val, j)) {
10252          found = false
10253          break
10254        }
10255      }
10256      if (found) return i
10257    }
10258  }
10259
10260  return -1
10261}
10262
10263Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
10264  return this.indexOf(val, byteOffset, encoding) !== -1
10265}
10266
10267Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
10268  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
10269}
10270
10271Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
10272  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
10273}
10274
10275function hexWrite (buf, string, offset, length) {
10276  offset = Number(offset) || 0
10277  var remaining = buf.length - offset
10278  if (!length) {
10279    length = remaining
10280  } else {
10281    length = Number(length)
10282    if (length > remaining) {
10283      length = remaining
10284    }
10285  }
10286
10287  // must be an even number of digits
10288  var strLen = string.length
10289  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
10290
10291  if (length > strLen / 2) {
10292    length = strLen / 2
10293  }
10294  for (var i = 0; i < length; ++i) {
10295    var parsed = parseInt(string.substr(i * 2, 2), 16)
10296    if (isNaN(parsed)) return i
10297    buf[offset + i] = parsed
10298  }
10299  return i
10300}
10301
10302function utf8Write (buf, string, offset, length) {
10303  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
10304}
10305
10306function asciiWrite (buf, string, offset, length) {
10307  return blitBuffer(asciiToBytes(string), buf, offset, length)
10308}
10309
10310function latin1Write (buf, string, offset, length) {
10311  return asciiWrite(buf, string, offset, length)
10312}
10313
10314function base64Write (buf, string, offset, length) {
10315  return blitBuffer(base64ToBytes(string), buf, offset, length)
10316}
10317
10318function ucs2Write (buf, string, offset, length) {
10319  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
10320}
10321
10322Buffer.prototype.write = function write (string, offset, length, encoding) {
10323  // Buffer#write(string)
10324  if (offset === undefined) {
10325    encoding = 'utf8'
10326    length = this.length
10327    offset = 0
10328  // Buffer#write(string, encoding)
10329  } else if (length === undefined && typeof offset === 'string') {
10330    encoding = offset
10331    length = this.length
10332    offset = 0
10333  // Buffer#write(string, offset[, length][, encoding])
10334  } else if (isFinite(offset)) {
10335    offset = offset | 0
10336    if (isFinite(length)) {
10337      length = length | 0
10338      if (encoding === undefined) encoding = 'utf8'
10339    } else {
10340      encoding = length
10341      length = undefined
10342    }
10343  // legacy write(string, encoding, offset, length) - remove in v0.13
10344  } else {
10345    throw new Error(
10346      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
10347    )
10348  }
10349
10350  var remaining = this.length - offset
10351  if (length === undefined || length > remaining) length = remaining
10352
10353  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
10354    throw new RangeError('Attempt to write outside buffer bounds')
10355  }
10356
10357  if (!encoding) encoding = 'utf8'
10358
10359  var loweredCase = false
10360  for (;;) {
10361    switch (encoding) {
10362      case 'hex':
10363        return hexWrite(this, string, offset, length)
10364
10365      case 'utf8':
10366      case 'utf-8':
10367        return utf8Write(this, string, offset, length)
10368
10369      case 'ascii':
10370        return asciiWrite(this, string, offset, length)
10371
10372      case 'latin1':
10373      case 'binary':
10374        return latin1Write(this, string, offset, length)
10375
10376      case 'base64':
10377        // Warning: maxLength not taken into account in base64Write
10378        return base64Write(this, string, offset, length)
10379
10380      case 'ucs2':
10381      case 'ucs-2':
10382      case 'utf16le':
10383      case 'utf-16le':
10384        return ucs2Write(this, string, offset, length)
10385
10386      default:
10387        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
10388        encoding = ('' + encoding).toLowerCase()
10389        loweredCase = true
10390    }
10391  }
10392}
10393
10394Buffer.prototype.toJSON = function toJSON () {
10395  return {
10396    type: 'Buffer',
10397    data: Array.prototype.slice.call(this._arr || this, 0)
10398  }
10399}
10400
10401function base64Slice (buf, start, end) {
10402  if (start === 0 && end === buf.length) {
10403    return base64.fromByteArray(buf)
10404  } else {
10405    return base64.fromByteArray(buf.slice(start, end))
10406  }
10407}
10408
10409function utf8Slice (buf, start, end) {
10410  end = Math.min(buf.length, end)
10411  var res = []
10412
10413  var i = start
10414  while (i < end) {
10415    var firstByte = buf[i]
10416    var codePoint = null
10417    var bytesPerSequence = (firstByte > 0xEF) ? 4
10418      : (firstByte > 0xDF) ? 3
10419      : (firstByte > 0xBF) ? 2
10420      : 1
10421
10422    if (i + bytesPerSequence <= end) {
10423      var secondByte, thirdByte, fourthByte, tempCodePoint
10424
10425      switch (bytesPerSequence) {
10426        case 1:
10427          if (firstByte < 0x80) {
10428            codePoint = firstByte
10429          }
10430          break
10431        case 2:
10432          secondByte = buf[i + 1]
10433          if ((secondByte & 0xC0) === 0x80) {
10434            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
10435            if (tempCodePoint > 0x7F) {
10436              codePoint = tempCodePoint
10437            }
10438          }
10439          break
10440        case 3:
10441          secondByte = buf[i + 1]
10442          thirdByte = buf[i + 2]
10443          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
10444            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
10445            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
10446              codePoint = tempCodePoint
10447            }
10448          }
10449          break
10450        case 4:
10451          secondByte = buf[i + 1]
10452          thirdByte = buf[i + 2]
10453          fourthByte = buf[i + 3]
10454          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
10455            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
10456            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
10457              codePoint = tempCodePoint
10458            }
10459          }
10460      }
10461    }
10462
10463    if (codePoint === null) {
10464      // we did not generate a valid codePoint so insert a
10465      // replacement char (U+FFFD) and advance only 1 byte
10466      codePoint = 0xFFFD
10467      bytesPerSequence = 1
10468    } else if (codePoint > 0xFFFF) {
10469      // encode to utf16 (surrogate pair dance)
10470      codePoint -= 0x10000
10471      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
10472      codePoint = 0xDC00 | codePoint & 0x3FF
10473    }
10474
10475    res.push(codePoint)
10476    i += bytesPerSequence
10477  }
10478
10479  return decodeCodePointsArray(res)
10480}
10481
10482// Based on http://stackoverflow.com/a/22747272/680742, the browser with
10483// the lowest limit is Chrome, with 0x10000 args.
10484// We go 1 magnitude less, for safety
10485var MAX_ARGUMENTS_LENGTH = 0x1000
10486
10487function decodeCodePointsArray (codePoints) {
10488  var len = codePoints.length
10489  if (len <= MAX_ARGUMENTS_LENGTH) {
10490    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
10491  }
10492
10493  // Decode in chunks to avoid "call stack size exceeded".
10494  var res = ''
10495  var i = 0
10496  while (i < len) {
10497    res += String.fromCharCode.apply(
10498      String,
10499      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
10500    )
10501  }
10502  return res
10503}
10504
10505function asciiSlice (buf, start, end) {
10506  var ret = ''
10507  end = Math.min(buf.length, end)
10508
10509  for (var i = start; i < end; ++i) {
10510    ret += String.fromCharCode(buf[i] & 0x7F)
10511  }
10512  return ret
10513}
10514
10515function latin1Slice (buf, start, end) {
10516  var ret = ''
10517  end = Math.min(buf.length, end)
10518
10519  for (var i = start; i < end; ++i) {
10520    ret += String.fromCharCode(buf[i])
10521  }
10522  return ret
10523}
10524
10525function hexSlice (buf, start, end) {
10526  var len = buf.length
10527
10528  if (!start || start < 0) start = 0
10529  if (!end || end < 0 || end > len) end = len
10530
10531  var out = ''
10532  for (var i = start; i < end; ++i) {
10533    out += toHex(buf[i])
10534  }
10535  return out
10536}
10537
10538function utf16leSlice (buf, start, end) {
10539  var bytes = buf.slice(start, end)
10540  var res = ''
10541  for (var i = 0; i < bytes.length; i += 2) {
10542    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
10543  }
10544  return res
10545}
10546
10547Buffer.prototype.slice = function slice (start, end) {
10548  var len = this.length
10549  start = ~~start
10550  end = end === undefined ? len : ~~end
10551
10552  if (start < 0) {
10553    start += len
10554    if (start < 0) start = 0
10555  } else if (start > len) {
10556    start = len
10557  }
10558
10559  if (end < 0) {
10560    end += len
10561    if (end < 0) end = 0
10562  } else if (end > len) {
10563    end = len
10564  }
10565
10566  if (end < start) end = start
10567
10568  var newBuf
10569  if (Buffer.TYPED_ARRAY_SUPPORT) {
10570    newBuf = this.subarray(start, end)
10571    newBuf.__proto__ = Buffer.prototype
10572  } else {
10573    var sliceLen = end - start
10574    newBuf = new Buffer(sliceLen, undefined)
10575    for (var i = 0; i < sliceLen; ++i) {
10576      newBuf[i] = this[i + start]
10577    }
10578  }
10579
10580  return newBuf
10581}
10582
10583/*
10584 * Need to make sure that buffer isn't trying to write out of bounds.
10585 */
10586function checkOffset (offset, ext, length) {
10587  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
10588  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
10589}
10590
10591Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
10592  offset = offset | 0
10593  byteLength = byteLength | 0
10594  if (!noAssert) checkOffset(offset, byteLength, this.length)
10595
10596  var val = this[offset]
10597  var mul = 1
10598  var i = 0
10599  while (++i < byteLength && (mul *= 0x100)) {
10600    val += this[offset + i] * mul
10601  }
10602
10603  return val
10604}
10605
10606Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
10607  offset = offset | 0
10608  byteLength = byteLength | 0
10609  if (!noAssert) {
10610    checkOffset(offset, byteLength, this.length)
10611  }
10612
10613  var val = this[offset + --byteLength]
10614  var mul = 1
10615  while (byteLength > 0 && (mul *= 0x100)) {
10616    val += this[offset + --byteLength] * mul
10617  }
10618
10619  return val
10620}
10621
10622Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
10623  if (!noAssert) checkOffset(offset, 1, this.length)
10624  return this[offset]
10625}
10626
10627Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
10628  if (!noAssert) checkOffset(offset, 2, this.length)
10629  return this[offset] | (this[offset + 1] << 8)
10630}
10631
10632Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
10633  if (!noAssert) checkOffset(offset, 2, this.length)
10634  return (this[offset] << 8) | this[offset + 1]
10635}
10636
10637Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
10638  if (!noAssert) checkOffset(offset, 4, this.length)
10639
10640  return ((this[offset]) |
10641      (this[offset + 1] << 8) |
10642      (this[offset + 2] << 16)) +
10643      (this[offset + 3] * 0x1000000)
10644}
10645
10646Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
10647  if (!noAssert) checkOffset(offset, 4, this.length)
10648
10649  return (this[offset] * 0x1000000) +
10650    ((this[offset + 1] << 16) |
10651    (this[offset + 2] << 8) |
10652    this[offset + 3])
10653}
10654
10655Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
10656  offset = offset | 0
10657  byteLength = byteLength | 0
10658  if (!noAssert) checkOffset(offset, byteLength, this.length)
10659
10660  var val = this[offset]
10661  var mul = 1
10662  var i = 0
10663  while (++i < byteLength && (mul *= 0x100)) {
10664    val += this[offset + i] * mul
10665  }
10666  mul *= 0x80
10667
10668  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10669
10670  return val
10671}
10672
10673Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
10674  offset = offset | 0
10675  byteLength = byteLength | 0
10676  if (!noAssert) checkOffset(offset, byteLength, this.length)
10677
10678  var i = byteLength
10679  var mul = 1
10680  var val = this[offset + --i]
10681  while (i > 0 && (mul *= 0x100)) {
10682    val += this[offset + --i] * mul
10683  }
10684  mul *= 0x80
10685
10686  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
10687
10688  return val
10689}
10690
10691Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
10692  if (!noAssert) checkOffset(offset, 1, this.length)
10693  if (!(this[offset] & 0x80)) return (this[offset])
10694  return ((0xff - this[offset] + 1) * -1)
10695}
10696
10697Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
10698  if (!noAssert) checkOffset(offset, 2, this.length)
10699  var val = this[offset] | (this[offset + 1] << 8)
10700  return (val & 0x8000) ? val | 0xFFFF0000 : val
10701}
10702
10703Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
10704  if (!noAssert) checkOffset(offset, 2, this.length)
10705  var val = this[offset + 1] | (this[offset] << 8)
10706  return (val & 0x8000) ? val | 0xFFFF0000 : val
10707}
10708
10709Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
10710  if (!noAssert) checkOffset(offset, 4, this.length)
10711
10712  return (this[offset]) |
10713    (this[offset + 1] << 8) |
10714    (this[offset + 2] << 16) |
10715    (this[offset + 3] << 24)
10716}
10717
10718Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
10719  if (!noAssert) checkOffset(offset, 4, this.length)
10720
10721  return (this[offset] << 24) |
10722    (this[offset + 1] << 16) |
10723    (this[offset + 2] << 8) |
10724    (this[offset + 3])
10725}
10726
10727Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
10728  if (!noAssert) checkOffset(offset, 4, this.length)
10729  return ieee754.read(this, offset, true, 23, 4)
10730}
10731
10732Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
10733  if (!noAssert) checkOffset(offset, 4, this.length)
10734  return ieee754.read(this, offset, false, 23, 4)
10735}
10736
10737Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
10738  if (!noAssert) checkOffset(offset, 8, this.length)
10739  return ieee754.read(this, offset, true, 52, 8)
10740}
10741
10742Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
10743  if (!noAssert) checkOffset(offset, 8, this.length)
10744  return ieee754.read(this, offset, false, 52, 8)
10745}
10746
10747function checkInt (buf, value, offset, ext, max, min) {
10748  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
10749  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
10750  if (offset + ext > buf.length) throw new RangeError('Index out of range')
10751}
10752
10753Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
10754  value = +value
10755  offset = offset | 0
10756  byteLength = byteLength | 0
10757  if (!noAssert) {
10758    var maxBytes = Math.pow(2, 8 * byteLength) - 1
10759    checkInt(this, value, offset, byteLength, maxBytes, 0)
10760  }
10761
10762  var mul = 1
10763  var i = 0
10764  this[offset] = value & 0xFF
10765  while (++i < byteLength && (mul *= 0x100)) {
10766    this[offset + i] = (value / mul) & 0xFF
10767  }
10768
10769  return offset + byteLength
10770}
10771
10772Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
10773  value = +value
10774  offset = offset | 0
10775  byteLength = byteLength | 0
10776  if (!noAssert) {
10777    var maxBytes = Math.pow(2, 8 * byteLength) - 1
10778    checkInt(this, value, offset, byteLength, maxBytes, 0)
10779  }
10780
10781  var i = byteLength - 1
10782  var mul = 1
10783  this[offset + i] = value & 0xFF
10784  while (--i >= 0 && (mul *= 0x100)) {
10785    this[offset + i] = (value / mul) & 0xFF
10786  }
10787
10788  return offset + byteLength
10789}
10790
10791Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
10792  value = +value
10793  offset = offset | 0
10794  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
10795  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10796  this[offset] = (value & 0xff)
10797  return offset + 1
10798}
10799
10800function objectWriteUInt16 (buf, value, offset, littleEndian) {
10801  if (value < 0) value = 0xffff + value + 1
10802  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
10803    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
10804      (littleEndian ? i : 1 - i) * 8
10805  }
10806}
10807
10808Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
10809  value = +value
10810  offset = offset | 0
10811  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10812  if (Buffer.TYPED_ARRAY_SUPPORT) {
10813    this[offset] = (value & 0xff)
10814    this[offset + 1] = (value >>> 8)
10815  } else {
10816    objectWriteUInt16(this, value, offset, true)
10817  }
10818  return offset + 2
10819}
10820
10821Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
10822  value = +value
10823  offset = offset | 0
10824  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
10825  if (Buffer.TYPED_ARRAY_SUPPORT) {
10826    this[offset] = (value >>> 8)
10827    this[offset + 1] = (value & 0xff)
10828  } else {
10829    objectWriteUInt16(this, value, offset, false)
10830  }
10831  return offset + 2
10832}
10833
10834function objectWriteUInt32 (buf, value, offset, littleEndian) {
10835  if (value < 0) value = 0xffffffff + value + 1
10836  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
10837    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
10838  }
10839}
10840
10841Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
10842  value = +value
10843  offset = offset | 0
10844  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10845  if (Buffer.TYPED_ARRAY_SUPPORT) {
10846    this[offset + 3] = (value >>> 24)
10847    this[offset + 2] = (value >>> 16)
10848    this[offset + 1] = (value >>> 8)
10849    this[offset] = (value & 0xff)
10850  } else {
10851    objectWriteUInt32(this, value, offset, true)
10852  }
10853  return offset + 4
10854}
10855
10856Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
10857  value = +value
10858  offset = offset | 0
10859  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
10860  if (Buffer.TYPED_ARRAY_SUPPORT) {
10861    this[offset] = (value >>> 24)
10862    this[offset + 1] = (value >>> 16)
10863    this[offset + 2] = (value >>> 8)
10864    this[offset + 3] = (value & 0xff)
10865  } else {
10866    objectWriteUInt32(this, value, offset, false)
10867  }
10868  return offset + 4
10869}
10870
10871Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
10872  value = +value
10873  offset = offset | 0
10874  if (!noAssert) {
10875    var limit = Math.pow(2, 8 * byteLength - 1)
10876
10877    checkInt(this, value, offset, byteLength, limit - 1, -limit)
10878  }
10879
10880  var i = 0
10881  var mul = 1
10882  var sub = 0
10883  this[offset] = value & 0xFF
10884  while (++i < byteLength && (mul *= 0x100)) {
10885    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
10886      sub = 1
10887    }
10888    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10889  }
10890
10891  return offset + byteLength
10892}
10893
10894Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
10895  value = +value
10896  offset = offset | 0
10897  if (!noAssert) {
10898    var limit = Math.pow(2, 8 * byteLength - 1)
10899
10900    checkInt(this, value, offset, byteLength, limit - 1, -limit)
10901  }
10902
10903  var i = byteLength - 1
10904  var mul = 1
10905  var sub = 0
10906  this[offset + i] = value & 0xFF
10907  while (--i >= 0 && (mul *= 0x100)) {
10908    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
10909      sub = 1
10910    }
10911    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
10912  }
10913
10914  return offset + byteLength
10915}
10916
10917Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
10918  value = +value
10919  offset = offset | 0
10920  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
10921  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
10922  if (value < 0) value = 0xff + value + 1
10923  this[offset] = (value & 0xff)
10924  return offset + 1
10925}
10926
10927Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
10928  value = +value
10929  offset = offset | 0
10930  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10931  if (Buffer.TYPED_ARRAY_SUPPORT) {
10932    this[offset] = (value & 0xff)
10933    this[offset + 1] = (value >>> 8)
10934  } else {
10935    objectWriteUInt16(this, value, offset, true)
10936  }
10937  return offset + 2
10938}
10939
10940Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
10941  value = +value
10942  offset = offset | 0
10943  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
10944  if (Buffer.TYPED_ARRAY_SUPPORT) {
10945    this[offset] = (value >>> 8)
10946    this[offset + 1] = (value & 0xff)
10947  } else {
10948    objectWriteUInt16(this, value, offset, false)
10949  }
10950  return offset + 2
10951}
10952
10953Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
10954  value = +value
10955  offset = offset | 0
10956  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10957  if (Buffer.TYPED_ARRAY_SUPPORT) {
10958    this[offset] = (value & 0xff)
10959    this[offset + 1] = (value >>> 8)
10960    this[offset + 2] = (value >>> 16)
10961    this[offset + 3] = (value >>> 24)
10962  } else {
10963    objectWriteUInt32(this, value, offset, true)
10964  }
10965  return offset + 4
10966}
10967
10968Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
10969  value = +value
10970  offset = offset | 0
10971  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
10972  if (value < 0) value = 0xffffffff + value + 1
10973  if (Buffer.TYPED_ARRAY_SUPPORT) {
10974    this[offset] = (value >>> 24)
10975    this[offset + 1] = (value >>> 16)
10976    this[offset + 2] = (value >>> 8)
10977    this[offset + 3] = (value & 0xff)
10978  } else {
10979    objectWriteUInt32(this, value, offset, false)
10980  }
10981  return offset + 4
10982}
10983
10984function checkIEEE754 (buf, value, offset, ext, max, min) {
10985  if (offset + ext > buf.length) throw new RangeError('Index out of range')
10986  if (offset < 0) throw new RangeError('Index out of range')
10987}
10988
10989function writeFloat (buf, value, offset, littleEndian, noAssert) {
10990  if (!noAssert) {
10991    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
10992  }
10993  ieee754.write(buf, value, offset, littleEndian, 23, 4)
10994  return offset + 4
10995}
10996
10997Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
10998  return writeFloat(this, value, offset, true, noAssert)
10999}
11000
11001Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
11002  return writeFloat(this, value, offset, false, noAssert)
11003}
11004
11005function writeDouble (buf, value, offset, littleEndian, noAssert) {
11006  if (!noAssert) {
11007    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
11008  }
11009  ieee754.write(buf, value, offset, littleEndian, 52, 8)
11010  return offset + 8
11011}
11012
11013Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
11014  return writeDouble(this, value, offset, true, noAssert)
11015}
11016
11017Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
11018  return writeDouble(this, value, offset, false, noAssert)
11019}
11020
11021// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
11022Buffer.prototype.copy = function copy (target, targetStart, start, end) {
11023  if (!start) start = 0
11024  if (!end && end !== 0) end = this.length
11025  if (targetStart >= target.length) targetStart = target.length
11026  if (!targetStart) targetStart = 0
11027  if (end > 0 && end < start) end = start
11028
11029  // Copy 0 bytes; we're done
11030  if (end === start) return 0
11031  if (target.length === 0 || this.length === 0) return 0
11032
11033  // Fatal error conditions
11034  if (targetStart < 0) {
11035    throw new RangeError('targetStart out of bounds')
11036  }
11037  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
11038  if (end < 0) throw new RangeError('sourceEnd out of bounds')
11039
11040  // Are we oob?
11041  if (end > this.length) end = this.length
11042  if (target.length - targetStart < end - start) {
11043    end = target.length - targetStart + start
11044  }
11045
11046  var len = end - start
11047  var i
11048
11049  if (this === target && start < targetStart && targetStart < end) {
11050    // descending copy from end
11051    for (i = len - 1; i >= 0; --i) {
11052      target[i + targetStart] = this[i + start]
11053    }
11054  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
11055    // ascending copy from start
11056    for (i = 0; i < len; ++i) {
11057      target[i + targetStart] = this[i + start]
11058    }
11059  } else {
11060    Uint8Array.prototype.set.call(
11061      target,
11062      this.subarray(start, start + len),
11063      targetStart
11064    )
11065  }
11066
11067  return len
11068}
11069
11070// Usage:
11071//    buffer.fill(number[, offset[, end]])
11072//    buffer.fill(buffer[, offset[, end]])
11073//    buffer.fill(string[, offset[, end]][, encoding])
11074Buffer.prototype.fill = function fill (val, start, end, encoding) {
11075  // Handle string cases:
11076  if (typeof val === 'string') {
11077    if (typeof start === 'string') {
11078      encoding = start
11079      start = 0
11080      end = this.length
11081    } else if (typeof end === 'string') {
11082      encoding = end
11083      end = this.length
11084    }
11085    if (val.length === 1) {
11086      var code = val.charCodeAt(0)
11087      if (code < 256) {
11088        val = code
11089      }
11090    }
11091    if (encoding !== undefined && typeof encoding !== 'string') {
11092      throw new TypeError('encoding must be a string')
11093    }
11094    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
11095      throw new TypeError('Unknown encoding: ' + encoding)
11096    }
11097  } else if (typeof val === 'number') {
11098    val = val & 255
11099  }
11100
11101  // Invalid ranges are not set to a default, so can range check early.
11102  if (start < 0 || this.length < start || this.length < end) {
11103    throw new RangeError('Out of range index')
11104  }
11105
11106  if (end <= start) {
11107    return this
11108  }
11109
11110  start = start >>> 0
11111  end = end === undefined ? this.length : end >>> 0
11112
11113  if (!val) val = 0
11114
11115  var i
11116  if (typeof val === 'number') {
11117    for (i = start; i < end; ++i) {
11118      this[i] = val
11119    }
11120  } else {
11121    var bytes = Buffer.isBuffer(val)
11122      ? val
11123      : utf8ToBytes(new Buffer(val, encoding).toString())
11124    var len = bytes.length
11125    for (i = 0; i < end - start; ++i) {
11126      this[i + start] = bytes[i % len]
11127    }
11128  }
11129
11130  return this
11131}
11132
11133// HELPER FUNCTIONS
11134// ================
11135
11136var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
11137
11138function base64clean (str) {
11139  // Node strips out invalid characters like \n and \t from the string, base64-js does not
11140  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
11141  // Node converts strings with length < 2 to ''
11142  if (str.length < 2) return ''
11143  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
11144  while (str.length % 4 !== 0) {
11145    str = str + '='
11146  }
11147  return str
11148}
11149
11150function stringtrim (str) {
11151  if (str.trim) return str.trim()
11152  return str.replace(/^\s+|\s+$/g, '')
11153}
11154
11155function toHex (n) {
11156  if (n < 16) return '0' + n.toString(16)
11157  return n.toString(16)
11158}
11159
11160function utf8ToBytes (string, units) {
11161  units = units || Infinity
11162  var codePoint
11163  var length = string.length
11164  var leadSurrogate = null
11165  var bytes = []
11166
11167  for (var i = 0; i < length; ++i) {
11168    codePoint = string.charCodeAt(i)
11169
11170    // is surrogate component
11171    if (codePoint > 0xD7FF && codePoint < 0xE000) {
11172      // last char was a lead
11173      if (!leadSurrogate) {
11174        // no lead yet
11175        if (codePoint > 0xDBFF) {
11176          // unexpected trail
11177          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
11178          continue
11179        } else if (i + 1 === length) {
11180          // unpaired lead
11181          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
11182          continue
11183        }
11184
11185        // valid lead
11186        leadSurrogate = codePoint
11187
11188        continue
11189      }
11190
11191      // 2 leads in a row
11192      if (codePoint < 0xDC00) {
11193        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
11194        leadSurrogate = codePoint
11195        continue
11196      }
11197
11198      // valid surrogate pair
11199      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
11200    } else if (leadSurrogate) {
11201      // valid bmp char, but last char was a lead
11202      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
11203    }
11204
11205    leadSurrogate = null
11206
11207    // encode utf8
11208    if (codePoint < 0x80) {
11209      if ((units -= 1) < 0) break
11210      bytes.push(codePoint)
11211    } else if (codePoint < 0x800) {
11212      if ((units -= 2) < 0) break
11213      bytes.push(
11214        codePoint >> 0x6 | 0xC0,
11215        codePoint & 0x3F | 0x80
11216      )
11217    } else if (codePoint < 0x10000) {
11218      if ((units -= 3) < 0) break
11219      bytes.push(
11220        codePoint >> 0xC | 0xE0,
11221        codePoint >> 0x6 & 0x3F | 0x80,
11222        codePoint & 0x3F | 0x80
11223      )
11224    } else if (codePoint < 0x110000) {
11225      if ((units -= 4) < 0) break
11226      bytes.push(
11227        codePoint >> 0x12 | 0xF0,
11228        codePoint >> 0xC & 0x3F | 0x80,
11229        codePoint >> 0x6 & 0x3F | 0x80,
11230        codePoint & 0x3F | 0x80
11231      )
11232    } else {
11233      throw new Error('Invalid code point')
11234    }
11235  }
11236
11237  return bytes
11238}
11239
11240function asciiToBytes (str) {
11241  var byteArray = []
11242  for (var i = 0; i < str.length; ++i) {
11243    // Node's code seems to be doing this and not & 0x7F..
11244    byteArray.push(str.charCodeAt(i) & 0xFF)
11245  }
11246  return byteArray
11247}
11248
11249function utf16leToBytes (str, units) {
11250  var c, hi, lo
11251  var byteArray = []
11252  for (var i = 0; i < str.length; ++i) {
11253    if ((units -= 2) < 0) break
11254
11255    c = str.charCodeAt(i)
11256    hi = c >> 8
11257    lo = c % 256
11258    byteArray.push(lo)
11259    byteArray.push(hi)
11260  }
11261
11262  return byteArray
11263}
11264
11265function base64ToBytes (str) {
11266  return base64.toByteArray(base64clean(str))
11267}
11268
11269function blitBuffer (src, dst, offset, length) {
11270  for (var i = 0; i < length; ++i) {
11271    if ((i + offset >= dst.length) || (i >= src.length)) break
11272    dst[i + offset] = src[i]
11273  }
11274  return i
11275}
11276
11277function isnan (val) {
11278  return val !== val // eslint-disable-line no-self-compare
11279}
11280
11281/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
11282
11283/***/ }),
11284
vendor: 46,380 bytes, lines 11285-12864
11285/***/ "./node_modules/dom7/dom7.esm.js":
11286/*!***************************************!*\
11287  !*** ./node_modules/dom7/dom7.esm.js ***!
11288  \***************************************/
11289/*! exports provided: default, $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width */
11290/***/ (function(module, __webpack_exports__, __webpack_require__) {
11291
11292"use strict";
11293__webpack_require__.r(__webpack_exports__);
11294/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$", function() { return $; });
11295/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "add", function() { return add; });
11296/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; });
11297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animate", function() { return animate; });
11298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationEnd", function() { return animationEnd; });
11299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "append", function() { return append; });
11300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendTo", function() { return appendTo; });
11301/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attr", function() { return attr; });
11302/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blur", function() { return blur; });
11303/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "change", function() { return change; });
11304/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "children", function() { return children; });
11305/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "click", function() { return click; });
11306/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closest", function() { return closest; });
11307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; });
11308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "data", function() { return data; });
11309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dataset", function() { return dataset; });
11310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detach", function() { return detach; });
11311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return each; });
11312/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; });
11313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "eq", function() { return eq; });
11314/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; });
11315/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; });
11316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focus", function() { return focus; });
11317/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusin", function() { return focusin; });
11318/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusout", function() { return focusout; });
11319/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasClass", function() { return hasClass; });
11320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "height", function() { return height; });
11321/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return hide; });
11322/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "html", function() { return html; });
11323/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "index", function() { return index; });
11324/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertAfter", function() { return insertAfter; });
11325/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertBefore", function() { return insertBefore; });
11326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "is", function() { return is; });
11327/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keydown", function() { return keydown; });
11328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keypress", function() { return keypress; });
11329/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyup", function() { return keyup; });
11330/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousedown", function() { return mousedown; });
11331/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseenter", function() { return mouseenter; });
11332/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseleave", function() { return mouseleave; });
11333/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousemove", function() { return mousemove; });
11334/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseout", function() { return mouseout; });
11335/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseover", function() { return mouseover; });
11336/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseup", function() { return mouseup; });
11337/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "next", function() { return next; });
11338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextAll", function() { return nextAll; });
11339/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "off", function() { return off; });
11340/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return offset; });
11341/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "on", function() { return on; });
11342/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "once", function() { return once; });
11343/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerHeight", function() { return outerHeight; });
11344/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerWidth", function() { return outerWidth; });
11345/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parent", function() { return parent; });
11346/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parents", function() { return parents; });
11347/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prepend", function() { return prepend; });
11348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prependTo", function() { return prependTo; });
11349/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prev", function() { return prev; });
11350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prevAll", function() { return prevAll; });
11351/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prop", function() { return prop; });
11352/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return remove; });
11353/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAttr", function() { return removeAttr; });
11354/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeClass", function() { return removeClass; });
11355/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeData", function() { return removeData; });
11356/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resize", function() { return resize; });
11357/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scroll", function() { return scroll; });
11358/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollLeft", function() { return scrollLeft; });
11359/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTo", function() { return scrollTo; });
11360/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTop", function() { return scrollTop; });
11361/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "show", function() { return show; });
11362/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "siblings", function() { return siblings; });
11363/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stop", function() { return stop; });
11364/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styles", function() { return styles; });
11365/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "submit", function() { return submit; });
11366/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "text", function() { return text; });
11367/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toggleClass", function() { return toggleClass; });
11368/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchend", function() { return touchend; });
11369/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchmove", function() { return touchmove; });
11370/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchstart", function() { return touchstart; });
11371/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transform", function() { return transform; });
11372/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return transition; });
11373/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionEnd", function() { return transitionEnd; });
11374/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trigger", function() { return trigger; });
11375/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "val", function() { return val; });
11376/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "value", function() { return value; });
11377/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "width", function() { return width; });
11378/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
11379/**
11380 * Dom7 4.0.4
11381 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API
11382 * https://framework7.io/docs/dom7.html
11383 *
11384 * Copyright 2022, Vladimir Kharlampidi
11385 *
11386 * Licensed under MIT
11387 *
11388 * Released on: January 11, 2022
11389 */
11390
11391
11392/* eslint-disable no-proto */
11393function makeReactive(obj) {
11394  const proto = obj.__proto__;
11395  Object.defineProperty(obj, '__proto__', {
11396    get() {
11397      return proto;
11398    },
11399
11400    set(value) {
11401      proto.__proto__ = value;
11402    }
11403
11404  });
11405}
11406
11407class Dom7 extends Array {
11408  constructor(items) {
11409    if (typeof items === 'number') {
11410      super(items);
11411    } else {
11412      super(...(items || []));
11413      makeReactive(this);
11414    }
11415  }
11416
11417}
11418
11419function arrayFlat(arr = []) {
11420  const res = [];
11421  arr.forEach(el => {
11422    if (Array.isArray(el)) {
11423      res.push(...arrayFlat(el));
11424    } else {
11425      res.push(el);
11426    }
11427  });
11428  return res;
11429}
11430function arrayFilter(arr, callback) {
11431  return Array.prototype.filter.call(arr, callback);
11432}
11433function arrayUnique(arr) {
11434  const uniqueArray = [];
11435
11436  for (let i = 0; i < arr.length; i += 1) {
11437    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
11438  }
11439
11440  return uniqueArray;
11441}
11442function toCamelCase(string) {
11443  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());
11444}
11445
11446// eslint-disable-next-line
11447
11448function qsa(selector, context) {
11449  if (typeof selector !== 'string') {
11450    return [selector];
11451  }
11452
11453  const a = [];
11454  const res = context.querySelectorAll(selector);
11455
11456  for (let i = 0; i < res.length; i += 1) {
11457    a.push(res[i]);
11458  }
11459
11460  return a;
11461}
11462
11463function $(selector, context) {
11464  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
11465  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
11466  let arr = [];
11467
11468  if (!context && selector instanceof Dom7) {
11469    return selector;
11470  }
11471
11472  if (!selector) {
11473    return new Dom7(arr);
11474  }
11475
11476  if (typeof selector === 'string') {
11477    const html = selector.trim();
11478
11479    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
11480      let toCreate = 'div';
11481      if (html.indexOf('<li') === 0) toCreate = 'ul';
11482      if (html.indexOf('<tr') === 0) toCreate = 'tbody';
11483      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
11484      if (html.indexOf('<tbody') === 0) toCreate = 'table';
11485      if (html.indexOf('<option') === 0) toCreate = 'select';
11486      const tempParent = document.createElement(toCreate);
11487      tempParent.innerHTML = html;
11488
11489      for (let i = 0; i < tempParent.childNodes.length; i += 1) {
11490        arr.push(tempParent.childNodes[i]);
11491      }
11492    } else {
11493      arr = qsa(selector.trim(), context || document);
11494    } // arr = qsa(selector, document);
11495
11496  } else if (selector.nodeType || selector === window || selector === document) {
11497    arr.push(selector);
11498  } else if (Array.isArray(selector)) {
11499    if (selector instanceof Dom7) return selector;
11500    arr = selector;
11501  }
11502
11503  return new Dom7(arrayUnique(arr));
11504}
11505
11506$.fn = Dom7.prototype;
11507
11508// eslint-disable-next-line
11509
11510function addClass(...classes) {
11511  const classNames = arrayFlat(classes.map(c => c.split(' ')));
11512  this.forEach(el => {
11513    el.classList.add(...classNames);
11514  });
11515  return this;
11516}
11517
11518function removeClass(...classes) {
11519  const classNames = arrayFlat(classes.map(c => c.split(' ')));
11520  this.forEach(el => {
11521    el.classList.remove(...classNames);
11522  });
11523  return this;
11524}
11525
11526function toggleClass(...classes) {
11527  const classNames = arrayFlat(classes.map(c => c.split(' ')));
11528  this.forEach(el => {
11529    classNames.forEach(className => {
11530      el.classList.toggle(className);
11531    });
11532  });
11533}
11534
11535function hasClass(...classes) {
11536  const classNames = arrayFlat(classes.map(c => c.split(' ')));
11537  return arrayFilter(this, el => {
11538    return classNames.filter(className => el.classList.contains(className)).length > 0;
11539  }).length > 0;
11540}
11541
11542function attr(attrs, value) {
11543  if (arguments.length === 1 && typeof attrs === 'string') {
11544    // Get attr
11545    if (this[0]) return this[0].getAttribute(attrs);
11546    return undefined;
11547  } // Set attrs
11548
11549
11550  for (let i = 0; i < this.length; i += 1) {
11551    if (arguments.length === 2) {
11552      // String
11553      this[i].setAttribute(attrs, value);
11554    } else {
11555      // Object
11556      for (const attrName in attrs) {
11557        this[i][attrName] = attrs[attrName];
11558        this[i].setAttribute(attrName, attrs[attrName]);
11559      }
11560    }
11561  }
11562
11563  return this;
11564}
11565
11566function removeAttr(attr) {
11567  for (let i = 0; i < this.length; i += 1) {
11568    this[i].removeAttribute(attr);
11569  }
11570
11571  return this;
11572}
11573
11574function prop(props, value) {
11575  if (arguments.length === 1 && typeof props === 'string') {
11576    // Get prop
11577    if (this[0]) return this[0][props];
11578  } else {
11579    // Set props
11580    for (let i = 0; i < this.length; i += 1) {
11581      if (arguments.length === 2) {
11582        // String
11583        this[i][props] = value;
11584      } else {
11585        // Object
11586        for (const propName in props) {
11587          this[i][propName] = props[propName];
11588        }
11589      }
11590    }
11591
11592    return this;
11593  }
11594
11595  return this;
11596}
11597
11598function data(key, value) {
11599  let el;
11600
11601  if (typeof value === 'undefined') {
11602    el = this[0];
11603    if (!el) return undefined; // Get value
11604
11605    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
11606      return el.dom7ElementDataStorage[key];
11607    }
11608
11609    const dataKey = el.getAttribute(`data-${key}`);
11610
11611    if (dataKey) {
11612      return dataKey;
11613    }
11614
11615    return undefined;
11616  } // Set value
11617
11618
11619  for (let i = 0; i < this.length; i += 1) {
11620    el = this[i];
11621    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
11622    el.dom7ElementDataStorage[key] = value;
11623  }
11624
11625  return this;
11626}
11627
11628function removeData(key) {
11629  for (let i = 0; i < this.length; i += 1) {
11630    const el = this[i];
11631
11632    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
11633      el.dom7ElementDataStorage[key] = null;
11634      delete el.dom7ElementDataStorage[key];
11635    }
11636  }
11637}
11638
11639function dataset() {
11640  const el = this[0];
11641  if (!el) return undefined;
11642  const dataset = {}; // eslint-disable-line
11643
11644  if (el.dataset) {
11645    for (const dataKey in el.dataset) {
11646      dataset[dataKey] = el.dataset[dataKey];
11647    }
11648  } else {
11649    for (let i = 0; i < el.attributes.length; i += 1) {
11650      const attr = el.attributes[i];
11651
11652      if (attr.name.indexOf('data-') >= 0) {
11653        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;
11654      }
11655    }
11656  }
11657
11658  for (const key in dataset) {
11659    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;
11660  }
11661
11662  return dataset;
11663}
11664
11665function val(value) {
11666  if (typeof value === 'undefined') {
11667    // get value
11668    const el = this[0];
11669    if (!el) return undefined;
11670
11671    if (el.multiple && el.nodeName.toLowerCase() === 'select') {
11672      const values = [];
11673
11674      for (let i = 0; i < el.selectedOptions.length; i += 1) {
11675        values.push(el.selectedOptions[i].value);
11676      }
11677
11678      return values;
11679    }
11680
11681    return el.value;
11682  } // set value
11683
11684
11685  for (let i = 0; i < this.length; i += 1) {
11686    const el = this[i];
11687
11688    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {
11689      for (let j = 0; j < el.options.length; j += 1) {
11690        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;
11691      }
11692    } else {
11693      el.value = value;
11694    }
11695  }
11696
11697  return this;
11698}
11699
11700function value(value) {
11701  return this.val(value);
11702}
11703
11704function transform(transform) {
11705  for (let i = 0; i < this.length; i += 1) {
11706    this[i].style.transform = transform;
11707  }
11708
11709  return this;
11710}
11711
11712function transition(duration) {
11713  for (let i = 0; i < this.length; i += 1) {
11714    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;
11715  }
11716
11717  return this;
11718}
11719
11720function on(...args) {
11721  let [eventType, targetSelector, listener, capture] = args;
11722
11723  if (typeof args[1] === 'function') {
11724    [eventType, listener, capture] = args;
11725    targetSelector = undefined;
11726  }
11727
11728  if (!capture) capture = false;
11729
11730  function handleLiveEvent(e) {
11731    const target = e.target;
11732    if (!target) return;
11733    const eventData = e.target.dom7EventData || [];
11734
11735    if (eventData.indexOf(e) < 0) {
11736      eventData.unshift(e);
11737    }
11738
11739    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {
11740      const parents = $(target).parents(); // eslint-disable-line
11741
11742      for (let k = 0; k < parents.length; k += 1) {
11743        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);
11744      }
11745    }
11746  }
11747
11748  function handleEvent(e) {
11749    const eventData = e && e.target ? e.target.dom7EventData || [] : [];
11750
11751    if (eventData.indexOf(e) < 0) {
11752      eventData.unshift(e);
11753    }
11754
11755    listener.apply(this, eventData);
11756  }
11757
11758  const events = eventType.split(' ');
11759  let j;
11760
11761  for (let i = 0; i < this.length; i += 1) {
11762    const el = this[i];
11763
11764    if (!targetSelector) {
11765      for (j = 0; j < events.length; j += 1) {
11766        const event = events[j];
11767        if (!el.dom7Listeners) el.dom7Listeners = {};
11768        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
11769        el.dom7Listeners[event].push({
11770          listener,
11771          proxyListener: handleEvent
11772        });
11773        el.addEventListener(event, handleEvent, capture);
11774      }
11775    } else {
11776      // Live events
11777      for (j = 0; j < events.length; j += 1) {
11778        const event = events[j];
11779        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
11780        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];
11781        el.dom7LiveListeners[event].push({
11782          listener,
11783          proxyListener: handleLiveEvent
11784        });
11785        el.addEventListener(event, handleLiveEvent, capture);
11786      }
11787    }
11788  }
11789
11790  return this;
11791}
11792
11793function off(...args) {
11794  let [eventType, targetSelector, listener, capture] = args;
11795
11796  if (typeof args[1] === 'function') {
11797    [eventType, listener, capture] = args;
11798    targetSelector = undefined;
11799  }
11800
11801  if (!capture) capture = false;
11802  const events = eventType.split(' ');
11803
11804  for (let i = 0; i < events.length; i += 1) {
11805    const event = events[i];
11806
11807    for (let j = 0; j < this.length; j += 1) {
11808      const el = this[j];
11809      let handlers;
11810
11811      if (!targetSelector && el.dom7Listeners) {
11812        handlers = el.dom7Listeners[event];
11813      } else if (targetSelector && el.dom7LiveListeners) {
11814        handlers = el.dom7LiveListeners[event];
11815      }
11816
11817      if (handlers && handlers.length) {
11818        for (let k = handlers.length - 1; k >= 0; k -= 1) {
11819          const handler = handlers[k];
11820
11821          if (listener && handler.listener === listener) {
11822            el.removeEventListener(event, handler.proxyListener, capture);
11823            handlers.splice(k, 1);
11824          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
11825            el.removeEventListener(event, handler.proxyListener, capture);
11826            handlers.splice(k, 1);
11827          } else if (!listener) {
11828            el.removeEventListener(event, handler.proxyListener, capture);
11829            handlers.splice(k, 1);
11830          }
11831        }
11832      }
11833    }
11834  }
11835
11836  return this;
11837}
11838
11839function once(...args) {
11840  const dom = this;
11841  let [eventName, targetSelector, listener, capture] = args;
11842
11843  if (typeof args[1] === 'function') {
11844    [eventName, listener, capture] = args;
11845    targetSelector = undefined;
11846  }
11847
11848  function onceHandler(...eventArgs) {
11849    listener.apply(this, eventArgs);
11850    dom.off(eventName, targetSelector, onceHandler, capture);
11851
11852    if (onceHandler.dom7proxy) {
11853      delete onceHandler.dom7proxy;
11854    }
11855  }
11856
11857  onceHandler.dom7proxy = listener;
11858  return dom.on(eventName, targetSelector, onceHandler, capture);
11859}
11860
11861function trigger(...args) {
11862  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
11863  const events = args[0].split(' ');
11864  const eventData = args[1];
11865
11866  for (let i = 0; i < events.length; i += 1) {
11867    const event = events[i];
11868
11869    for (let j = 0; j < this.length; j += 1) {
11870      const el = this[j];
11871
11872      if (window.CustomEvent) {
11873        const evt = new window.CustomEvent(event, {
11874          detail: eventData,
11875          bubbles: true,
11876          cancelable: true
11877        });
11878        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);
11879        el.dispatchEvent(evt);
11880        el.dom7EventData = [];
11881        delete el.dom7EventData;
11882      }
11883    }
11884  }
11885
11886  return this;
11887}
11888
11889function transitionEnd(callback) {
11890  const dom = this;
11891
11892  function fireCallBack(e) {
11893    if (e.target !== this) return;
11894    callback.call(this, e);
11895    dom.off('transitionend', fireCallBack);
11896  }
11897
11898  if (callback) {
11899    dom.on('transitionend', fireCallBack);
11900  }
11901
11902  return this;
11903}
11904
11905function animationEnd(callback) {
11906  const dom = this;
11907
11908  function fireCallBack(e) {
11909    if (e.target !== this) return;
11910    callback.call(this, e);
11911    dom.off('animationend', fireCallBack);
11912  }
11913
11914  if (callback) {
11915    dom.on('animationend', fireCallBack);
11916  }
11917
11918  return this;
11919}
11920
11921function width() {
11922  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
11923
11924  if (this[0] === window) {
11925    return window.innerWidth;
11926  }
11927
11928  if (this.length > 0) {
11929    return parseFloat(this.css('width'));
11930  }
11931
11932  return null;
11933}
11934
11935function outerWidth(includeMargins) {
11936  if (this.length > 0) {
11937    if (includeMargins) {
11938      const styles = this.styles();
11939      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
11940    }
11941
11942    return this[0].offsetWidth;
11943  }
11944
11945  return null;
11946}
11947
11948function height() {
11949  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
11950
11951  if (this[0] === window) {
11952    return window.innerHeight;
11953  }
11954
11955  if (this.length > 0) {
11956    return parseFloat(this.css('height'));
11957  }
11958
11959  return null;
11960}
11961
11962function outerHeight(includeMargins) {
11963  if (this.length > 0) {
11964    if (includeMargins) {
11965      const styles = this.styles();
11966      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
11967    }
11968
11969    return this[0].offsetHeight;
11970  }
11971
11972  return null;
11973}
11974
11975function offset() {
11976  if (this.length > 0) {
11977    const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
11978    const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
11979    const el = this[0];
11980    const box = el.getBoundingClientRect();
11981    const body = document.body;
11982    const clientTop = el.clientTop || body.clientTop || 0;
11983    const clientLeft = el.clientLeft || body.clientLeft || 0;
11984    const scrollTop = el === window ? window.scrollY : el.scrollTop;
11985    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
11986    return {
11987      top: box.top + scrollTop - clientTop,
11988      left: box.left + scrollLeft - clientLeft
11989    };
11990  }
11991
11992  return null;
11993}
11994
11995function hide() {
11996  for (let i = 0; i < this.length; i += 1) {
11997    this[i].style.display = 'none';
11998  }
11999
12000  return this;
12001}
12002
12003function show() {
12004  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
12005
12006  for (let i = 0; i < this.length; i += 1) {
12007    const el = this[i];
12008
12009    if (el.style.display === 'none') {
12010      el.style.display = '';
12011    }
12012
12013    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {
12014      // Still not visible
12015      el.style.display = 'block';
12016    }
12017  }
12018
12019  return this;
12020}
12021
12022function styles() {
12023  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
12024  if (this[0]) return window.getComputedStyle(this[0], null);
12025  return {};
12026}
12027
12028function css(props, value) {
12029  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
12030  let i;
12031
12032  if (arguments.length === 1) {
12033    if (typeof props === 'string') {
12034      // .css('width')
12035      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
12036    } else {
12037      // .css({ width: '100px' })
12038      for (i = 0; i < this.length; i += 1) {
12039        for (const prop in props) {
12040          this[i].style[prop] = props[prop];
12041        }
12042      }
12043
12044      return this;
12045    }
12046  }
12047
12048  if (arguments.length === 2 && typeof props === 'string') {
12049    // .css('width', '100px')
12050    for (i = 0; i < this.length; i += 1) {
12051      this[i].style[props] = value;
12052    }
12053
12054    return this;
12055  }
12056
12057  return this;
12058}
12059
12060function each(callback) {
12061  if (!callback) return this;
12062  this.forEach((el, index) => {
12063    callback.apply(el, [el, index]);
12064  });
12065  return this;
12066}
12067
12068function filter(callback) {
12069  const result = arrayFilter(this, callback);
12070  return $(result);
12071}
12072
12073function html(html) {
12074  if (typeof html === 'undefined') {
12075    return this[0] ? this[0].innerHTML : null;
12076  }
12077
12078  for (let i = 0; i < this.length; i += 1) {
12079    this[i].innerHTML = html;
12080  }
12081
12082  return this;
12083}
12084
12085function text(text) {
12086  if (typeof text === 'undefined') {
12087    return this[0] ? this[0].textContent.trim() : null;
12088  }
12089
12090  for (let i = 0; i < this.length; i += 1) {
12091    this[i].textContent = text;
12092  }
12093
12094  return this;
12095}
12096
12097function is(selector) {
12098  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
12099  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
12100  const el = this[0];
12101  let compareWith;
12102  let i;
12103  if (!el || typeof selector === 'undefined') return false;
12104
12105  if (typeof selector === 'string') {
12106    if (el.matches) return el.matches(selector);
12107    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
12108    if (el.msMatchesSelector) return el.msMatchesSelector(selector);
12109    compareWith = $(selector);
12110
12111    for (i = 0; i < compareWith.length; i += 1) {
12112      if (compareWith[i] === el) return true;
12113    }
12114
12115    return false;
12116  }
12117
12118  if (selector === document) {
12119    return el === document;
12120  }
12121
12122  if (selector === window) {
12123    return el === window;
12124  }
12125
12126  if (selector.nodeType || selector instanceof Dom7) {
12127    compareWith = selector.nodeType ? [selector] : selector;
12128
12129    for (i = 0; i < compareWith.length; i += 1) {
12130      if (compareWith[i] === el) return true;
12131    }
12132
12133    return false;
12134  }
12135
12136  return false;
12137}
12138
12139function index() {
12140  let child = this[0];
12141  let i;
12142
12143  if (child) {
12144    i = 0; // eslint-disable-next-line
12145
12146    while ((child = child.previousSibling) !== null) {
12147      if (child.nodeType === 1) i += 1;
12148    }
12149
12150    return i;
12151  }
12152
12153  return undefined;
12154}
12155
12156function eq(index) {
12157  if (typeof index === 'undefined') return this;
12158  const length = this.length;
12159
12160  if (index > length - 1) {
12161    return $([]);
12162  }
12163
12164  if (index < 0) {
12165    const returnIndex = length + index;
12166    if (returnIndex < 0) return $([]);
12167    return $([this[returnIndex]]);
12168  }
12169
12170  return $([this[index]]);
12171}
12172
12173function append(...els) {
12174  let newChild;
12175  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
12176
12177  for (let k = 0; k < els.length; k += 1) {
12178    newChild = els[k];
12179
12180    for (let i = 0; i < this.length; i += 1) {
12181      if (typeof newChild === 'string') {
12182        const tempDiv = document.createElement('div');
12183        tempDiv.innerHTML = newChild;
12184
12185        while (tempDiv.firstChild) {
12186          this[i].appendChild(tempDiv.firstChild);
12187        }
12188      } else if (newChild instanceof Dom7) {
12189        for (let j = 0; j < newChild.length; j += 1) {
12190          this[i].appendChild(newChild[j]);
12191        }
12192      } else {
12193        this[i].appendChild(newChild);
12194      }
12195    }
12196  }
12197
12198  return this;
12199}
12200
12201function appendTo(parent) {
12202  $(parent).append(this);
12203  return this;
12204}
12205
12206function prepend(newChild) {
12207  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
12208  let i;
12209  let j;
12210
12211  for (i = 0; i < this.length; i += 1) {
12212    if (typeof newChild === 'string') {
12213      const tempDiv = document.createElement('div');
12214      tempDiv.innerHTML = newChild;
12215
12216      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
12217        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
12218      }
12219    } else if (newChild instanceof Dom7) {
12220      for (j = 0; j < newChild.length; j += 1) {
12221        this[i].insertBefore(newChild[j], this[i].childNodes[0]);
12222      }
12223    } else {
12224      this[i].insertBefore(newChild, this[i].childNodes[0]);
12225    }
12226  }
12227
12228  return this;
12229}
12230
12231function prependTo(parent) {
12232  $(parent).prepend(this);
12233  return this;
12234}
12235
12236function insertBefore(selector) {
12237  const before = $(selector);
12238
12239  for (let i = 0; i < this.length; i += 1) {
12240    if (before.length === 1) {
12241      before[0].parentNode.insertBefore(this[i], before[0]);
12242    } else if (before.length > 1) {
12243      for (let j = 0; j < before.length; j += 1) {
12244        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
12245      }
12246    }
12247  }
12248}
12249
12250function insertAfter(selector) {
12251  const after = $(selector);
12252
12253  for (let i = 0; i < this.length; i += 1) {
12254    if (after.length === 1) {
12255      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
12256    } else if (after.length > 1) {
12257      for (let j = 0; j < after.length; j += 1) {
12258        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
12259      }
12260    }
12261  }
12262}
12263
12264function next(selector) {
12265  if (this.length > 0) {
12266    if (selector) {
12267      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {
12268        return $([this[0].nextElementSibling]);
12269      }
12270
12271      return $([]);
12272    }
12273
12274    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);
12275    return $([]);
12276  }
12277
12278  return $([]);
12279}
12280
12281function nextAll(selector) {
12282  const nextEls = [];
12283  let el = this[0];
12284  if (!el) return $([]);
12285
12286  while (el.nextElementSibling) {
12287    const next = el.nextElementSibling; // eslint-disable-line
12288
12289    if (selector) {
12290      if ($(next).is(selector)) nextEls.push(next);
12291    } else nextEls.push(next);
12292
12293    el = next;
12294  }
12295
12296  return $(nextEls);
12297}
12298
12299function prev(selector) {
12300  if (this.length > 0) {
12301    const el = this[0];
12302
12303    if (selector) {
12304      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {
12305        return $([el.previousElementSibling]);
12306      }
12307
12308      return $([]);
12309    }
12310
12311    if (el.previousElementSibling) return $([el.previousElementSibling]);
12312    return $([]);
12313  }
12314
12315  return $([]);
12316}
12317
12318function prevAll(selector) {
12319  const prevEls = [];
12320  let el = this[0];
12321  if (!el) return $([]);
12322
12323  while (el.previousElementSibling) {
12324    const prev = el.previousElementSibling; // eslint-disable-line
12325
12326    if (selector) {
12327      if ($(prev).is(selector)) prevEls.push(prev);
12328    } else prevEls.push(prev);
12329
12330    el = prev;
12331  }
12332
12333  return $(prevEls);
12334}
12335
12336function siblings(selector) {
12337  return this.nextAll(selector).add(this.prevAll(selector));
12338}
12339
12340function parent(selector) {
12341  const parents = []; // eslint-disable-line
12342
12343  for (let i = 0; i < this.length; i += 1) {
12344    if (this[i].parentNode !== null) {
12345      if (selector) {
12346        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
12347      } else {
12348        parents.push(this[i].parentNode);
12349      }
12350    }
12351  }
12352
12353  return $(parents);
12354}
12355
12356function parents(selector) {
12357  const parents = []; // eslint-disable-line
12358
12359  for (let i = 0; i < this.length; i += 1) {
12360    let parent = this[i].parentNode; // eslint-disable-line
12361
12362    while (parent) {
12363      if (selector) {
12364        if ($(parent).is(selector)) parents.push(parent);
12365      } else {
12366        parents.push(parent);
12367      }
12368
12369      parent = parent.parentNode;
12370    }
12371  }
12372
12373  return $(parents);
12374}
12375
12376function closest(selector) {
12377  let closest = this; // eslint-disable-line
12378
12379  if (typeof selector === 'undefined') {
12380    return $([]);
12381  }
12382
12383  if (!closest.is(selector)) {
12384    closest = closest.parents(selector).eq(0);
12385  }
12386
12387  return closest;
12388}
12389
12390function find(selector) {
12391  const foundElements = [];
12392
12393  for (let i = 0; i < this.length; i += 1) {
12394    const found = this[i].querySelectorAll(selector);
12395
12396    for (let j = 0; j < found.length; j += 1) {
12397      foundElements.push(found[j]);
12398    }
12399  }
12400
12401  return $(foundElements);
12402}
12403
12404function children(selector) {
12405  const children = []; // eslint-disable-line
12406
12407  for (let i = 0; i < this.length; i += 1) {
12408    const childNodes = this[i].children;
12409
12410    for (let j = 0; j < childNodes.length; j += 1) {
12411      if (!selector || $(childNodes[j]).is(selector)) {
12412        children.push(childNodes[j]);
12413      }
12414    }
12415  }
12416
12417  return $(children);
12418}
12419
12420function remove() {
12421  for (let i = 0; i < this.length; i += 1) {
12422    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
12423  }
12424
12425  return this;
12426}
12427
12428function detach() {
12429  return this.remove();
12430}
12431
12432function add(...els) {
12433  const dom = this;
12434  let i;
12435  let j;
12436
12437  for (i = 0; i < els.length; i += 1) {
12438    const toAdd = $(els[i]);
12439
12440    for (j = 0; j < toAdd.length; j += 1) {
12441      dom.push(toAdd[j]);
12442    }
12443  }
12444
12445  return dom;
12446}
12447
12448function empty() {
12449  for (let i = 0; i < this.length; i += 1) {
12450    const el = this[i];
12451
12452    if (el.nodeType === 1) {
12453      for (let j = 0; j < el.childNodes.length; j += 1) {
12454        if (el.childNodes[j].parentNode) {
12455          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
12456        }
12457      }
12458
12459      el.textContent = '';
12460    }
12461  }
12462
12463  return this;
12464}
12465
12466// eslint-disable-next-line
12467
12468function scrollTo(...args) {
12469  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
12470  let [left, top, duration, easing, callback] = args;
12471
12472  if (args.length === 4 && typeof easing === 'function') {
12473    callback = easing;
12474    [left, top, duration, callback, easing] = args;
12475  }
12476
12477  if (typeof easing === 'undefined') easing = 'swing';
12478  return this.each(function animate() {
12479    const el = this;
12480    let currentTop;
12481    let currentLeft;
12482    let maxTop;
12483    let maxLeft;
12484    let newTop;
12485    let newLeft;
12486    let scrollTop; // eslint-disable-line
12487
12488    let scrollLeft; // eslint-disable-line
12489
12490    let animateTop = top > 0 || top === 0;
12491    let animateLeft = left > 0 || left === 0;
12492
12493    if (typeof easing === 'undefined') {
12494      easing = 'swing';
12495    }
12496
12497    if (animateTop) {
12498      currentTop = el.scrollTop;
12499
12500      if (!duration) {
12501        el.scrollTop = top;
12502      }
12503    }
12504
12505    if (animateLeft) {
12506      currentLeft = el.scrollLeft;
12507
12508      if (!duration) {
12509        el.scrollLeft = left;
12510      }
12511    }
12512
12513    if (!duration) return;
12514
12515    if (animateTop) {
12516      maxTop = el.scrollHeight - el.offsetHeight;
12517      newTop = Math.max(Math.min(top, maxTop), 0);
12518    }
12519
12520    if (animateLeft) {
12521      maxLeft = el.scrollWidth - el.offsetWidth;
12522      newLeft = Math.max(Math.min(left, maxLeft), 0);
12523    }
12524
12525    let startTime = null;
12526    if (animateTop && newTop === currentTop) animateTop = false;
12527    if (animateLeft && newLeft === currentLeft) animateLeft = false;
12528
12529    function render(time = new Date().getTime()) {
12530      if (startTime === null) {
12531        startTime = time;
12532      }
12533
12534      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
12535      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;
12536      let done;
12537      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);
12538      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);
12539
12540      if (animateTop && newTop > currentTop && scrollTop >= newTop) {
12541        el.scrollTop = newTop;
12542        done = true;
12543      }
12544
12545      if (animateTop && newTop < currentTop && scrollTop <= newTop) {
12546        el.scrollTop = newTop;
12547        done = true;
12548      }
12549
12550      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
12551        el.scrollLeft = newLeft;
12552        done = true;
12553      }
12554
12555      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
12556        el.scrollLeft = newLeft;
12557        done = true;
12558      }
12559
12560      if (done) {
12561        if (callback) callback();
12562        return;
12563      }
12564
12565      if (animateTop) el.scrollTop = scrollTop;
12566      if (animateLeft) el.scrollLeft = scrollLeft;
12567      window.requestAnimationFrame(render);
12568    }
12569
12570    window.requestAnimationFrame(render);
12571  });
12572} // scrollTop(top, duration, easing, callback) {
12573
12574
12575function scrollTop(...args) {
12576  let [top, duration, easing, callback] = args;
12577
12578  if (args.length === 3 && typeof easing === 'function') {
12579    [top, duration, callback, easing] = args;
12580  }
12581
12582  const dom = this;
12583
12584  if (typeof top === 'undefined') {
12585    if (dom.length > 0) return dom[0].scrollTop;
12586    return null;
12587  }
12588
12589  return dom.scrollTo(undefined, top, duration, easing, callback);
12590}
12591
12592function scrollLeft(...args) {
12593  let [left, duration, easing, callback] = args;
12594
12595  if (args.length === 3 && typeof easing === 'function') {
12596    [left, duration, callback, easing] = args;
12597  }
12598
12599  const dom = this;
12600
12601  if (typeof left === 'undefined') {
12602    if (dom.length > 0) return dom[0].scrollLeft;
12603    return null;
12604  }
12605
12606  return dom.scrollTo(left, undefined, duration, easing, callback);
12607}
12608
12609// eslint-disable-next-line
12610
12611function animate(initialProps, initialParams) {
12612  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
12613  const els = this;
12614  const a = {
12615    props: Object.assign({}, initialProps),
12616    params: Object.assign({
12617      duration: 300,
12618      easing: 'swing' // or 'linear'
12619
12620      /* Callbacks
12621      begin(elements)
12622      complete(elements)
12623      progress(elements, complete, remaining, start, tweenValue)
12624      */
12625
12626    }, initialParams),
12627    elements: els,
12628    animating: false,
12629    que: [],
12630
12631    easingProgress(easing, progress) {
12632      if (easing === 'swing') {
12633        return 0.5 - Math.cos(progress * Math.PI) / 2;
12634      }
12635
12636      if (typeof easing === 'function') {
12637        return easing(progress);
12638      }
12639
12640      return progress;
12641    },
12642
12643    stop() {
12644      if (a.frameId) {
12645        window.cancelAnimationFrame(a.frameId);
12646      }
12647
12648      a.animating = false;
12649      a.elements.each(el => {
12650        const element = el;
12651        delete element.dom7AnimateInstance;
12652      });
12653      a.que = [];
12654    },
12655
12656    done(complete) {
12657      a.animating = false;
12658      a.elements.each(el => {
12659        const element = el;
12660        delete element.dom7AnimateInstance;
12661      });
12662      if (complete) complete(els);
12663
12664      if (a.que.length > 0) {
12665        const que = a.que.shift();
12666        a.animate(que[0], que[1]);
12667      }
12668    },
12669
12670    animate(props, params) {
12671      if (a.animating) {
12672        a.que.push([props, params]);
12673        return a;
12674      }
12675
12676      const elements = []; // Define & Cache Initials & Units
12677
12678      a.elements.each((el, index) => {
12679        let initialFullValue;
12680        let initialValue;
12681        let unit;
12682        let finalValue;
12683        let finalFullValue;
12684        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
12685        elements[index] = {
12686          container: el
12687        };
12688        Object.keys(props).forEach(prop => {
12689          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
12690          initialValue = parseFloat(initialFullValue);
12691          unit = initialFullValue.replace(initialValue, '');
12692          finalValue = parseFloat(props[prop]);
12693          finalFullValue = props[prop] + unit;
12694          elements[index][prop] = {
12695            initialFullValue,
12696            initialValue,
12697            unit,
12698            finalValue,
12699            finalFullValue,
12700            currentValue: initialValue
12701          };
12702        });
12703      });
12704      let startTime = null;
12705      let time;
12706      let elementsDone = 0;
12707      let propsDone = 0;
12708      let done;
12709      let began = false;
12710      a.animating = true;
12711
12712      function render() {
12713        time = new Date().getTime();
12714        let progress;
12715        let easeProgress; // let el;
12716
12717        if (!began) {
12718          began = true;
12719          if (params.begin) params.begin(els);
12720        }
12721
12722        if (startTime === null) {
12723          startTime = time;
12724        }
12725
12726        if (params.progress) {
12727          // eslint-disable-next-line
12728          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);
12729        }
12730
12731        elements.forEach(element => {
12732          const el = element;
12733          if (done || el.done) return;
12734          Object.keys(props).forEach(prop => {
12735            if (done || el.done) return;
12736            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
12737            easeProgress = a.easingProgress(params.easing, progress);
12738            const {
12739              initialValue,
12740              finalValue,
12741              unit
12742            } = el[prop];
12743            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);
12744            const currentValue = el[prop].currentValue;
12745
12746            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {
12747              el.container.style[prop] = finalValue + unit;
12748              propsDone += 1;
12749
12750              if (propsDone === Object.keys(props).length) {
12751                el.done = true;
12752                elementsDone += 1;
12753              }
12754
12755              if (elementsDone === elements.length) {
12756                done = true;
12757              }
12758            }
12759
12760            if (done) {
12761              a.done(params.complete);
12762              return;
12763            }
12764
12765            el.container.style[prop] = currentValue + unit;
12766          });
12767        });
12768        if (done) return; // Then call
12769
12770        a.frameId = window.requestAnimationFrame(render);
12771      }
12772
12773      a.frameId = window.requestAnimationFrame(render);
12774      return a;
12775    }
12776
12777  };
12778
12779  if (a.elements.length === 0) {
12780    return els;
12781  }
12782
12783  let animateInstance;
12784
12785  for (let i = 0; i < a.elements.length; i += 1) {
12786    if (a.elements[i].dom7AnimateInstance) {
12787      animateInstance = a.elements[i].dom7AnimateInstance;
12788    } else a.elements[i].dom7AnimateInstance = a;
12789  }
12790
12791  if (!animateInstance) {
12792    animateInstance = a;
12793  }
12794
12795  if (initialProps === 'stop') {
12796    animateInstance.stop();
12797  } else {
12798    animateInstance.animate(a.props, a.params);
12799  }
12800
12801  return els;
12802}
12803
12804function stop() {
12805  const els = this;
12806
12807  for (let i = 0; i < els.length; i += 1) {
12808    if (els[i].dom7AnimateInstance) {
12809      els[i].dom7AnimateInstance.stop();
12810    }
12811  }
12812}
12813
12814const noTrigger = 'resize scroll'.split(' ');
12815
12816function shortcut(name) {
12817  function eventHandler(...args) {
12818    if (typeof args[0] === 'undefined') {
12819      for (let i = 0; i < this.length; i += 1) {
12820        if (noTrigger.indexOf(name) < 0) {
12821          if (name in this[i]) this[i][name]();else {
12822            $(this[i]).trigger(name);
12823          }
12824        }
12825      }
12826
12827      return this;
12828    }
12829
12830    return this.on(name, ...args);
12831  }
12832
12833  return eventHandler;
12834}
12835
12836const click = shortcut('click');
12837const blur = shortcut('blur');
12838const focus = shortcut('focus');
12839const focusin = shortcut('focusin');
12840const focusout = shortcut('focusout');
12841const keyup = shortcut('keyup');
12842const keydown = shortcut('keydown');
12843const keypress = shortcut('keypress');
12844const submit = shortcut('submit');
12845const change = shortcut('change');
12846const mousedown = shortcut('mousedown');
12847const mousemove = shortcut('mousemove');
12848const mouseup = shortcut('mouseup');
12849const mouseenter = shortcut('mouseenter');
12850const mouseleave = shortcut('mouseleave');
12851const mouseout = shortcut('mouseout');
12852const mouseover = shortcut('mouseover');
12853const touchstart = shortcut('touchstart');
12854const touchend = shortcut('touchend');
12855const touchmove = shortcut('touchmove');
12856const resize = shortcut('resize');
12857const scroll = shortcut('scroll');
12858
12859/* harmony default export */ __webpack_exports__["default"] = ($);
12860
12861
12862
12863/***/ }),
12864
vendor: 388 bytes, lines 12865-12877
12865/***/ "./node_modules/form-data/lib/browser.js":
12866/*!***********************************************!*\
12867  !*** ./node_modules/form-data/lib/browser.js ***!
12868  \***********************************************/
12869/*! no static exports found */
12870/***/ (function(module, exports) {
12871
12872/* eslint-env browser */
12873module.exports = typeof self == 'object' ? self.FormData : window.FormData;
12874
12875
12876/***/ }),
12877
vendor: 2,409 bytes, lines 12878-12973
12878/***/ "./node_modules/ieee754/index.js":
12879/*!***************************************!*\
12880  !*** ./node_modules/ieee754/index.js ***!
12881  \***************************************/
12882/*! no static exports found */
12883/***/ (function(module, exports) {
12884
12885/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
12886exports.read = function (buffer, offset, isLE, mLen, nBytes) {
12887  var e, m
12888  var eLen = (nBytes * 8) - mLen - 1
12889  var eMax = (1 << eLen) - 1
12890  var eBias = eMax >> 1
12891  var nBits = -7
12892  var i = isLE ? (nBytes - 1) : 0
12893  var d = isLE ? -1 : 1
12894  var s = buffer[offset + i]
12895
12896  i += d
12897
12898  e = s & ((1 << (-nBits)) - 1)
12899  s >>= (-nBits)
12900  nBits += eLen
12901  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
12902
12903  m = e & ((1 << (-nBits)) - 1)
12904  e >>= (-nBits)
12905  nBits += mLen
12906  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
12907
12908  if (e === 0) {
12909    e = 1 - eBias
12910  } else if (e === eMax) {
12911    return m ? NaN : ((s ? -1 : 1) * Infinity)
12912  } else {
12913    m = m + Math.pow(2, mLen)
12914    e = e - eBias
12915  }
12916  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
12917}
12918
12919exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
12920  var e, m, c
12921  var eLen = (nBytes * 8) - mLen - 1
12922  var eMax = (1 << eLen) - 1
12923  var eBias = eMax >> 1
12924  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
12925  var i = isLE ? 0 : (nBytes - 1)
12926  var d = isLE ? 1 : -1
12927  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
12928
12929  value = Math.abs(value)
12930
12931  if (isNaN(value) || value === Infinity) {
12932    m = isNaN(value) ? 1 : 0
12933    e = eMax
12934  } else {
12935    e = Math.floor(Math.log(value) / Math.LN2)
12936    if (value * (c = Math.pow(2, -e)) < 1) {
12937      e--
12938      c *= 2
12939    }
12940    if (e + eBias >= 1) {
12941      value += rt / c
12942    } else {
12943      value += rt * Math.pow(2, 1 - eBias)
12944    }
12945    if (value * c >= 2) {
12946      e++
12947      c /= 2
12948    }
12949
12950    if (e + eBias >= eMax) {
12951      m = 0
12952      e = eMax
12953    } else if (e + eBias >= 1) {
12954      m = ((value * c) - 1) * Math.pow(2, mLen)
12955      e = e + eBias
12956    } else {
12957      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
12958      e = 0
12959    }
12960  }
12961
12962  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
12963
12964  e = (e << mLen) | m
12965  eLen += mLen
12966  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
12967
12968  buffer[offset + i - d] |= s * 128
12969}
12970
12971
12972/***/ }),
12973
vendor: 387 bytes, lines 12974-12989
12974/***/ "./node_modules/isarray/index.js":
12975/*!***************************************!*\
12976  !*** ./node_modules/isarray/index.js ***!
12977  \***************************************/
12978/*! no static exports found */
12979/***/ (function(module, exports) {
12980
12981var toString = {}.toString;
12982
12983module.exports = Array.isArray || function (arr) {
12984  return toString.call(arr) == '[object Array]';
12985};
12986
12987
12988/***/ }),
12989
vendor: 294,166 bytes, lines 12990-23994
12990/***/ "./node_modules/jquery/dist/jquery.js":
12991/*!********************************************!*\
12992  !*** ./node_modules/jquery/dist/jquery.js ***!
12993  \********************************************/
12994/*! no static exports found */
12995/***/ (function(module, exports, __webpack_require__) {
12996
12997var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
12998 * jQuery JavaScript Library v3.6.3
12999 * https://jquery.com/
13000 *
13001 * Includes Sizzle.js
13002 * https://sizzlejs.com/
13003 *
13004 * Copyright OpenJS Foundation and other contributors
13005 * Released under the MIT license
13006 * https://jquery.org/license
13007 *
13008 * Date: 2022-12-20T21:28Z
13009 */
13010( function( global, factory ) {
13011
13012	"use strict";
13013
13014	if (  true && typeof module.exports === "object" ) {
13015
13016		// For CommonJS and CommonJS-like environments where a proper `window`
13017		// is present, execute the factory and get jQuery.
13018		// For environments that do not have a `window` with a `document`
13019		// (such as Node.js), expose a factory as module.exports.
13020		// This accentuates the need for the creation of a real `window`.
13021		// e.g. var jQuery = require("jquery")(window);
13022		// See ticket trac-14549 for more info.
13023		module.exports = global.document ?
13024			factory( global, true ) :
13025			function( w ) {
13026				if ( !w.document ) {
13027					throw new Error( "jQuery requires a window with a document" );
13028				}
13029				return factory( w );
13030			};
13031	} else {
13032		factory( global );
13033	}
13034
13035// Pass this if window is not defined yet
13036} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
13037
13038// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
13039// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
13040// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
13041// enough that all such attempts are guarded in a try block.
13042"use strict";
13043
13044var arr = [];
13045
13046var getProto = Object.getPrototypeOf;
13047
13048var slice = arr.slice;
13049
13050var flat = arr.flat ? function( array ) {
13051	return arr.flat.call( array );
13052} : function( array ) {
13053	return arr.concat.apply( [], array );
13054};
13055
13056
13057var push = arr.push;
13058
13059var indexOf = arr.indexOf;
13060
13061var class2type = {};
13062
13063var toString = class2type.toString;
13064
13065var hasOwn = class2type.hasOwnProperty;
13066
13067var fnToString = hasOwn.toString;
13068
13069var ObjectFunctionString = fnToString.call( Object );
13070
13071var support = {};
13072
13073var isFunction = function isFunction( obj ) {
13074
13075		// Support: Chrome <=57, Firefox <=52
13076		// In some browsers, typeof returns "function" for HTML <object> elements
13077		// (i.e., `typeof document.createElement( "object" ) === "function"`).
13078		// We don't want to classify *any* DOM node as a function.
13079		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
13080		// Plus for old WebKit, typeof returns "function" for HTML collections
13081		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
13082		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
13083			typeof obj.item !== "function";
13084	};
13085
13086
13087var isWindow = function isWindow( obj ) {
13088		return obj != null && obj === obj.window;
13089	};
13090
13091
13092var document = window.document;
13093
13094
13095
13096	var preservedScriptAttributes = {
13097		type: true,
13098		src: true,
13099		nonce: true,
13100		noModule: true
13101	};
13102
13103	function DOMEval( code, node, doc ) {
13104		doc = doc || document;
13105
13106		var i, val,
13107			script = doc.createElement( "script" );
13108
13109		script.text = code;
13110		if ( node ) {
13111			for ( i in preservedScriptAttributes ) {
13112
13113				// Support: Firefox 64+, Edge 18+
13114				// Some browsers don't support the "nonce" property on scripts.
13115				// On the other hand, just using `getAttribute` is not enough as
13116				// the `nonce` attribute is reset to an empty string whenever it
13117				// becomes browsing-context connected.
13118				// See https://github.com/whatwg/html/issues/2369
13119				// See https://html.spec.whatwg.org/#nonce-attributes
13120				// The `node.getAttribute` check was added for the sake of
13121				// `jQuery.globalEval` so that it can fake a nonce-containing node
13122				// via an object.
13123				val = node[ i ] || node.getAttribute && node.getAttribute( i );
13124				if ( val ) {
13125					script.setAttribute( i, val );
13126				}
13127			}
13128		}
13129		doc.head.appendChild( script ).parentNode.removeChild( script );
13130	}
13131
13132
13133function toType( obj ) {
13134	if ( obj == null ) {
13135		return obj + "";
13136	}
13137
13138	// Support: Android <=2.3 only (functionish RegExp)
13139	return typeof obj === "object" || typeof obj === "function" ?
13140		class2type[ toString.call( obj ) ] || "object" :
13141		typeof obj;
13142}
13143/* global Symbol */
13144// Defining this global in .eslintrc.json would create a danger of using the global
13145// unguarded in another place, it seems safer to define global only for this module
13146
13147
13148
13149var
13150	version = "3.6.3",
13151
13152	// Define a local copy of jQuery
13153	jQuery = function( selector, context ) {
13154
13155		// The jQuery object is actually just the init constructor 'enhanced'
13156		// Need init if jQuery is called (just allow error to be thrown if not included)
13157		return new jQuery.fn.init( selector, context );
13158	};
13159
13160jQuery.fn = jQuery.prototype = {
13161
13162	// The current version of jQuery being used
13163	jquery: version,
13164
13165	constructor: jQuery,
13166
13167	// The default length of a jQuery object is 0
13168	length: 0,
13169
13170	toArray: function() {
13171		return slice.call( this );
13172	},
13173
13174	// Get the Nth element in the matched element set OR
13175	// Get the whole matched element set as a clean array
13176	get: function( num ) {
13177
13178		// Return all the elements in a clean array
13179		if ( num == null ) {
13180			return slice.call( this );
13181		}
13182
13183		// Return just the one element from the set
13184		return num < 0 ? this[ num + this.length ] : this[ num ];
13185	},
13186
13187	// Take an array of elements and push it onto the stack
13188	// (returning the new matched element set)
13189	pushStack: function( elems ) {
13190
13191		// Build a new jQuery matched element set
13192		var ret = jQuery.merge( this.constructor(), elems );
13193
13194		// Add the old object onto the stack (as a reference)
13195		ret.prevObject = this;
13196
13197		// Return the newly-formed element set
13198		return ret;
13199	},
13200
13201	// Execute a callback for every element in the matched set.
13202	each: function( callback ) {
13203		return jQuery.each( this, callback );
13204	},
13205
13206	map: function( callback ) {
13207		return this.pushStack( jQuery.map( this, function( elem, i ) {
13208			return callback.call( elem, i, elem );
13209		} ) );
13210	},
13211
13212	slice: function() {
13213		return this.pushStack( slice.apply( this, arguments ) );
13214	},
13215
13216	first: function() {
13217		return this.eq( 0 );
13218	},
13219
13220	last: function() {
13221		return this.eq( -1 );
13222	},
13223
13224	even: function() {
13225		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
13226			return ( i + 1 ) % 2;
13227		} ) );
13228	},
13229
13230	odd: function() {
13231		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
13232			return i % 2;
13233		} ) );
13234	},
13235
13236	eq: function( i ) {
13237		var len = this.length,
13238			j = +i + ( i < 0 ? len : 0 );
13239		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
13240	},
13241
13242	end: function() {
13243		return this.prevObject || this.constructor();
13244	},
13245
13246	// For internal use only.
13247	// Behaves like an Array's method, not like a jQuery method.
13248	push: push,
13249	sort: arr.sort,
13250	splice: arr.splice
13251};
13252
13253jQuery.extend = jQuery.fn.extend = function() {
13254	var options, name, src, copy, copyIsArray, clone,
13255		target = arguments[ 0 ] || {},
13256		i = 1,
13257		length = arguments.length,
13258		deep = false;
13259
13260	// Handle a deep copy situation
13261	if ( typeof target === "boolean" ) {
13262		deep = target;
13263
13264		// Skip the boolean and the target
13265		target = arguments[ i ] || {};
13266		i++;
13267	}
13268
13269	// Handle case when target is a string or something (possible in deep copy)
13270	if ( typeof target !== "object" && !isFunction( target ) ) {
13271		target = {};
13272	}
13273
13274	// Extend jQuery itself if only one argument is passed
13275	if ( i === length ) {
13276		target = this;
13277		i--;
13278	}
13279
13280	for ( ; i < length; i++ ) {
13281
13282		// Only deal with non-null/undefined values
13283		if ( ( options = arguments[ i ] ) != null ) {
13284
13285			// Extend the base object
13286			for ( name in options ) {
13287				copy = options[ name ];
13288
13289				// Prevent Object.prototype pollution
13290				// Prevent never-ending loop
13291				if ( name === "__proto__" || target === copy ) {
13292					continue;
13293				}
13294
13295				// Recurse if we're merging plain objects or arrays
13296				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
13297					( copyIsArray = Array.isArray( copy ) ) ) ) {
13298					src = target[ name ];
13299
13300					// Ensure proper type for the source value
13301					if ( copyIsArray && !Array.isArray( src ) ) {
13302						clone = [];
13303					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
13304						clone = {};
13305					} else {
13306						clone = src;
13307					}
13308					copyIsArray = false;
13309
13310					// Never move original objects, clone them
13311					target[ name ] = jQuery.extend( deep, clone, copy );
13312
13313				// Don't bring in undefined values
13314				} else if ( copy !== undefined ) {
13315					target[ name ] = copy;
13316				}
13317			}
13318		}
13319	}
13320
13321	// Return the modified object
13322	return target;
13323};
13324
13325jQuery.extend( {
13326
13327	// Unique for each copy of jQuery on the page
13328	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
13329
13330	// Assume jQuery is ready without the ready module
13331	isReady: true,
13332
13333	error: function( msg ) {
13334		throw new Error( msg );
13335	},
13336
13337	noop: function() {},
13338
13339	isPlainObject: function( obj ) {
13340		var proto, Ctor;
13341
13342		// Detect obvious negatives
13343		// Use toString instead of jQuery.type to catch host objects
13344		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
13345			return false;
13346		}
13347
13348		proto = getProto( obj );
13349
13350		// Objects with no prototype (e.g., `Object.create( null )`) are plain
13351		if ( !proto ) {
13352			return true;
13353		}
13354
13355		// Objects with prototype are plain iff they were constructed by a global Object function
13356		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
13357		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
13358	},
13359
13360	isEmptyObject: function( obj ) {
13361		var name;
13362
13363		for ( name in obj ) {
13364			return false;
13365		}
13366		return true;
13367	},
13368
13369	// Evaluates a script in a provided context; falls back to the global one
13370	// if not specified.
13371	globalEval: function( code, options, doc ) {
13372		DOMEval( code, { nonce: options && options.nonce }, doc );
13373	},
13374
13375	each: function( obj, callback ) {
13376		var length, i = 0;
13377
13378		if ( isArrayLike( obj ) ) {
13379			length = obj.length;
13380			for ( ; i < length; i++ ) {
13381				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
13382					break;
13383				}
13384			}
13385		} else {
13386			for ( i in obj ) {
13387				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
13388					break;
13389				}
13390			}
13391		}
13392
13393		return obj;
13394	},
13395
13396	// results is for internal usage only
13397	makeArray: function( arr, results ) {
13398		var ret = results || [];
13399
13400		if ( arr != null ) {
13401			if ( isArrayLike( Object( arr ) ) ) {
13402				jQuery.merge( ret,
13403					typeof arr === "string" ?
13404						[ arr ] : arr
13405				);
13406			} else {
13407				push.call( ret, arr );
13408			}
13409		}
13410
13411		return ret;
13412	},
13413
13414	inArray: function( elem, arr, i ) {
13415		return arr == null ? -1 : indexOf.call( arr, elem, i );
13416	},
13417
13418	// Support: Android <=4.0 only, PhantomJS 1 only
13419	// push.apply(_, arraylike) throws on ancient WebKit
13420	merge: function( first, second ) {
13421		var len = +second.length,
13422			j = 0,
13423			i = first.length;
13424
13425		for ( ; j < len; j++ ) {
13426			first[ i++ ] = second[ j ];
13427		}
13428
13429		first.length = i;
13430
13431		return first;
13432	},
13433
13434	grep: function( elems, callback, invert ) {
13435		var callbackInverse,
13436			matches = [],
13437			i = 0,
13438			length = elems.length,
13439			callbackExpect = !invert;
13440
13441		// Go through the array, only saving the items
13442		// that pass the validator function
13443		for ( ; i < length; i++ ) {
13444			callbackInverse = !callback( elems[ i ], i );
13445			if ( callbackInverse !== callbackExpect ) {
13446				matches.push( elems[ i ] );
13447			}
13448		}
13449
13450		return matches;
13451	},
13452
13453	// arg is for internal usage only
13454	map: function( elems, callback, arg ) {
13455		var length, value,
13456			i = 0,
13457			ret = [];
13458
13459		// Go through the array, translating each of the items to their new values
13460		if ( isArrayLike( elems ) ) {
13461			length = elems.length;
13462			for ( ; i < length; i++ ) {
13463				value = callback( elems[ i ], i, arg );
13464
13465				if ( value != null ) {
13466					ret.push( value );
13467				}
13468			}
13469
13470		// Go through every key on the object,
13471		} else {
13472			for ( i in elems ) {
13473				value = callback( elems[ i ], i, arg );
13474
13475				if ( value != null ) {
13476					ret.push( value );
13477				}
13478			}
13479		}
13480
13481		// Flatten any nested arrays
13482		return flat( ret );
13483	},
13484
13485	// A global GUID counter for objects
13486	guid: 1,
13487
13488	// jQuery.support is not used in Core but other projects attach their
13489	// properties to it so it needs to exist.
13490	support: support
13491} );
13492
13493if ( typeof Symbol === "function" ) {
13494	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
13495}
13496
13497// Populate the class2type map
13498jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
13499	function( _i, name ) {
13500		class2type[ "[object " + name + "]" ] = name.toLowerCase();
13501	} );
13502
13503function isArrayLike( obj ) {
13504
13505	// Support: real iOS 8.2 only (not reproducible in simulator)
13506	// `in` check used to prevent JIT error (gh-2145)
13507	// hasOwn isn't used here due to false negatives
13508	// regarding Nodelist length in IE
13509	var length = !!obj && "length" in obj && obj.length,
13510		type = toType( obj );
13511
13512	if ( isFunction( obj ) || isWindow( obj ) ) {
13513		return false;
13514	}
13515
13516	return type === "array" || length === 0 ||
13517		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
13518}
13519var Sizzle =
13520/*!
13521 * Sizzle CSS Selector Engine v2.3.9
13522 * https://sizzlejs.com/
13523 *
13524 * Copyright JS Foundation and other contributors
13525 * Released under the MIT license
13526 * https://js.foundation/
13527 *
13528 * Date: 2022-12-19
13529 */
13530( function( window ) {
13531var i,
13532	support,
13533	Expr,
13534	getText,
13535	isXML,
13536	tokenize,
13537	compile,
13538	select,
13539	outermostContext,
13540	sortInput,
13541	hasDuplicate,
13542
13543	// Local document vars
13544	setDocument,
13545	document,
13546	docElem,
13547	documentIsHTML,
13548	rbuggyQSA,
13549	rbuggyMatches,
13550	matches,
13551	contains,
13552
13553	// Instance-specific data
13554	expando = "sizzle" + 1 * new Date(),
13555	preferredDoc = window.document,
13556	dirruns = 0,
13557	done = 0,
13558	classCache = createCache(),
13559	tokenCache = createCache(),
13560	compilerCache = createCache(),
13561	nonnativeSelectorCache = createCache(),
13562	sortOrder = function( a, b ) {
13563		if ( a === b ) {
13564			hasDuplicate = true;
13565		}
13566		return 0;
13567	},
13568
13569	// Instance methods
13570	hasOwn = ( {} ).hasOwnProperty,
13571	arr = [],
13572	pop = arr.pop,
13573	pushNative = arr.push,
13574	push = arr.push,
13575	slice = arr.slice,
13576
13577	// Use a stripped-down indexOf as it's faster than native
13578	// https://jsperf.com/thor-indexof-vs-for/5
13579	indexOf = function( list, elem ) {
13580		var i = 0,
13581			len = list.length;
13582		for ( ; i < len; i++ ) {
13583			if ( list[ i ] === elem ) {
13584				return i;
13585			}
13586		}
13587		return -1;
13588	},
13589
13590	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
13591		"ismap|loop|multiple|open|readonly|required|scoped",
13592
13593	// Regular expressions
13594
13595	// http://www.w3.org/TR/css3-selectors/#whitespace
13596	whitespace = "[\\x20\\t\\r\\n\\f]",
13597
13598	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
13599	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
13600		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
13601
13602	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
13603	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
13604
13605		// Operator (capture 2)
13606		"*([*^$|!~]?=)" + whitespace +
13607
13608		// "Attribute values must be CSS identifiers [capture 5]
13609		// or strings [capture 3 or capture 4]"
13610		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
13611		whitespace + "*\\]",
13612
13613	pseudos = ":(" + identifier + ")(?:\\((" +
13614
13615		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
13616		// 1. quoted (capture 3; capture 4 or capture 5)
13617		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
13618
13619		// 2. simple (capture 6)
13620		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
13621
13622		// 3. anything else (capture 2)
13623		".*" +
13624		")\\)|)",
13625
13626	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
13627	rwhitespace = new RegExp( whitespace + "+", "g" ),
13628	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
13629		whitespace + "+$", "g" ),
13630
13631	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
13632	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
13633		"*" ),
13634	rdescend = new RegExp( whitespace + "|>" ),
13635
13636	rpseudo = new RegExp( pseudos ),
13637	ridentifier = new RegExp( "^" + identifier + "$" ),
13638
13639	matchExpr = {
13640		"ID": new RegExp( "^#(" + identifier + ")" ),
13641		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
13642		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
13643		"ATTR": new RegExp( "^" + attributes ),
13644		"PSEUDO": new RegExp( "^" + pseudos ),
13645		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
13646			whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
13647			whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
13648		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
13649
13650		// For use in libraries implementing .is()
13651		// We use this for POS matching in `select`
13652		"needsContext": new RegExp( "^" + whitespace +
13653			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
13654			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
13655	},
13656
13657	rhtml = /HTML$/i,
13658	rinputs = /^(?:input|select|textarea|button)$/i,
13659	rheader = /^h\d$/i,
13660
13661	rnative = /^[^{]+\{\s*\[native \w/,
13662
13663	// Easily-parseable/retrievable ID or TAG or CLASS selectors
13664	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
13665
13666	rsibling = /[+~]/,
13667
13668	// CSS escapes
13669	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
13670	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
13671	funescape = function( escape, nonHex ) {
13672		var high = "0x" + escape.slice( 1 ) - 0x10000;
13673
13674		return nonHex ?
13675
13676			// Strip the backslash prefix from a non-hex escape sequence
13677			nonHex :
13678
13679			// Replace a hexadecimal escape sequence with the encoded Unicode code point
13680			// Support: IE <=11+
13681			// For values outside the Basic Multilingual Plane (BMP), manually construct a
13682			// surrogate pair
13683			high < 0 ?
13684				String.fromCharCode( high + 0x10000 ) :
13685				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
13686	},
13687
13688	// CSS string/identifier serialization
13689	// https://drafts.csswg.org/cssom/#common-serializing-idioms
13690	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
13691	fcssescape = function( ch, asCodePoint ) {
13692		if ( asCodePoint ) {
13693
13694			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
13695			if ( ch === "\0" ) {
13696				return "\uFFFD";
13697			}
13698
13699			// Control characters and (dependent upon position) numbers get escaped as code points
13700			return ch.slice( 0, -1 ) + "\\" +
13701				ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
13702		}
13703
13704		// Other potentially-special ASCII characters get backslash-escaped
13705		return "\\" + ch;
13706	},
13707
13708	// Used for iframes
13709	// See setDocument()
13710	// Removing the function wrapper causes a "Permission Denied"
13711	// error in IE
13712	unloadHandler = function() {
13713		setDocument();
13714	},
13715
13716	inDisabledFieldset = addCombinator(
13717		function( elem ) {
13718			return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
13719		},
13720		{ dir: "parentNode", next: "legend" }
13721	);
13722
13723// Optimize for push.apply( _, NodeList )
13724try {
13725	push.apply(
13726		( arr = slice.call( preferredDoc.childNodes ) ),
13727		preferredDoc.childNodes
13728	);
13729
13730	// Support: Android<4.0
13731	// Detect silently failing push.apply
13732	// eslint-disable-next-line no-unused-expressions
13733	arr[ preferredDoc.childNodes.length ].nodeType;
13734} catch ( e ) {
13735	push = { apply: arr.length ?
13736
13737		// Leverage slice if possible
13738		function( target, els ) {
13739			pushNative.apply( target, slice.call( els ) );
13740		} :
13741
13742		// Support: IE<9
13743		// Otherwise append directly
13744		function( target, els ) {
13745			var j = target.length,
13746				i = 0;
13747
13748			// Can't trust NodeList.length
13749			while ( ( target[ j++ ] = els[ i++ ] ) ) {}
13750			target.length = j - 1;
13751		}
13752	};
13753}
13754
13755function Sizzle( selector, context, results, seed ) {
13756	var m, i, elem, nid, match, groups, newSelector,
13757		newContext = context && context.ownerDocument,
13758
13759		// nodeType defaults to 9, since context defaults to document
13760		nodeType = context ? context.nodeType : 9;
13761
13762	results = results || [];
13763
13764	// Return early from calls with invalid selector or context
13765	if ( typeof selector !== "string" || !selector ||
13766		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
13767
13768		return results;
13769	}
13770
13771	// Try to shortcut find operations (as opposed to filters) in HTML documents
13772	if ( !seed ) {
13773		setDocument( context );
13774		context = context || document;
13775
13776		if ( documentIsHTML ) {
13777
13778			// If the selector is sufficiently simple, try using a "get*By*" DOM method
13779			// (excepting DocumentFragment context, where the methods don't exist)
13780			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
13781
13782				// ID selector
13783				if ( ( m = match[ 1 ] ) ) {
13784
13785					// Document context
13786					if ( nodeType === 9 ) {
13787						if ( ( elem = context.getElementById( m ) ) ) {
13788
13789							// Support: IE, Opera, Webkit
13790							// TODO: identify versions
13791							// getElementById can match elements by name instead of ID
13792							if ( elem.id === m ) {
13793								results.push( elem );
13794								return results;
13795							}
13796						} else {
13797							return results;
13798						}
13799
13800					// Element context
13801					} else {
13802
13803						// Support: IE, Opera, Webkit
13804						// TODO: identify versions
13805						// getElementById can match elements by name instead of ID
13806						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
13807							contains( context, elem ) &&
13808							elem.id === m ) {
13809
13810							results.push( elem );
13811							return results;
13812						}
13813					}
13814
13815				// Type selector
13816				} else if ( match[ 2 ] ) {
13817					push.apply( results, context.getElementsByTagName( selector ) );
13818					return results;
13819
13820				// Class selector
13821				} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
13822					context.getElementsByClassName ) {
13823
13824					push.apply( results, context.getElementsByClassName( m ) );
13825					return results;
13826				}
13827			}
13828
13829			// Take advantage of querySelectorAll
13830			if ( support.qsa &&
13831				!nonnativeSelectorCache[ selector + " " ] &&
13832				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
13833
13834				// Support: IE 8 only
13835				// Exclude object elements
13836				( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
13837
13838				newSelector = selector;
13839				newContext = context;
13840
13841				// qSA considers elements outside a scoping root when evaluating child or
13842				// descendant combinators, which is not what we want.
13843				// In such cases, we work around the behavior by prefixing every selector in the
13844				// list with an ID selector referencing the scope context.
13845				// The technique has to be used as well when a leading combinator is used
13846				// as such selectors are not recognized by querySelectorAll.
13847				// Thanks to Andrew Dupont for this technique.
13848				if ( nodeType === 1 &&
13849					( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
13850
13851					// Expand context for sibling selectors
13852					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
13853						context;
13854
13855					// We can use :scope instead of the ID hack if the browser
13856					// supports it & if we're not changing the context.
13857					if ( newContext !== context || !support.scope ) {
13858
13859						// Capture the context ID, setting it first if necessary
13860						if ( ( nid = context.getAttribute( "id" ) ) ) {
13861							nid = nid.replace( rcssescape, fcssescape );
13862						} else {
13863							context.setAttribute( "id", ( nid = expando ) );
13864						}
13865					}
13866
13867					// Prefix every selector in the list
13868					groups = tokenize( selector );
13869					i = groups.length;
13870					while ( i-- ) {
13871						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
13872							toSelector( groups[ i ] );
13873					}
13874					newSelector = groups.join( "," );
13875				}
13876
13877				try {
13878
13879					// `qSA` may not throw for unrecognized parts using forgiving parsing:
13880					// https://drafts.csswg.org/selectors/#forgiving-selector
13881					// like the `:has()` pseudo-class:
13882					// https://drafts.csswg.org/selectors/#relational
13883					// `CSS.supports` is still expected to return `false` then:
13884					// https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn
13885					// https://drafts.csswg.org/css-conditional-4/#dfn-support-selector
13886					if ( support.cssSupportsSelector &&
13887
13888						// eslint-disable-next-line no-undef
13889						!CSS.supports( "selector(:is(" + newSelector + "))" ) ) {
13890
13891						// Support: IE 11+
13892						// Throw to get to the same code path as an error directly in qSA.
13893						// Note: once we only support browser supporting
13894						// `CSS.supports('selector(...)')`, we can most likely drop
13895						// the `try-catch`. IE doesn't implement the API.
13896						throw new Error();
13897					}
13898
13899					push.apply( results,
13900						newContext.querySelectorAll( newSelector )
13901					);
13902					return results;
13903				} catch ( qsaError ) {
13904					nonnativeSelectorCache( selector, true );
13905				} finally {
13906					if ( nid === expando ) {
13907						context.removeAttribute( "id" );
13908					}
13909				}
13910			}
13911		}
13912	}
13913
13914	// All others
13915	return select( selector.replace( rtrim, "$1" ), context, results, seed );
13916}
13917
13918/**
13919 * Create key-value caches of limited size
13920 * @returns {function(string, object)} Returns the Object data after storing it on itself with
13921 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
13922 *	deleting the oldest entry
13923 */
13924function createCache() {
13925	var keys = [];
13926
13927	function cache( key, value ) {
13928
13929		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
13930		if ( keys.push( key + " " ) > Expr.cacheLength ) {
13931
13932			// Only keep the most recent entries
13933			delete cache[ keys.shift() ];
13934		}
13935		return ( cache[ key + " " ] = value );
13936	}
13937	return cache;
13938}
13939
13940/**
13941 * Mark a function for special use by Sizzle
13942 * @param {Function} fn The function to mark
13943 */
13944function markFunction( fn ) {
13945	fn[ expando ] = true;
13946	return fn;
13947}
13948
13949/**
13950 * Support testing using an element
13951 * @param {Function} fn Passed the created element and returns a boolean result
13952 */
13953function assert( fn ) {
13954	var el = document.createElement( "fieldset" );
13955
13956	try {
13957		return !!fn( el );
13958	} catch ( e ) {
13959		return false;
13960	} finally {
13961
13962		// Remove from its parent by default
13963		if ( el.parentNode ) {
13964			el.parentNode.removeChild( el );
13965		}
13966
13967		// release memory in IE
13968		el = null;
13969	}
13970}
13971
13972/**
13973 * Adds the same handler for all of the specified attrs
13974 * @param {String} attrs Pipe-separated list of attributes
13975 * @param {Function} handler The method that will be applied
13976 */
13977function addHandle( attrs, handler ) {
13978	var arr = attrs.split( "|" ),
13979		i = arr.length;
13980
13981	while ( i-- ) {
13982		Expr.attrHandle[ arr[ i ] ] = handler;
13983	}
13984}
13985
13986/**
13987 * Checks document order of two siblings
13988 * @param {Element} a
13989 * @param {Element} b
13990 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
13991 */
13992function siblingCheck( a, b ) {
13993	var cur = b && a,
13994		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
13995			a.sourceIndex - b.sourceIndex;
13996
13997	// Use IE sourceIndex if available on both nodes
13998	if ( diff ) {
13999		return diff;
14000	}
14001
14002	// Check if b follows a
14003	if ( cur ) {
14004		while ( ( cur = cur.nextSibling ) ) {
14005			if ( cur === b ) {
14006				return -1;
14007			}
14008		}
14009	}
14010
14011	return a ? 1 : -1;
14012}
14013
14014/**
14015 * Returns a function to use in pseudos for input types
14016 * @param {String} type
14017 */
14018function createInputPseudo( type ) {
14019	return function( elem ) {
14020		var name = elem.nodeName.toLowerCase();
14021		return name === "input" && elem.type === type;
14022	};
14023}
14024
14025/**
14026 * Returns a function to use in pseudos for buttons
14027 * @param {String} type
14028 */
14029function createButtonPseudo( type ) {
14030	return function( elem ) {
14031		var name = elem.nodeName.toLowerCase();
14032		return ( name === "input" || name === "button" ) && elem.type === type;
14033	};
14034}
14035
14036/**
14037 * Returns a function to use in pseudos for :enabled/:disabled
14038 * @param {Boolean} disabled true for :disabled; false for :enabled
14039 */
14040function createDisabledPseudo( disabled ) {
14041
14042	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
14043	return function( elem ) {
14044
14045		// Only certain elements can match :enabled or :disabled
14046		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
14047		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
14048		if ( "form" in elem ) {
14049
14050			// Check for inherited disabledness on relevant non-disabled elements:
14051			// * listed form-associated elements in a disabled fieldset
14052			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
14053			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
14054			// * option elements in a disabled optgroup
14055			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
14056			// All such elements have a "form" property.
14057			if ( elem.parentNode && elem.disabled === false ) {
14058
14059				// Option elements defer to a parent optgroup if present
14060				if ( "label" in elem ) {
14061					if ( "label" in elem.parentNode ) {
14062						return elem.parentNode.disabled === disabled;
14063					} else {
14064						return elem.disabled === disabled;
14065					}
14066				}
14067
14068				// Support: IE 6 - 11
14069				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
14070				return elem.isDisabled === disabled ||
14071
14072					// Where there is no isDisabled, check manually
14073					/* jshint -W018 */
14074					elem.isDisabled !== !disabled &&
14075					inDisabledFieldset( elem ) === disabled;
14076			}
14077
14078			return elem.disabled === disabled;
14079
14080		// Try to winnow out elements that can't be disabled before trusting the disabled property.
14081		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
14082		// even exist on them, let alone have a boolean value.
14083		} else if ( "label" in elem ) {
14084			return elem.disabled === disabled;
14085		}
14086
14087		// Remaining elements are neither :enabled nor :disabled
14088		return false;
14089	};
14090}
14091
14092/**
14093 * Returns a function to use in pseudos for positionals
14094 * @param {Function} fn
14095 */
14096function createPositionalPseudo( fn ) {
14097	return markFunction( function( argument ) {
14098		argument = +argument;
14099		return markFunction( function( seed, matches ) {
14100			var j,
14101				matchIndexes = fn( [], seed.length, argument ),
14102				i = matchIndexes.length;
14103
14104			// Match elements found at the specified indexes
14105			while ( i-- ) {
14106				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
14107					seed[ j ] = !( matches[ j ] = seed[ j ] );
14108				}
14109			}
14110		} );
14111	} );
14112}
14113
14114/**
14115 * Checks a node for validity as a Sizzle context
14116 * @param {Element|Object=} context
14117 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
14118 */
14119function testContext( context ) {
14120	return context && typeof context.getElementsByTagName !== "undefined" && context;
14121}
14122
14123// Expose support vars for convenience
14124support = Sizzle.support = {};
14125
14126/**
14127 * Detects XML nodes
14128 * @param {Element|Object} elem An element or a document
14129 * @returns {Boolean} True iff elem is a non-HTML XML node
14130 */
14131isXML = Sizzle.isXML = function( elem ) {
14132	var namespace = elem && elem.namespaceURI,
14133		docElem = elem && ( elem.ownerDocument || elem ).documentElement;
14134
14135	// Support: IE <=8
14136	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
14137	// https://bugs.jquery.com/ticket/4833
14138	return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
14139};
14140
14141/**
14142 * Sets document-related variables once based on the current document
14143 * @param {Element|Object} [doc] An element or document object to use to set the document
14144 * @returns {Object} Returns the current document
14145 */
14146setDocument = Sizzle.setDocument = function( node ) {
14147	var hasCompare, subWindow,
14148		doc = node ? node.ownerDocument || node : preferredDoc;
14149
14150	// Return early if doc is invalid or already selected
14151	// Support: IE 11+, Edge 17 - 18+
14152	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14153	// two documents; shallow comparisons work.
14154	// eslint-disable-next-line eqeqeq
14155	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
14156		return document;
14157	}
14158
14159	// Update global variables
14160	document = doc;
14161	docElem = document.documentElement;
14162	documentIsHTML = !isXML( document );
14163
14164	// Support: IE 9 - 11+, Edge 12 - 18+
14165	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
14166	// Support: IE 11+, Edge 17 - 18+
14167	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14168	// two documents; shallow comparisons work.
14169	// eslint-disable-next-line eqeqeq
14170	if ( preferredDoc != document &&
14171		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
14172
14173		// Support: IE 11, Edge
14174		if ( subWindow.addEventListener ) {
14175			subWindow.addEventListener( "unload", unloadHandler, false );
14176
14177		// Support: IE 9 - 10 only
14178		} else if ( subWindow.attachEvent ) {
14179			subWindow.attachEvent( "onunload", unloadHandler );
14180		}
14181	}
14182
14183	// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
14184	// Safari 4 - 5 only, Opera <=11.6 - 12.x only
14185	// IE/Edge & older browsers don't support the :scope pseudo-class.
14186	// Support: Safari 6.0 only
14187	// Safari 6.0 supports :scope but it's an alias of :root there.
14188	support.scope = assert( function( el ) {
14189		docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
14190		return typeof el.querySelectorAll !== "undefined" &&
14191			!el.querySelectorAll( ":scope fieldset div" ).length;
14192	} );
14193
14194	// Support: Chrome 105+, Firefox 104+, Safari 15.4+
14195	// Make sure forgiving mode is not used in `CSS.supports( "selector(...)" )`.
14196	//
14197	// `:is()` uses a forgiving selector list as an argument and is widely
14198	// implemented, so it's a good one to test against.
14199	support.cssSupportsSelector = assert( function() {
14200		/* eslint-disable no-undef */
14201
14202		return CSS.supports( "selector(*)" ) &&
14203
14204			// Support: Firefox 78-81 only
14205			// In old Firefox, `:is()` didn't use forgiving parsing. In that case,
14206			// fail this test as there's no selector to test against that.
14207			// `CSS.supports` uses unforgiving parsing
14208			document.querySelectorAll( ":is(:jqfake)" ) &&
14209
14210			// `*` is needed as Safari & newer Chrome implemented something in between
14211			// for `:has()` - it throws in `qSA` if it only contains an unsupported
14212			// argument but multiple ones, one of which is supported, are fine.
14213			// We want to play safe in case `:is()` gets the same treatment.
14214			!CSS.supports( "selector(:is(*,:jqfake))" );
14215
14216		/* eslint-enable */
14217	} );
14218
14219	/* Attributes
14220	---------------------------------------------------------------------- */
14221
14222	// Support: IE<8
14223	// Verify that getAttribute really returns attributes and not properties
14224	// (excepting IE8 booleans)
14225	support.attributes = assert( function( el ) {
14226		el.className = "i";
14227		return !el.getAttribute( "className" );
14228	} );
14229
14230	/* getElement(s)By*
14231	---------------------------------------------------------------------- */
14232
14233	// Check if getElementsByTagName("*") returns only elements
14234	support.getElementsByTagName = assert( function( el ) {
14235		el.appendChild( document.createComment( "" ) );
14236		return !el.getElementsByTagName( "*" ).length;
14237	} );
14238
14239	// Support: IE<9
14240	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
14241
14242	// Support: IE<10
14243	// Check if getElementById returns elements by name
14244	// The broken getElementById methods don't pick up programmatically-set names,
14245	// so use a roundabout getElementsByName test
14246	support.getById = assert( function( el ) {
14247		docElem.appendChild( el ).id = expando;
14248		return !document.getElementsByName || !document.getElementsByName( expando ).length;
14249	} );
14250
14251	// ID filter and find
14252	if ( support.getById ) {
14253		Expr.filter[ "ID" ] = function( id ) {
14254			var attrId = id.replace( runescape, funescape );
14255			return function( elem ) {
14256				return elem.getAttribute( "id" ) === attrId;
14257			};
14258		};
14259		Expr.find[ "ID" ] = function( id, context ) {
14260			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
14261				var elem = context.getElementById( id );
14262				return elem ? [ elem ] : [];
14263			}
14264		};
14265	} else {
14266		Expr.filter[ "ID" ] =  function( id ) {
14267			var attrId = id.replace( runescape, funescape );
14268			return function( elem ) {
14269				var node = typeof elem.getAttributeNode !== "undefined" &&
14270					elem.getAttributeNode( "id" );
14271				return node && node.value === attrId;
14272			};
14273		};
14274
14275		// Support: IE 6 - 7 only
14276		// getElementById is not reliable as a find shortcut
14277		Expr.find[ "ID" ] = function( id, context ) {
14278			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
14279				var node, i, elems,
14280					elem = context.getElementById( id );
14281
14282				if ( elem ) {
14283
14284					// Verify the id attribute
14285					node = elem.getAttributeNode( "id" );
14286					if ( node && node.value === id ) {
14287						return [ elem ];
14288					}
14289
14290					// Fall back on getElementsByName
14291					elems = context.getElementsByName( id );
14292					i = 0;
14293					while ( ( elem = elems[ i++ ] ) ) {
14294						node = elem.getAttributeNode( "id" );
14295						if ( node && node.value === id ) {
14296							return [ elem ];
14297						}
14298					}
14299				}
14300
14301				return [];
14302			}
14303		};
14304	}
14305
14306	// Tag
14307	Expr.find[ "TAG" ] = support.getElementsByTagName ?
14308		function( tag, context ) {
14309			if ( typeof context.getElementsByTagName !== "undefined" ) {
14310				return context.getElementsByTagName( tag );
14311
14312			// DocumentFragment nodes don't have gEBTN
14313			} else if ( support.qsa ) {
14314				return context.querySelectorAll( tag );
14315			}
14316		} :
14317
14318		function( tag, context ) {
14319			var elem,
14320				tmp = [],
14321				i = 0,
14322
14323				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
14324				results = context.getElementsByTagName( tag );
14325
14326			// Filter out possible comments
14327			if ( tag === "*" ) {
14328				while ( ( elem = results[ i++ ] ) ) {
14329					if ( elem.nodeType === 1 ) {
14330						tmp.push( elem );
14331					}
14332				}
14333
14334				return tmp;
14335			}
14336			return results;
14337		};
14338
14339	// Class
14340	Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
14341		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
14342			return context.getElementsByClassName( className );
14343		}
14344	};
14345
14346	/* QSA/matchesSelector
14347	---------------------------------------------------------------------- */
14348
14349	// QSA and matchesSelector support
14350
14351	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
14352	rbuggyMatches = [];
14353
14354	// qSa(:focus) reports false when true (Chrome 21)
14355	// We allow this because of a bug in IE8/9 that throws an error
14356	// whenever `document.activeElement` is accessed on an iframe
14357	// So, we allow :focus to pass through QSA all the time to avoid the IE error
14358	// See https://bugs.jquery.com/ticket/13378
14359	rbuggyQSA = [];
14360
14361	if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
14362
14363		// Build QSA regex
14364		// Regex strategy adopted from Diego Perini
14365		assert( function( el ) {
14366
14367			var input;
14368
14369			// Select is set to empty string on purpose
14370			// This is to test IE's treatment of not explicitly
14371			// setting a boolean content attribute,
14372			// since its presence should be enough
14373			// https://bugs.jquery.com/ticket/12359
14374			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
14375				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
14376				"<option selected=''></option></select>";
14377
14378			// Support: IE8, Opera 11-12.16
14379			// Nothing should be selected when empty strings follow ^= or $= or *=
14380			// The test attribute must be unknown in Opera but "safe" for WinRT
14381			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
14382			if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
14383				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
14384			}
14385
14386			// Support: IE8
14387			// Boolean attributes and "value" are not treated correctly
14388			if ( !el.querySelectorAll( "[selected]" ).length ) {
14389				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
14390			}
14391
14392			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
14393			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
14394				rbuggyQSA.push( "~=" );
14395			}
14396
14397			// Support: IE 11+, Edge 15 - 18+
14398			// IE 11/Edge don't find elements on a `[name='']` query in some cases.
14399			// Adding a temporary attribute to the document before the selection works
14400			// around the issue.
14401			// Interestingly, IE 10 & older don't seem to have the issue.
14402			input = document.createElement( "input" );
14403			input.setAttribute( "name", "" );
14404			el.appendChild( input );
14405			if ( !el.querySelectorAll( "[name='']" ).length ) {
14406				rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
14407					whitespace + "*(?:''|\"\")" );
14408			}
14409
14410			// Webkit/Opera - :checked should return selected option elements
14411			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
14412			// IE8 throws error here and will not see later tests
14413			if ( !el.querySelectorAll( ":checked" ).length ) {
14414				rbuggyQSA.push( ":checked" );
14415			}
14416
14417			// Support: Safari 8+, iOS 8+
14418			// https://bugs.webkit.org/show_bug.cgi?id=136851
14419			// In-page `selector#id sibling-combinator selector` fails
14420			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
14421				rbuggyQSA.push( ".#.+[+~]" );
14422			}
14423
14424			// Support: Firefox <=3.6 - 5 only
14425			// Old Firefox doesn't throw on a badly-escaped identifier.
14426			el.querySelectorAll( "\\\f" );
14427			rbuggyQSA.push( "[\\r\\n\\f]" );
14428		} );
14429
14430		assert( function( el ) {
14431			el.innerHTML = "<a href='' disabled='disabled'></a>" +
14432				"<select disabled='disabled'><option/></select>";
14433
14434			// Support: Windows 8 Native Apps
14435			// The type and name attributes are restricted during .innerHTML assignment
14436			var input = document.createElement( "input" );
14437			input.setAttribute( "type", "hidden" );
14438			el.appendChild( input ).setAttribute( "name", "D" );
14439
14440			// Support: IE8
14441			// Enforce case-sensitivity of name attribute
14442			if ( el.querySelectorAll( "[name=d]" ).length ) {
14443				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
14444			}
14445
14446			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
14447			// IE8 throws error here and will not see later tests
14448			if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
14449				rbuggyQSA.push( ":enabled", ":disabled" );
14450			}
14451
14452			// Support: IE9-11+
14453			// IE's :disabled selector does not pick up the children of disabled fieldsets
14454			docElem.appendChild( el ).disabled = true;
14455			if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
14456				rbuggyQSA.push( ":enabled", ":disabled" );
14457			}
14458
14459			// Support: Opera 10 - 11 only
14460			// Opera 10-11 does not throw on post-comma invalid pseudos
14461			el.querySelectorAll( "*,:x" );
14462			rbuggyQSA.push( ",.*:" );
14463		} );
14464	}
14465
14466	if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
14467		docElem.webkitMatchesSelector ||
14468		docElem.mozMatchesSelector ||
14469		docElem.oMatchesSelector ||
14470		docElem.msMatchesSelector ) ) ) ) {
14471
14472		assert( function( el ) {
14473
14474			// Check to see if it's possible to do matchesSelector
14475			// on a disconnected node (IE 9)
14476			support.disconnectedMatch = matches.call( el, "*" );
14477
14478			// This should fail with an exception
14479			// Gecko does not error, returns false instead
14480			matches.call( el, "[s!='']:x" );
14481			rbuggyMatches.push( "!=", pseudos );
14482		} );
14483	}
14484
14485	if ( !support.cssSupportsSelector ) {
14486
14487		// Support: Chrome 105+, Safari 15.4+
14488		// `:has()` uses a forgiving selector list as an argument so our regular
14489		// `try-catch` mechanism fails to catch `:has()` with arguments not supported
14490		// natively like `:has(:contains("Foo"))`. Where supported & spec-compliant,
14491		// we now use `CSS.supports("selector(:is(SELECTOR_TO_BE_TESTED))")`, but
14492		// outside that we mark `:has` as buggy.
14493		rbuggyQSA.push( ":has" );
14494	}
14495
14496	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
14497	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
14498
14499	/* Contains
14500	---------------------------------------------------------------------- */
14501	hasCompare = rnative.test( docElem.compareDocumentPosition );
14502
14503	// Element contains another
14504	// Purposefully self-exclusive
14505	// As in, an element does not contain itself
14506	contains = hasCompare || rnative.test( docElem.contains ) ?
14507		function( a, b ) {
14508
14509			// Support: IE <9 only
14510			// IE doesn't have `contains` on `document` so we need to check for
14511			// `documentElement` presence.
14512			// We need to fall back to `a` when `documentElement` is missing
14513			// as `ownerDocument` of elements within `<template/>` may have
14514			// a null one - a default behavior of all modern browsers.
14515			var adown = a.nodeType === 9 && a.documentElement || a,
14516				bup = b && b.parentNode;
14517			return a === bup || !!( bup && bup.nodeType === 1 && (
14518				adown.contains ?
14519					adown.contains( bup ) :
14520					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
14521			) );
14522		} :
14523		function( a, b ) {
14524			if ( b ) {
14525				while ( ( b = b.parentNode ) ) {
14526					if ( b === a ) {
14527						return true;
14528					}
14529				}
14530			}
14531			return false;
14532		};
14533
14534	/* Sorting
14535	---------------------------------------------------------------------- */
14536
14537	// Document order sorting
14538	sortOrder = hasCompare ?
14539	function( a, b ) {
14540
14541		// Flag for duplicate removal
14542		if ( a === b ) {
14543			hasDuplicate = true;
14544			return 0;
14545		}
14546
14547		// Sort on method existence if only one input has compareDocumentPosition
14548		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
14549		if ( compare ) {
14550			return compare;
14551		}
14552
14553		// Calculate position if both inputs belong to the same document
14554		// Support: IE 11+, Edge 17 - 18+
14555		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14556		// two documents; shallow comparisons work.
14557		// eslint-disable-next-line eqeqeq
14558		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
14559			a.compareDocumentPosition( b ) :
14560
14561			// Otherwise we know they are disconnected
14562			1;
14563
14564		// Disconnected nodes
14565		if ( compare & 1 ||
14566			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
14567
14568			// Choose the first element that is related to our preferred document
14569			// Support: IE 11+, Edge 17 - 18+
14570			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14571			// two documents; shallow comparisons work.
14572			// eslint-disable-next-line eqeqeq
14573			if ( a == document || a.ownerDocument == preferredDoc &&
14574				contains( preferredDoc, a ) ) {
14575				return -1;
14576			}
14577
14578			// Support: IE 11+, Edge 17 - 18+
14579			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14580			// two documents; shallow comparisons work.
14581			// eslint-disable-next-line eqeqeq
14582			if ( b == document || b.ownerDocument == preferredDoc &&
14583				contains( preferredDoc, b ) ) {
14584				return 1;
14585			}
14586
14587			// Maintain original order
14588			return sortInput ?
14589				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
14590				0;
14591		}
14592
14593		return compare & 4 ? -1 : 1;
14594	} :
14595	function( a, b ) {
14596
14597		// Exit early if the nodes are identical
14598		if ( a === b ) {
14599			hasDuplicate = true;
14600			return 0;
14601		}
14602
14603		var cur,
14604			i = 0,
14605			aup = a.parentNode,
14606			bup = b.parentNode,
14607			ap = [ a ],
14608			bp = [ b ];
14609
14610		// Parentless nodes are either documents or disconnected
14611		if ( !aup || !bup ) {
14612
14613			// Support: IE 11+, Edge 17 - 18+
14614			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14615			// two documents; shallow comparisons work.
14616			/* eslint-disable eqeqeq */
14617			return a == document ? -1 :
14618				b == document ? 1 :
14619				/* eslint-enable eqeqeq */
14620				aup ? -1 :
14621				bup ? 1 :
14622				sortInput ?
14623				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
14624				0;
14625
14626		// If the nodes are siblings, we can do a quick check
14627		} else if ( aup === bup ) {
14628			return siblingCheck( a, b );
14629		}
14630
14631		// Otherwise we need full lists of their ancestors for comparison
14632		cur = a;
14633		while ( ( cur = cur.parentNode ) ) {
14634			ap.unshift( cur );
14635		}
14636		cur = b;
14637		while ( ( cur = cur.parentNode ) ) {
14638			bp.unshift( cur );
14639		}
14640
14641		// Walk down the tree looking for a discrepancy
14642		while ( ap[ i ] === bp[ i ] ) {
14643			i++;
14644		}
14645
14646		return i ?
14647
14648			// Do a sibling check if the nodes have a common ancestor
14649			siblingCheck( ap[ i ], bp[ i ] ) :
14650
14651			// Otherwise nodes in our document sort first
14652			// Support: IE 11+, Edge 17 - 18+
14653			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14654			// two documents; shallow comparisons work.
14655			/* eslint-disable eqeqeq */
14656			ap[ i ] == preferredDoc ? -1 :
14657			bp[ i ] == preferredDoc ? 1 :
14658			/* eslint-enable eqeqeq */
14659			0;
14660	};
14661
14662	return document;
14663};
14664
14665Sizzle.matches = function( expr, elements ) {
14666	return Sizzle( expr, null, null, elements );
14667};
14668
14669Sizzle.matchesSelector = function( elem, expr ) {
14670	setDocument( elem );
14671
14672	if ( support.matchesSelector && documentIsHTML &&
14673		!nonnativeSelectorCache[ expr + " " ] &&
14674		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
14675		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
14676
14677		try {
14678			var ret = matches.call( elem, expr );
14679
14680			// IE 9's matchesSelector returns false on disconnected nodes
14681			if ( ret || support.disconnectedMatch ||
14682
14683				// As well, disconnected nodes are said to be in a document
14684				// fragment in IE 9
14685				elem.document && elem.document.nodeType !== 11 ) {
14686				return ret;
14687			}
14688		} catch ( e ) {
14689			nonnativeSelectorCache( expr, true );
14690		}
14691	}
14692
14693	return Sizzle( expr, document, null, [ elem ] ).length > 0;
14694};
14695
14696Sizzle.contains = function( context, elem ) {
14697
14698	// Set document vars if needed
14699	// Support: IE 11+, Edge 17 - 18+
14700	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14701	// two documents; shallow comparisons work.
14702	// eslint-disable-next-line eqeqeq
14703	if ( ( context.ownerDocument || context ) != document ) {
14704		setDocument( context );
14705	}
14706	return contains( context, elem );
14707};
14708
14709Sizzle.attr = function( elem, name ) {
14710
14711	// Set document vars if needed
14712	// Support: IE 11+, Edge 17 - 18+
14713	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
14714	// two documents; shallow comparisons work.
14715	// eslint-disable-next-line eqeqeq
14716	if ( ( elem.ownerDocument || elem ) != document ) {
14717		setDocument( elem );
14718	}
14719
14720	var fn = Expr.attrHandle[ name.toLowerCase() ],
14721
14722		// Don't get fooled by Object.prototype properties (jQuery #13807)
14723		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
14724			fn( elem, name, !documentIsHTML ) :
14725			undefined;
14726
14727	return val !== undefined ?
14728		val :
14729		support.attributes || !documentIsHTML ?
14730			elem.getAttribute( name ) :
14731			( val = elem.getAttributeNode( name ) ) && val.specified ?
14732				val.value :
14733				null;
14734};
14735
14736Sizzle.escape = function( sel ) {
14737	return ( sel + "" ).replace( rcssescape, fcssescape );
14738};
14739
14740Sizzle.error = function( msg ) {
14741	throw new Error( "Syntax error, unrecognized expression: " + msg );
14742};
14743
14744/**
14745 * Document sorting and removing duplicates
14746 * @param {ArrayLike} results
14747 */
14748Sizzle.uniqueSort = function( results ) {
14749	var elem,
14750		duplicates = [],
14751		j = 0,
14752		i = 0;
14753
14754	// Unless we *know* we can detect duplicates, assume their presence
14755	hasDuplicate = !support.detectDuplicates;
14756	sortInput = !support.sortStable && results.slice( 0 );
14757	results.sort( sortOrder );
14758
14759	if ( hasDuplicate ) {
14760		while ( ( elem = results[ i++ ] ) ) {
14761			if ( elem === results[ i ] ) {
14762				j = duplicates.push( i );
14763			}
14764		}
14765		while ( j-- ) {
14766			results.splice( duplicates[ j ], 1 );
14767		}
14768	}
14769
14770	// Clear input after sorting to release objects
14771	// See https://github.com/jquery/sizzle/pull/225
14772	sortInput = null;
14773
14774	return results;
14775};
14776
14777/**
14778 * Utility function for retrieving the text value of an array of DOM nodes
14779 * @param {Array|Element} elem
14780 */
14781getText = Sizzle.getText = function( elem ) {
14782	var node,
14783		ret = "",
14784		i = 0,
14785		nodeType = elem.nodeType;
14786
14787	if ( !nodeType ) {
14788
14789		// If no nodeType, this is expected to be an array
14790		while ( ( node = elem[ i++ ] ) ) {
14791
14792			// Do not traverse comment nodes
14793			ret += getText( node );
14794		}
14795	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
14796
14797		// Use textContent for elements
14798		// innerText usage removed for consistency of new lines (jQuery #11153)
14799		if ( typeof elem.textContent === "string" ) {
14800			return elem.textContent;
14801		} else {
14802
14803			// Traverse its children
14804			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
14805				ret += getText( elem );
14806			}
14807		}
14808	} else if ( nodeType === 3 || nodeType === 4 ) {
14809		return elem.nodeValue;
14810	}
14811
14812	// Do not include comment or processing instruction nodes
14813
14814	return ret;
14815};
14816
14817Expr = Sizzle.selectors = {
14818
14819	// Can be adjusted by the user
14820	cacheLength: 50,
14821
14822	createPseudo: markFunction,
14823
14824	match: matchExpr,
14825
14826	attrHandle: {},
14827
14828	find: {},
14829
14830	relative: {
14831		">": { dir: "parentNode", first: true },
14832		" ": { dir: "parentNode" },
14833		"+": { dir: "previousSibling", first: true },
14834		"~": { dir: "previousSibling" }
14835	},
14836
14837	preFilter: {
14838		"ATTR": function( match ) {
14839			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
14840
14841			// Move the given value to match[3] whether quoted or unquoted
14842			match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
14843				match[ 5 ] || "" ).replace( runescape, funescape );
14844
14845			if ( match[ 2 ] === "~=" ) {
14846				match[ 3 ] = " " + match[ 3 ] + " ";
14847			}
14848
14849			return match.slice( 0, 4 );
14850		},
14851
14852		"CHILD": function( match ) {
14853
14854			/* matches from matchExpr["CHILD"]
14855				1 type (only|nth|...)
14856				2 what (child|of-type)
14857				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
14858				4 xn-component of xn+y argument ([+-]?\d*n|)
14859				5 sign of xn-component
14860				6 x of xn-component
14861				7 sign of y-component
14862				8 y of y-component
14863			*/
14864			match[ 1 ] = match[ 1 ].toLowerCase();
14865
14866			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
14867
14868				// nth-* requires argument
14869				if ( !match[ 3 ] ) {
14870					Sizzle.error( match[ 0 ] );
14871				}
14872
14873				// numeric x and y parameters for Expr.filter.CHILD
14874				// remember that false/true cast respectively to 0/1
14875				match[ 4 ] = +( match[ 4 ] ?
14876					match[ 5 ] + ( match[ 6 ] || 1 ) :
14877					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
14878				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
14879
14880				// other types prohibit arguments
14881			} else if ( match[ 3 ] ) {
14882				Sizzle.error( match[ 0 ] );
14883			}
14884
14885			return match;
14886		},
14887
14888		"PSEUDO": function( match ) {
14889			var excess,
14890				unquoted = !match[ 6 ] && match[ 2 ];
14891
14892			if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
14893				return null;
14894			}
14895
14896			// Accept quoted arguments as-is
14897			if ( match[ 3 ] ) {
14898				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
14899
14900			// Strip excess characters from unquoted arguments
14901			} else if ( unquoted && rpseudo.test( unquoted ) &&
14902
14903				// Get excess from tokenize (recursively)
14904				( excess = tokenize( unquoted, true ) ) &&
14905
14906				// advance to the next closing parenthesis
14907				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
14908
14909				// excess is a negative index
14910				match[ 0 ] = match[ 0 ].slice( 0, excess );
14911				match[ 2 ] = unquoted.slice( 0, excess );
14912			}
14913
14914			// Return only captures needed by the pseudo filter method (type and argument)
14915			return match.slice( 0, 3 );
14916		}
14917	},
14918
14919	filter: {
14920
14921		"TAG": function( nodeNameSelector ) {
14922			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
14923			return nodeNameSelector === "*" ?
14924				function() {
14925					return true;
14926				} :
14927				function( elem ) {
14928					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
14929				};
14930		},
14931
14932		"CLASS": function( className ) {
14933			var pattern = classCache[ className + " " ];
14934
14935			return pattern ||
14936				( pattern = new RegExp( "(^|" + whitespace +
14937					")" + className + "(" + whitespace + "|$)" ) ) && classCache(
14938						className, function( elem ) {
14939							return pattern.test(
14940								typeof elem.className === "string" && elem.className ||
14941								typeof elem.getAttribute !== "undefined" &&
14942									elem.getAttribute( "class" ) ||
14943								""
14944							);
14945				} );
14946		},
14947
14948		"ATTR": function( name, operator, check ) {
14949			return function( elem ) {
14950				var result = Sizzle.attr( elem, name );
14951
14952				if ( result == null ) {
14953					return operator === "!=";
14954				}
14955				if ( !operator ) {
14956					return true;
14957				}
14958
14959				result += "";
14960
14961				/* eslint-disable max-len */
14962
14963				return operator === "=" ? result === check :
14964					operator === "!=" ? result !== check :
14965					operator === "^=" ? check && result.indexOf( check ) === 0 :
14966					operator === "*=" ? check && result.indexOf( check ) > -1 :
14967					operator === "$=" ? check && result.slice( -check.length ) === check :
14968					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
14969					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
14970					false;
14971				/* eslint-enable max-len */
14972
14973			};
14974		},
14975
14976		"CHILD": function( type, what, _argument, first, last ) {
14977			var simple = type.slice( 0, 3 ) !== "nth",
14978				forward = type.slice( -4 ) !== "last",
14979				ofType = what === "of-type";
14980
14981			return first === 1 && last === 0 ?
14982
14983				// Shortcut for :nth-*(n)
14984				function( elem ) {
14985					return !!elem.parentNode;
14986				} :
14987
14988				function( elem, _context, xml ) {
14989					var cache, uniqueCache, outerCache, node, nodeIndex, start,
14990						dir = simple !== forward ? "nextSibling" : "previousSibling",
14991						parent = elem.parentNode,
14992						name = ofType && elem.nodeName.toLowerCase(),
14993						useCache = !xml && !ofType,
14994						diff = false;
14995
14996					if ( parent ) {
14997
14998						// :(first|last|only)-(child|of-type)
14999						if ( simple ) {
15000							while ( dir ) {
15001								node = elem;
15002								while ( ( node = node[ dir ] ) ) {
15003									if ( ofType ?
15004										node.nodeName.toLowerCase() === name :
15005										node.nodeType === 1 ) {
15006
15007										return false;
15008									}
15009								}
15010
15011								// Reverse direction for :only-* (if we haven't yet done so)
15012								start = dir = type === "only" && !start && "nextSibling";
15013							}
15014							return true;
15015						}
15016
15017						start = [ forward ? parent.firstChild : parent.lastChild ];
15018
15019						// non-xml :nth-child(...) stores cache data on `parent`
15020						if ( forward && useCache ) {
15021
15022							// Seek `elem` from a previously-cached index
15023
15024							// ...in a gzip-friendly way
15025							node = parent;
15026							outerCache = node[ expando ] || ( node[ expando ] = {} );
15027
15028							// Support: IE <9 only
15029							// Defend against cloned attroperties (jQuery gh-1709)
15030							uniqueCache = outerCache[ node.uniqueID ] ||
15031								( outerCache[ node.uniqueID ] = {} );
15032
15033							cache = uniqueCache[ type ] || [];
15034							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
15035							diff = nodeIndex && cache[ 2 ];
15036							node = nodeIndex && parent.childNodes[ nodeIndex ];
15037
15038							while ( ( node = ++nodeIndex && node && node[ dir ] ||
15039
15040								// Fallback to seeking `elem` from the start
15041								( diff = nodeIndex = 0 ) || start.pop() ) ) {
15042
15043								// When found, cache indexes on `parent` and break
15044								if ( node.nodeType === 1 && ++diff && node === elem ) {
15045									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
15046									break;
15047								}
15048							}
15049
15050						} else {
15051
15052							// Use previously-cached element index if available
15053							if ( useCache ) {
15054
15055								// ...in a gzip-friendly way
15056								node = elem;
15057								outerCache = node[ expando ] || ( node[ expando ] = {} );
15058
15059								// Support: IE <9 only
15060								// Defend against cloned attroperties (jQuery gh-1709)
15061								uniqueCache = outerCache[ node.uniqueID ] ||
15062									( outerCache[ node.uniqueID ] = {} );
15063
15064								cache = uniqueCache[ type ] || [];
15065								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
15066								diff = nodeIndex;
15067							}
15068
15069							// xml :nth-child(...)
15070							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
15071							if ( diff === false ) {
15072
15073								// Use the same loop as above to seek `elem` from the start
15074								while ( ( node = ++nodeIndex && node && node[ dir ] ||
15075									( diff = nodeIndex = 0 ) || start.pop() ) ) {
15076
15077									if ( ( ofType ?
15078										node.nodeName.toLowerCase() === name :
15079										node.nodeType === 1 ) &&
15080										++diff ) {
15081
15082										// Cache the index of each encountered element
15083										if ( useCache ) {
15084											outerCache = node[ expando ] ||
15085												( node[ expando ] = {} );
15086
15087											// Support: IE <9 only
15088											// Defend against cloned attroperties (jQuery gh-1709)
15089											uniqueCache = outerCache[ node.uniqueID ] ||
15090												( outerCache[ node.uniqueID ] = {} );
15091
15092											uniqueCache[ type ] = [ dirruns, diff ];
15093										}
15094
15095										if ( node === elem ) {
15096											break;
15097										}
15098									}
15099								}
15100							}
15101						}
15102
15103						// Incorporate the offset, then check against cycle size
15104						diff -= last;
15105						return diff === first || ( diff % first === 0 && diff / first >= 0 );
15106					}
15107				};
15108		},
15109
15110		"PSEUDO": function( pseudo, argument ) {
15111
15112			// pseudo-class names are case-insensitive
15113			// http://www.w3.org/TR/selectors/#pseudo-classes
15114			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
15115			// Remember that setFilters inherits from pseudos
15116			var args,
15117				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
15118					Sizzle.error( "unsupported pseudo: " + pseudo );
15119
15120			// The user may use createPseudo to indicate that
15121			// arguments are needed to create the filter function
15122			// just as Sizzle does
15123			if ( fn[ expando ] ) {
15124				return fn( argument );
15125			}
15126
15127			// But maintain support for old signatures
15128			if ( fn.length > 1 ) {
15129				args = [ pseudo, pseudo, "", argument ];
15130				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
15131					markFunction( function( seed, matches ) {
15132						var idx,
15133							matched = fn( seed, argument ),
15134							i = matched.length;
15135						while ( i-- ) {
15136							idx = indexOf( seed, matched[ i ] );
15137							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
15138						}
15139					} ) :
15140					function( elem ) {
15141						return fn( elem, 0, args );
15142					};
15143			}
15144
15145			return fn;
15146		}
15147	},
15148
15149	pseudos: {
15150
15151		// Potentially complex pseudos
15152		"not": markFunction( function( selector ) {
15153
15154			// Trim the selector passed to compile
15155			// to avoid treating leading and trailing
15156			// spaces as combinators
15157			var input = [],
15158				results = [],
15159				matcher = compile( selector.replace( rtrim, "$1" ) );
15160
15161			return matcher[ expando ] ?
15162				markFunction( function( seed, matches, _context, xml ) {
15163					var elem,
15164						unmatched = matcher( seed, null, xml, [] ),
15165						i = seed.length;
15166
15167					// Match elements unmatched by `matcher`
15168					while ( i-- ) {
15169						if ( ( elem = unmatched[ i ] ) ) {
15170							seed[ i ] = !( matches[ i ] = elem );
15171						}
15172					}
15173				} ) :
15174				function( elem, _context, xml ) {
15175					input[ 0 ] = elem;
15176					matcher( input, null, xml, results );
15177
15178					// Don't keep the element (issue #299)
15179					input[ 0 ] = null;
15180					return !results.pop();
15181				};
15182		} ),
15183
15184		"has": markFunction( function( selector ) {
15185			return function( elem ) {
15186				return Sizzle( selector, elem ).length > 0;
15187			};
15188		} ),
15189
15190		"contains": markFunction( function( text ) {
15191			text = text.replace( runescape, funescape );
15192			return function( elem ) {
15193				return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
15194			};
15195		} ),
15196
15197		// "Whether an element is represented by a :lang() selector
15198		// is based solely on the element's language value
15199		// being equal to the identifier C,
15200		// or beginning with the identifier C immediately followed by "-".
15201		// The matching of C against the element's language value is performed case-insensitively.
15202		// The identifier C does not have to be a valid language name."
15203		// http://www.w3.org/TR/selectors/#lang-pseudo
15204		"lang": markFunction( function( lang ) {
15205
15206			// lang value must be a valid identifier
15207			if ( !ridentifier.test( lang || "" ) ) {
15208				Sizzle.error( "unsupported lang: " + lang );
15209			}
15210			lang = lang.replace( runescape, funescape ).toLowerCase();
15211			return function( elem ) {
15212				var elemLang;
15213				do {
15214					if ( ( elemLang = documentIsHTML ?
15215						elem.lang :
15216						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
15217
15218						elemLang = elemLang.toLowerCase();
15219						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
15220					}
15221				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
15222				return false;
15223			};
15224		} ),
15225
15226		// Miscellaneous
15227		"target": function( elem ) {
15228			var hash = window.location && window.location.hash;
15229			return hash && hash.slice( 1 ) === elem.id;
15230		},
15231
15232		"root": function( elem ) {
15233			return elem === docElem;
15234		},
15235
15236		"focus": function( elem ) {
15237			return elem === document.activeElement &&
15238				( !document.hasFocus || document.hasFocus() ) &&
15239				!!( elem.type || elem.href || ~elem.tabIndex );
15240		},
15241
15242		// Boolean properties
15243		"enabled": createDisabledPseudo( false ),
15244		"disabled": createDisabledPseudo( true ),
15245
15246		"checked": function( elem ) {
15247
15248			// In CSS3, :checked should return both checked and selected elements
15249			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
15250			var nodeName = elem.nodeName.toLowerCase();
15251			return ( nodeName === "input" && !!elem.checked ) ||
15252				( nodeName === "option" && !!elem.selected );
15253		},
15254
15255		"selected": function( elem ) {
15256
15257			// Accessing this property makes selected-by-default
15258			// options in Safari work properly
15259			if ( elem.parentNode ) {
15260				// eslint-disable-next-line no-unused-expressions
15261				elem.parentNode.selectedIndex;
15262			}
15263
15264			return elem.selected === true;
15265		},
15266
15267		// Contents
15268		"empty": function( elem ) {
15269
15270			// http://www.w3.org/TR/selectors/#empty-pseudo
15271			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
15272			//   but not by others (comment: 8; processing instruction: 7; etc.)
15273			// nodeType < 6 works because attributes (2) do not appear as children
15274			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
15275				if ( elem.nodeType < 6 ) {
15276					return false;
15277				}
15278			}
15279			return true;
15280		},
15281
15282		"parent": function( elem ) {
15283			return !Expr.pseudos[ "empty" ]( elem );
15284		},
15285
15286		// Element/input types
15287		"header": function( elem ) {
15288			return rheader.test( elem.nodeName );
15289		},
15290
15291		"input": function( elem ) {
15292			return rinputs.test( elem.nodeName );
15293		},
15294
15295		"button": function( elem ) {
15296			var name = elem.nodeName.toLowerCase();
15297			return name === "input" && elem.type === "button" || name === "button";
15298		},
15299
15300		"text": function( elem ) {
15301			var attr;
15302			return elem.nodeName.toLowerCase() === "input" &&
15303				elem.type === "text" &&
15304
15305				// Support: IE <10 only
15306				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
15307				( ( attr = elem.getAttribute( "type" ) ) == null ||
15308					attr.toLowerCase() === "text" );
15309		},
15310
15311		// Position-in-collection
15312		"first": createPositionalPseudo( function() {
15313			return [ 0 ];
15314		} ),
15315
15316		"last": createPositionalPseudo( function( _matchIndexes, length ) {
15317			return [ length - 1 ];
15318		} ),
15319
15320		"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
15321			return [ argument < 0 ? argument + length : argument ];
15322		} ),
15323
15324		"even": createPositionalPseudo( function( matchIndexes, length ) {
15325			var i = 0;
15326			for ( ; i < length; i += 2 ) {
15327				matchIndexes.push( i );
15328			}
15329			return matchIndexes;
15330		} ),
15331
15332		"odd": createPositionalPseudo( function( matchIndexes, length ) {
15333			var i = 1;
15334			for ( ; i < length; i += 2 ) {
15335				matchIndexes.push( i );
15336			}
15337			return matchIndexes;
15338		} ),
15339
15340		"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
15341			var i = argument < 0 ?
15342				argument + length :
15343				argument > length ?
15344					length :
15345					argument;
15346			for ( ; --i >= 0; ) {
15347				matchIndexes.push( i );
15348			}
15349			return matchIndexes;
15350		} ),
15351
15352		"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
15353			var i = argument < 0 ? argument + length : argument;
15354			for ( ; ++i < length; ) {
15355				matchIndexes.push( i );
15356			}
15357			return matchIndexes;
15358		} )
15359	}
15360};
15361
15362Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
15363
15364// Add button/input type pseudos
15365for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
15366	Expr.pseudos[ i ] = createInputPseudo( i );
15367}
15368for ( i in { submit: true, reset: true } ) {
15369	Expr.pseudos[ i ] = createButtonPseudo( i );
15370}
15371
15372// Easy API for creating new setFilters
15373function setFilters() {}
15374setFilters.prototype = Expr.filters = Expr.pseudos;
15375Expr.setFilters = new setFilters();
15376
15377tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
15378	var matched, match, tokens, type,
15379		soFar, groups, preFilters,
15380		cached = tokenCache[ selector + " " ];
15381
15382	if ( cached ) {
15383		return parseOnly ? 0 : cached.slice( 0 );
15384	}
15385
15386	soFar = selector;
15387	groups = [];
15388	preFilters = Expr.preFilter;
15389
15390	while ( soFar ) {
15391
15392		// Comma and first run
15393		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
15394			if ( match ) {
15395
15396				// Don't consume trailing commas as valid
15397				soFar = soFar.slice( match[ 0 ].length ) || soFar;
15398			}
15399			groups.push( ( tokens = [] ) );
15400		}
15401
15402		matched = false;
15403
15404		// Combinators
15405		if ( ( match = rcombinators.exec( soFar ) ) ) {
15406			matched = match.shift();
15407			tokens.push( {
15408				value: matched,
15409
15410				// Cast descendant combinators to space
15411				type: match[ 0 ].replace( rtrim, " " )
15412			} );
15413			soFar = soFar.slice( matched.length );
15414		}
15415
15416		// Filters
15417		for ( type in Expr.filter ) {
15418			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
15419				( match = preFilters[ type ]( match ) ) ) ) {
15420				matched = match.shift();
15421				tokens.push( {
15422					value: matched,
15423					type: type,
15424					matches: match
15425				} );
15426				soFar = soFar.slice( matched.length );
15427			}
15428		}
15429
15430		if ( !matched ) {
15431			break;
15432		}
15433	}
15434
15435	// Return the length of the invalid excess
15436	// if we're just parsing
15437	// Otherwise, throw an error or return tokens
15438	return parseOnly ?
15439		soFar.length :
15440		soFar ?
15441			Sizzle.error( selector ) :
15442
15443			// Cache the tokens
15444			tokenCache( selector, groups ).slice( 0 );
15445};
15446
15447function toSelector( tokens ) {
15448	var i = 0,
15449		len = tokens.length,
15450		selector = "";
15451	for ( ; i < len; i++ ) {
15452		selector += tokens[ i ].value;
15453	}
15454	return selector;
15455}
15456
15457function addCombinator( matcher, combinator, base ) {
15458	var dir = combinator.dir,
15459		skip = combinator.next,
15460		key = skip || dir,
15461		checkNonElements = base && key === "parentNode",
15462		doneName = done++;
15463
15464	return combinator.first ?
15465
15466		// Check against closest ancestor/preceding element
15467		function( elem, context, xml ) {
15468			while ( ( elem = elem[ dir ] ) ) {
15469				if ( elem.nodeType === 1 || checkNonElements ) {
15470					return matcher( elem, context, xml );
15471				}
15472			}
15473			return false;
15474		} :
15475
15476		// Check against all ancestor/preceding elements
15477		function( elem, context, xml ) {
15478			var oldCache, uniqueCache, outerCache,
15479				newCache = [ dirruns, doneName ];
15480
15481			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
15482			if ( xml ) {
15483				while ( ( elem = elem[ dir ] ) ) {
15484					if ( elem.nodeType === 1 || checkNonElements ) {
15485						if ( matcher( elem, context, xml ) ) {
15486							return true;
15487						}
15488					}
15489				}
15490			} else {
15491				while ( ( elem = elem[ dir ] ) ) {
15492					if ( elem.nodeType === 1 || checkNonElements ) {
15493						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
15494
15495						// Support: IE <9 only
15496						// Defend against cloned attroperties (jQuery gh-1709)
15497						uniqueCache = outerCache[ elem.uniqueID ] ||
15498							( outerCache[ elem.uniqueID ] = {} );
15499
15500						if ( skip && skip === elem.nodeName.toLowerCase() ) {
15501							elem = elem[ dir ] || elem;
15502						} else if ( ( oldCache = uniqueCache[ key ] ) &&
15503							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
15504
15505							// Assign to newCache so results back-propagate to previous elements
15506							return ( newCache[ 2 ] = oldCache[ 2 ] );
15507						} else {
15508
15509							// Reuse newcache so results back-propagate to previous elements
15510							uniqueCache[ key ] = newCache;
15511
15512							// A match means we're done; a fail means we have to keep checking
15513							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
15514								return true;
15515							}
15516						}
15517					}
15518				}
15519			}
15520			return false;
15521		};
15522}
15523
15524function elementMatcher( matchers ) {
15525	return matchers.length > 1 ?
15526		function( elem, context, xml ) {
15527			var i = matchers.length;
15528			while ( i-- ) {
15529				if ( !matchers[ i ]( elem, context, xml ) ) {
15530					return false;
15531				}
15532			}
15533			return true;
15534		} :
15535		matchers[ 0 ];
15536}
15537
15538function multipleContexts( selector, contexts, results ) {
15539	var i = 0,
15540		len = contexts.length;
15541	for ( ; i < len; i++ ) {
15542		Sizzle( selector, contexts[ i ], results );
15543	}
15544	return results;
15545}
15546
15547function condense( unmatched, map, filter, context, xml ) {
15548	var elem,
15549		newUnmatched = [],
15550		i = 0,
15551		len = unmatched.length,
15552		mapped = map != null;
15553
15554	for ( ; i < len; i++ ) {
15555		if ( ( elem = unmatched[ i ] ) ) {
15556			if ( !filter || filter( elem, context, xml ) ) {
15557				newUnmatched.push( elem );
15558				if ( mapped ) {
15559					map.push( i );
15560				}
15561			}
15562		}
15563	}
15564
15565	return newUnmatched;
15566}
15567
15568function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
15569	if ( postFilter && !postFilter[ expando ] ) {
15570		postFilter = setMatcher( postFilter );
15571	}
15572	if ( postFinder && !postFinder[ expando ] ) {
15573		postFinder = setMatcher( postFinder, postSelector );
15574	}
15575	return markFunction( function( seed, results, context, xml ) {
15576		var temp, i, elem,
15577			preMap = [],
15578			postMap = [],
15579			preexisting = results.length,
15580
15581			// Get initial elements from seed or context
15582			elems = seed || multipleContexts(
15583				selector || "*",
15584				context.nodeType ? [ context ] : context,
15585				[]
15586			),
15587
15588			// Prefilter to get matcher input, preserving a map for seed-results synchronization
15589			matcherIn = preFilter && ( seed || !selector ) ?
15590				condense( elems, preMap, preFilter, context, xml ) :
15591				elems,
15592
15593			matcherOut = matcher ?
15594
15595				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
15596				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
15597
15598					// ...intermediate processing is necessary
15599					[] :
15600
15601					// ...otherwise use results directly
15602					results :
15603				matcherIn;
15604
15605		// Find primary matches
15606		if ( matcher ) {
15607			matcher( matcherIn, matcherOut, context, xml );
15608		}
15609
15610		// Apply postFilter
15611		if ( postFilter ) {
15612			temp = condense( matcherOut, postMap );
15613			postFilter( temp, [], context, xml );
15614
15615			// Un-match failing elements by moving them back to matcherIn
15616			i = temp.length;
15617			while ( i-- ) {
15618				if ( ( elem = temp[ i ] ) ) {
15619					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
15620				}
15621			}
15622		}
15623
15624		if ( seed ) {
15625			if ( postFinder || preFilter ) {
15626				if ( postFinder ) {
15627
15628					// Get the final matcherOut by condensing this intermediate into postFinder contexts
15629					temp = [];
15630					i = matcherOut.length;
15631					while ( i-- ) {
15632						if ( ( elem = matcherOut[ i ] ) ) {
15633
15634							// Restore matcherIn since elem is not yet a final match
15635							temp.push( ( matcherIn[ i ] = elem ) );
15636						}
15637					}
15638					postFinder( null, ( matcherOut = [] ), temp, xml );
15639				}
15640
15641				// Move matched elements from seed to results to keep them synchronized
15642				i = matcherOut.length;
15643				while ( i-- ) {
15644					if ( ( elem = matcherOut[ i ] ) &&
15645						( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
15646
15647						seed[ temp ] = !( results[ temp ] = elem );
15648					}
15649				}
15650			}
15651
15652		// Add elements to results, through postFinder if defined
15653		} else {
15654			matcherOut = condense(
15655				matcherOut === results ?
15656					matcherOut.splice( preexisting, matcherOut.length ) :
15657					matcherOut
15658			);
15659			if ( postFinder ) {
15660				postFinder( null, results, matcherOut, xml );
15661			} else {
15662				push.apply( results, matcherOut );
15663			}
15664		}
15665	} );
15666}
15667
15668function matcherFromTokens( tokens ) {
15669	var checkContext, matcher, j,
15670		len = tokens.length,
15671		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
15672		implicitRelative = leadingRelative || Expr.relative[ " " ],
15673		i = leadingRelative ? 1 : 0,
15674
15675		// The foundational matcher ensures that elements are reachable from top-level context(s)
15676		matchContext = addCombinator( function( elem ) {
15677			return elem === checkContext;
15678		}, implicitRelative, true ),
15679		matchAnyContext = addCombinator( function( elem ) {
15680			return indexOf( checkContext, elem ) > -1;
15681		}, implicitRelative, true ),
15682		matchers = [ function( elem, context, xml ) {
15683			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
15684				( checkContext = context ).nodeType ?
15685					matchContext( elem, context, xml ) :
15686					matchAnyContext( elem, context, xml ) );
15687
15688			// Avoid hanging onto element (issue #299)
15689			checkContext = null;
15690			return ret;
15691		} ];
15692
15693	for ( ; i < len; i++ ) {
15694		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
15695			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
15696		} else {
15697			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
15698
15699			// Return special upon seeing a positional matcher
15700			if ( matcher[ expando ] ) {
15701
15702				// Find the next relative operator (if any) for proper handling
15703				j = ++i;
15704				for ( ; j < len; j++ ) {
15705					if ( Expr.relative[ tokens[ j ].type ] ) {
15706						break;
15707					}
15708				}
15709				return setMatcher(
15710					i > 1 && elementMatcher( matchers ),
15711					i > 1 && toSelector(
15712
15713					// If the preceding token was a descendant combinator, insert an implicit any-element `*`
15714					tokens
15715						.slice( 0, i - 1 )
15716						.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
15717					).replace( rtrim, "$1" ),
15718					matcher,
15719					i < j && matcherFromTokens( tokens.slice( i, j ) ),
15720					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
15721					j < len && toSelector( tokens )
15722				);
15723			}
15724			matchers.push( matcher );
15725		}
15726	}
15727
15728	return elementMatcher( matchers );
15729}
15730
15731function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
15732	var bySet = setMatchers.length > 0,
15733		byElement = elementMatchers.length > 0,
15734		superMatcher = function( seed, context, xml, results, outermost ) {
15735			var elem, j, matcher,
15736				matchedCount = 0,
15737				i = "0",
15738				unmatched = seed && [],
15739				setMatched = [],
15740				contextBackup = outermostContext,
15741
15742				// We must always have either seed elements or outermost context
15743				elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
15744
15745				// Use integer dirruns iff this is the outermost matcher
15746				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
15747				len = elems.length;
15748
15749			if ( outermost ) {
15750
15751				// Support: IE 11+, Edge 17 - 18+
15752				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
15753				// two documents; shallow comparisons work.
15754				// eslint-disable-next-line eqeqeq
15755				outermostContext = context == document || context || outermost;
15756			}
15757
15758			// Add elements passing elementMatchers directly to results
15759			// Support: IE<9, Safari
15760			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
15761			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
15762				if ( byElement && elem ) {
15763					j = 0;
15764
15765					// Support: IE 11+, Edge 17 - 18+
15766					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
15767					// two documents; shallow comparisons work.
15768					// eslint-disable-next-line eqeqeq
15769					if ( !context && elem.ownerDocument != document ) {
15770						setDocument( elem );
15771						xml = !documentIsHTML;
15772					}
15773					while ( ( matcher = elementMatchers[ j++ ] ) ) {
15774						if ( matcher( elem, context || document, xml ) ) {
15775							results.push( elem );
15776							break;
15777						}
15778					}
15779					if ( outermost ) {
15780						dirruns = dirrunsUnique;
15781					}
15782				}
15783
15784				// Track unmatched elements for set filters
15785				if ( bySet ) {
15786
15787					// They will have gone through all possible matchers
15788					if ( ( elem = !matcher && elem ) ) {
15789						matchedCount--;
15790					}
15791
15792					// Lengthen the array for every element, matched or not
15793					if ( seed ) {
15794						unmatched.push( elem );
15795					}
15796				}
15797			}
15798
15799			// `i` is now the count of elements visited above, and adding it to `matchedCount`
15800			// makes the latter nonnegative.
15801			matchedCount += i;
15802
15803			// Apply set filters to unmatched elements
15804			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
15805			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
15806			// no element matchers and no seed.
15807			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
15808			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
15809			// numerically zero.
15810			if ( bySet && i !== matchedCount ) {
15811				j = 0;
15812				while ( ( matcher = setMatchers[ j++ ] ) ) {
15813					matcher( unmatched, setMatched, context, xml );
15814				}
15815
15816				if ( seed ) {
15817
15818					// Reintegrate element matches to eliminate the need for sorting
15819					if ( matchedCount > 0 ) {
15820						while ( i-- ) {
15821							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
15822								setMatched[ i ] = pop.call( results );
15823							}
15824						}
15825					}
15826
15827					// Discard index placeholder values to get only actual matches
15828					setMatched = condense( setMatched );
15829				}
15830
15831				// Add matches to results
15832				push.apply( results, setMatched );
15833
15834				// Seedless set matches succeeding multiple successful matchers stipulate sorting
15835				if ( outermost && !seed && setMatched.length > 0 &&
15836					( matchedCount + setMatchers.length ) > 1 ) {
15837
15838					Sizzle.uniqueSort( results );
15839				}
15840			}
15841
15842			// Override manipulation of globals by nested matchers
15843			if ( outermost ) {
15844				dirruns = dirrunsUnique;
15845				outermostContext = contextBackup;
15846			}
15847
15848			return unmatched;
15849		};
15850
15851	return bySet ?
15852		markFunction( superMatcher ) :
15853		superMatcher;
15854}
15855
15856compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
15857	var i,
15858		setMatchers = [],
15859		elementMatchers = [],
15860		cached = compilerCache[ selector + " " ];
15861
15862	if ( !cached ) {
15863
15864		// Generate a function of recursive functions that can be used to check each element
15865		if ( !match ) {
15866			match = tokenize( selector );
15867		}
15868		i = match.length;
15869		while ( i-- ) {
15870			cached = matcherFromTokens( match[ i ] );
15871			if ( cached[ expando ] ) {
15872				setMatchers.push( cached );
15873			} else {
15874				elementMatchers.push( cached );
15875			}
15876		}
15877
15878		// Cache the compiled function
15879		cached = compilerCache(
15880			selector,
15881			matcherFromGroupMatchers( elementMatchers, setMatchers )
15882		);
15883
15884		// Save selector and tokenization
15885		cached.selector = selector;
15886	}
15887	return cached;
15888};
15889
15890/**
15891 * A low-level selection function that works with Sizzle's compiled
15892 *  selector functions
15893 * @param {String|Function} selector A selector or a pre-compiled
15894 *  selector function built with Sizzle.compile
15895 * @param {Element} context
15896 * @param {Array} [results]
15897 * @param {Array} [seed] A set of elements to match against
15898 */
15899select = Sizzle.select = function( selector, context, results, seed ) {
15900	var i, tokens, token, type, find,
15901		compiled = typeof selector === "function" && selector,
15902		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
15903
15904	results = results || [];
15905
15906	// Try to minimize operations if there is only one selector in the list and no seed
15907	// (the latter of which guarantees us context)
15908	if ( match.length === 1 ) {
15909
15910		// Reduce context if the leading compound selector is an ID
15911		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
15912		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
15913			context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
15914
15915			context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
15916				.replace( runescape, funescape ), context ) || [] )[ 0 ];
15917			if ( !context ) {
15918				return results;
15919
15920			// Precompiled matchers will still verify ancestry, so step up a level
15921			} else if ( compiled ) {
15922				context = context.parentNode;
15923			}
15924
15925			selector = selector.slice( tokens.shift().value.length );
15926		}
15927
15928		// Fetch a seed set for right-to-left matching
15929		i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
15930		while ( i-- ) {
15931			token = tokens[ i ];
15932
15933			// Abort if we hit a combinator
15934			if ( Expr.relative[ ( type = token.type ) ] ) {
15935				break;
15936			}
15937			if ( ( find = Expr.find[ type ] ) ) {
15938
15939				// Search, expanding context for leading sibling combinators
15940				if ( ( seed = find(
15941					token.matches[ 0 ].replace( runescape, funescape ),
15942					rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
15943						context
15944				) ) ) {
15945
15946					// If seed is empty or no tokens remain, we can return early
15947					tokens.splice( i, 1 );
15948					selector = seed.length && toSelector( tokens );
15949					if ( !selector ) {
15950						push.apply( results, seed );
15951						return results;
15952					}
15953
15954					break;
15955				}
15956			}
15957		}
15958	}
15959
15960	// Compile and execute a filtering function if one is not provided
15961	// Provide `match` to avoid retokenization if we modified the selector above
15962	( compiled || compile( selector, match ) )(
15963		seed,
15964		context,
15965		!documentIsHTML,
15966		results,
15967		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
15968	);
15969	return results;
15970};
15971
15972// One-time assignments
15973
15974// Sort stability
15975support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
15976
15977// Support: Chrome 14-35+
15978// Always assume duplicates if they aren't passed to the comparison function
15979support.detectDuplicates = !!hasDuplicate;
15980
15981// Initialize against the default document
15982setDocument();
15983
15984// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
15985// Detached nodes confoundingly follow *each other*
15986support.sortDetached = assert( function( el ) {
15987
15988	// Should return 1, but returns 4 (following)
15989	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
15990} );
15991
15992// Support: IE<8
15993// Prevent attribute/property "interpolation"
15994// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
15995if ( !assert( function( el ) {
15996	el.innerHTML = "<a href='#'></a>";
15997	return el.firstChild.getAttribute( "href" ) === "#";
15998} ) ) {
15999	addHandle( "type|href|height|width", function( elem, name, isXML ) {
16000		if ( !isXML ) {
16001			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
16002		}
16003	} );
16004}
16005
16006// Support: IE<9
16007// Use defaultValue in place of getAttribute("value")
16008if ( !support.attributes || !assert( function( el ) {
16009	el.innerHTML = "<input/>";
16010	el.firstChild.setAttribute( "value", "" );
16011	return el.firstChild.getAttribute( "value" ) === "";
16012} ) ) {
16013	addHandle( "value", function( elem, _name, isXML ) {
16014		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
16015			return elem.defaultValue;
16016		}
16017	} );
16018}
16019
16020// Support: IE<9
16021// Use getAttributeNode to fetch booleans when getAttribute lies
16022if ( !assert( function( el ) {
16023	return el.getAttribute( "disabled" ) == null;
16024} ) ) {
16025	addHandle( booleans, function( elem, name, isXML ) {
16026		var val;
16027		if ( !isXML ) {
16028			return elem[ name ] === true ? name.toLowerCase() :
16029				( val = elem.getAttributeNode( name ) ) && val.specified ?
16030					val.value :
16031					null;
16032		}
16033	} );
16034}
16035
16036return Sizzle;
16037
16038} )( window );
16039
16040
16041
16042jQuery.find = Sizzle;
16043jQuery.expr = Sizzle.selectors;
16044
16045// Deprecated
16046jQuery.expr[ ":" ] = jQuery.expr.pseudos;
16047jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
16048jQuery.text = Sizzle.getText;
16049jQuery.isXMLDoc = Sizzle.isXML;
16050jQuery.contains = Sizzle.contains;
16051jQuery.escapeSelector = Sizzle.escape;
16052
16053
16054
16055
16056var dir = function( elem, dir, until ) {
16057	var matched = [],
16058		truncate = until !== undefined;
16059
16060	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
16061		if ( elem.nodeType === 1 ) {
16062			if ( truncate && jQuery( elem ).is( until ) ) {
16063				break;
16064			}
16065			matched.push( elem );
16066		}
16067	}
16068	return matched;
16069};
16070
16071
16072var siblings = function( n, elem ) {
16073	var matched = [];
16074
16075	for ( ; n; n = n.nextSibling ) {
16076		if ( n.nodeType === 1 && n !== elem ) {
16077			matched.push( n );
16078		}
16079	}
16080
16081	return matched;
16082};
16083
16084
16085var rneedsContext = jQuery.expr.match.needsContext;
16086
16087
16088
16089function nodeName( elem, name ) {
16090
16091	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
16092
16093}
16094var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
16095
16096
16097
16098// Implement the identical functionality for filter and not
16099function winnow( elements, qualifier, not ) {
16100	if ( isFunction( qualifier ) ) {
16101		return jQuery.grep( elements, function( elem, i ) {
16102			return !!qualifier.call( elem, i, elem ) !== not;
16103		} );
16104	}
16105
16106	// Single element
16107	if ( qualifier.nodeType ) {
16108		return jQuery.grep( elements, function( elem ) {
16109			return ( elem === qualifier ) !== not;
16110		} );
16111	}
16112
16113	// Arraylike of elements (jQuery, arguments, Array)
16114	if ( typeof qualifier !== "string" ) {
16115		return jQuery.grep( elements, function( elem ) {
16116			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
16117		} );
16118	}
16119
16120	// Filtered directly for both simple and complex selectors
16121	return jQuery.filter( qualifier, elements, not );
16122}
16123
16124jQuery.filter = function( expr, elems, not ) {
16125	var elem = elems[ 0 ];
16126
16127	if ( not ) {
16128		expr = ":not(" + expr + ")";
16129	}
16130
16131	if ( elems.length === 1 && elem.nodeType === 1 ) {
16132		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
16133	}
16134
16135	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
16136		return elem.nodeType === 1;
16137	} ) );
16138};
16139
16140jQuery.fn.extend( {
16141	find: function( selector ) {
16142		var i, ret,
16143			len = this.length,
16144			self = this;
16145
16146		if ( typeof selector !== "string" ) {
16147			return this.pushStack( jQuery( selector ).filter( function() {
16148				for ( i = 0; i < len; i++ ) {
16149					if ( jQuery.contains( self[ i ], this ) ) {
16150						return true;
16151					}
16152				}
16153			} ) );
16154		}
16155
16156		ret = this.pushStack( [] );
16157
16158		for ( i = 0; i < len; i++ ) {
16159			jQuery.find( selector, self[ i ], ret );
16160		}
16161
16162		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
16163	},
16164	filter: function( selector ) {
16165		return this.pushStack( winnow( this, selector || [], false ) );
16166	},
16167	not: function( selector ) {
16168		return this.pushStack( winnow( this, selector || [], true ) );
16169	},
16170	is: function( selector ) {
16171		return !!winnow(
16172			this,
16173
16174			// If this is a positional/relative selector, check membership in the returned set
16175			// so $("p:first").is("p:last") won't return true for a doc with two "p".
16176			typeof selector === "string" && rneedsContext.test( selector ) ?
16177				jQuery( selector ) :
16178				selector || [],
16179			false
16180		).length;
16181	}
16182} );
16183
16184
16185// Initialize a jQuery object
16186
16187
16188// A central reference to the root jQuery(document)
16189var rootjQuery,
16190
16191	// A simple way to check for HTML strings
16192	// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
16193	// Strict HTML recognition (trac-11290: must start with <)
16194	// Shortcut simple #id case for speed
16195	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
16196
16197	init = jQuery.fn.init = function( selector, context, root ) {
16198		var match, elem;
16199
16200		// HANDLE: $(""), $(null), $(undefined), $(false)
16201		if ( !selector ) {
16202			return this;
16203		}
16204
16205		// Method init() accepts an alternate rootjQuery
16206		// so migrate can support jQuery.sub (gh-2101)
16207		root = root || rootjQuery;
16208
16209		// Handle HTML strings
16210		if ( typeof selector === "string" ) {
16211			if ( selector[ 0 ] === "<" &&
16212				selector[ selector.length - 1 ] === ">" &&
16213				selector.length >= 3 ) {
16214
16215				// Assume that strings that start and end with <> are HTML and skip the regex check
16216				match = [ null, selector, null ];
16217
16218			} else {
16219				match = rquickExpr.exec( selector );
16220			}
16221
16222			// Match html or make sure no context is specified for #id
16223			if ( match && ( match[ 1 ] || !context ) ) {
16224
16225				// HANDLE: $(html) -> $(array)
16226				if ( match[ 1 ] ) {
16227					context = context instanceof jQuery ? context[ 0 ] : context;
16228
16229					// Option to run scripts is true for back-compat
16230					// Intentionally let the error be thrown if parseHTML is not present
16231					jQuery.merge( this, jQuery.parseHTML(
16232						match[ 1 ],
16233						context && context.nodeType ? context.ownerDocument || context : document,
16234						true
16235					) );
16236
16237					// HANDLE: $(html, props)
16238					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
16239						for ( match in context ) {
16240
16241							// Properties of context are called as methods if possible
16242							if ( isFunction( this[ match ] ) ) {
16243								this[ match ]( context[ match ] );
16244
16245							// ...and otherwise set as attributes
16246							} else {
16247								this.attr( match, context[ match ] );
16248							}
16249						}
16250					}
16251
16252					return this;
16253
16254				// HANDLE: $(#id)
16255				} else {
16256					elem = document.getElementById( match[ 2 ] );
16257
16258					if ( elem ) {
16259
16260						// Inject the element directly into the jQuery object
16261						this[ 0 ] = elem;
16262						this.length = 1;
16263					}
16264					return this;
16265				}
16266
16267			// HANDLE: $(expr, $(...))
16268			} else if ( !context || context.jquery ) {
16269				return ( context || root ).find( selector );
16270
16271			// HANDLE: $(expr, context)
16272			// (which is just equivalent to: $(context).find(expr)
16273			} else {
16274				return this.constructor( context ).find( selector );
16275			}
16276
16277		// HANDLE: $(DOMElement)
16278		} else if ( selector.nodeType ) {
16279			this[ 0 ] = selector;
16280			this.length = 1;
16281			return this;
16282
16283		// HANDLE: $(function)
16284		// Shortcut for document ready
16285		} else if ( isFunction( selector ) ) {
16286			return root.ready !== undefined ?
16287				root.ready( selector ) :
16288
16289				// Execute immediately if ready is not present
16290				selector( jQuery );
16291		}
16292
16293		return jQuery.makeArray( selector, this );
16294	};
16295
16296// Give the init function the jQuery prototype for later instantiation
16297init.prototype = jQuery.fn;
16298
16299// Initialize central reference
16300rootjQuery = jQuery( document );
16301
16302
16303var rparentsprev = /^(?:parents|prev(?:Until|All))/,
16304
16305	// Methods guaranteed to produce a unique set when starting from a unique set
16306	guaranteedUnique = {
16307		children: true,
16308		contents: true,
16309		next: true,
16310		prev: true
16311	};
16312
16313jQuery.fn.extend( {
16314	has: function( target ) {
16315		var targets = jQuery( target, this ),
16316			l = targets.length;
16317
16318		return this.filter( function() {
16319			var i = 0;
16320			for ( ; i < l; i++ ) {
16321				if ( jQuery.contains( this, targets[ i ] ) ) {
16322					return true;
16323				}
16324			}
16325		} );
16326	},
16327
16328	closest: function( selectors, context ) {
16329		var cur,
16330			i = 0,
16331			l = this.length,
16332			matched = [],
16333			targets = typeof selectors !== "string" && jQuery( selectors );
16334
16335		// Positional selectors never match, since there's no _selection_ context
16336		if ( !rneedsContext.test( selectors ) ) {
16337			for ( ; i < l; i++ ) {
16338				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
16339
16340					// Always skip document fragments
16341					if ( cur.nodeType < 11 && ( targets ?
16342						targets.index( cur ) > -1 :
16343
16344						// Don't pass non-elements to Sizzle
16345						cur.nodeType === 1 &&
16346							jQuery.find.matchesSelector( cur, selectors ) ) ) {
16347
16348						matched.push( cur );
16349						break;
16350					}
16351				}
16352			}
16353		}
16354
16355		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
16356	},
16357
16358	// Determine the position of an element within the set
16359	index: function( elem ) {
16360
16361		// No argument, return index in parent
16362		if ( !elem ) {
16363			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
16364		}
16365
16366		// Index in selector
16367		if ( typeof elem === "string" ) {
16368			return indexOf.call( jQuery( elem ), this[ 0 ] );
16369		}
16370
16371		// Locate the position of the desired element
16372		return indexOf.call( this,
16373
16374			// If it receives a jQuery object, the first element is used
16375			elem.jquery ? elem[ 0 ] : elem
16376		);
16377	},
16378
16379	add: function( selector, context ) {
16380		return this.pushStack(
16381			jQuery.uniqueSort(
16382				jQuery.merge( this.get(), jQuery( selector, context ) )
16383			)
16384		);
16385	},
16386
16387	addBack: function( selector ) {
16388		return this.add( selector == null ?
16389			this.prevObject : this.prevObject.filter( selector )
16390		);
16391	}
16392} );
16393
16394function sibling( cur, dir ) {
16395	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
16396	return cur;
16397}
16398
16399jQuery.each( {
16400	parent: function( elem ) {
16401		var parent = elem.parentNode;
16402		return parent && parent.nodeType !== 11 ? parent : null;
16403	},
16404	parents: function( elem ) {
16405		return dir( elem, "parentNode" );
16406	},
16407	parentsUntil: function( elem, _i, until ) {
16408		return dir( elem, "parentNode", until );
16409	},
16410	next: function( elem ) {
16411		return sibling( elem, "nextSibling" );
16412	},
16413	prev: function( elem ) {
16414		return sibling( elem, "previousSibling" );
16415	},
16416	nextAll: function( elem ) {
16417		return dir( elem, "nextSibling" );
16418	},
16419	prevAll: function( elem ) {
16420		return dir( elem, "previousSibling" );
16421	},
16422	nextUntil: function( elem, _i, until ) {
16423		return dir( elem, "nextSibling", until );
16424	},
16425	prevUntil: function( elem, _i, until ) {
16426		return dir( elem, "previousSibling", until );
16427	},
16428	siblings: function( elem ) {
16429		return siblings( ( elem.parentNode || {} ).firstChild, elem );
16430	},
16431	children: function( elem ) {
16432		return siblings( elem.firstChild );
16433	},
16434	contents: function( elem ) {
16435		if ( elem.contentDocument != null &&
16436
16437			// Support: IE 11+
16438			// <object> elements with no `data` attribute has an object
16439			// `contentDocument` with a `null` prototype.
16440			getProto( elem.contentDocument ) ) {
16441
16442			return elem.contentDocument;
16443		}
16444
16445		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
16446		// Treat the template element as a regular one in browsers that
16447		// don't support it.
16448		if ( nodeName( elem, "template" ) ) {
16449			elem = elem.content || elem;
16450		}
16451
16452		return jQuery.merge( [], elem.childNodes );
16453	}
16454}, function( name, fn ) {
16455	jQuery.fn[ name ] = function( until, selector ) {
16456		var matched = jQuery.map( this, fn, until );
16457
16458		if ( name.slice( -5 ) !== "Until" ) {
16459			selector = until;
16460		}
16461
16462		if ( selector && typeof selector === "string" ) {
16463			matched = jQuery.filter( selector, matched );
16464		}
16465
16466		if ( this.length > 1 ) {
16467
16468			// Remove duplicates
16469			if ( !guaranteedUnique[ name ] ) {
16470				jQuery.uniqueSort( matched );
16471			}
16472
16473			// Reverse order for parents* and prev-derivatives
16474			if ( rparentsprev.test( name ) ) {
16475				matched.reverse();
16476			}
16477		}
16478
16479		return this.pushStack( matched );
16480	};
16481} );
16482var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
16483
16484
16485
16486// Convert String-formatted options into Object-formatted ones
16487function createOptions( options ) {
16488	var object = {};
16489	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
16490		object[ flag ] = true;
16491	} );
16492	return object;
16493}
16494
16495/*
16496 * Create a callback list using the following parameters:
16497 *
16498 *	options: an optional list of space-separated options that will change how
16499 *			the callback list behaves or a more traditional option object
16500 *
16501 * By default a callback list will act like an event callback list and can be
16502 * "fired" multiple times.
16503 *
16504 * Possible options:
16505 *
16506 *	once:			will ensure the callback list can only be fired once (like a Deferred)
16507 *
16508 *	memory:			will keep track of previous values and will call any callback added
16509 *					after the list has been fired right away with the latest "memorized"
16510 *					values (like a Deferred)
16511 *
16512 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
16513 *
16514 *	stopOnFalse:	interrupt callings when a callback returns false
16515 *
16516 */
16517jQuery.Callbacks = function( options ) {
16518
16519	// Convert options from String-formatted to Object-formatted if needed
16520	// (we check in cache first)
16521	options = typeof options === "string" ?
16522		createOptions( options ) :
16523		jQuery.extend( {}, options );
16524
16525	var // Flag to know if list is currently firing
16526		firing,
16527
16528		// Last fire value for non-forgettable lists
16529		memory,
16530
16531		// Flag to know if list was already fired
16532		fired,
16533
16534		// Flag to prevent firing
16535		locked,
16536
16537		// Actual callback list
16538		list = [],
16539
16540		// Queue of execution data for repeatable lists
16541		queue = [],
16542
16543		// Index of currently firing callback (modified by add/remove as needed)
16544		firingIndex = -1,
16545
16546		// Fire callbacks
16547		fire = function() {
16548
16549			// Enforce single-firing
16550			locked = locked || options.once;
16551
16552			// Execute callbacks for all pending executions,
16553			// respecting firingIndex overrides and runtime changes
16554			fired = firing = true;
16555			for ( ; queue.length; firingIndex = -1 ) {
16556				memory = queue.shift();
16557				while ( ++firingIndex < list.length ) {
16558
16559					// Run callback and check for early termination
16560					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
16561						options.stopOnFalse ) {
16562
16563						// Jump to end and forget the data so .add doesn't re-fire
16564						firingIndex = list.length;
16565						memory = false;
16566					}
16567				}
16568			}
16569
16570			// Forget the data if we're done with it
16571			if ( !options.memory ) {
16572				memory = false;
16573			}
16574
16575			firing = false;
16576
16577			// Clean up if we're done firing for good
16578			if ( locked ) {
16579
16580				// Keep an empty list if we have data for future add calls
16581				if ( memory ) {
16582					list = [];
16583
16584				// Otherwise, this object is spent
16585				} else {
16586					list = "";
16587				}
16588			}
16589		},
16590
16591		// Actual Callbacks object
16592		self = {
16593
16594			// Add a callback or a collection of callbacks to the list
16595			add: function() {
16596				if ( list ) {
16597
16598					// If we have memory from a past run, we should fire after adding
16599					if ( memory && !firing ) {
16600						firingIndex = list.length - 1;
16601						queue.push( memory );
16602					}
16603
16604					( function add( args ) {
16605						jQuery.each( args, function( _, arg ) {
16606							if ( isFunction( arg ) ) {
16607								if ( !options.unique || !self.has( arg ) ) {
16608									list.push( arg );
16609								}
16610							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
16611
16612								// Inspect recursively
16613								add( arg );
16614							}
16615						} );
16616					} )( arguments );
16617
16618					if ( memory && !firing ) {
16619						fire();
16620					}
16621				}
16622				return this;
16623			},
16624
16625			// Remove a callback from the list
16626			remove: function() {
16627				jQuery.each( arguments, function( _, arg ) {
16628					var index;
16629					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
16630						list.splice( index, 1 );
16631
16632						// Handle firing indexes
16633						if ( index <= firingIndex ) {
16634							firingIndex--;
16635						}
16636					}
16637				} );
16638				return this;
16639			},
16640
16641			// Check if a given callback is in the list.
16642			// If no argument is given, return whether or not list has callbacks attached.
16643			has: function( fn ) {
16644				return fn ?
16645					jQuery.inArray( fn, list ) > -1 :
16646					list.length > 0;
16647			},
16648
16649			// Remove all callbacks from the list
16650			empty: function() {
16651				if ( list ) {
16652					list = [];
16653				}
16654				return this;
16655			},
16656
16657			// Disable .fire and .add
16658			// Abort any current/pending executions
16659			// Clear all callbacks and values
16660			disable: function() {
16661				locked = queue = [];
16662				list = memory = "";
16663				return this;
16664			},
16665			disabled: function() {
16666				return !list;
16667			},
16668
16669			// Disable .fire
16670			// Also disable .add unless we have memory (since it would have no effect)
16671			// Abort any pending executions
16672			lock: function() {
16673				locked = queue = [];
16674				if ( !memory && !firing ) {
16675					list = memory = "";
16676				}
16677				return this;
16678			},
16679			locked: function() {
16680				return !!locked;
16681			},
16682
16683			// Call all callbacks with the given context and arguments
16684			fireWith: function( context, args ) {
16685				if ( !locked ) {
16686					args = args || [];
16687					args = [ context, args.slice ? args.slice() : args ];
16688					queue.push( args );
16689					if ( !firing ) {
16690						fire();
16691					}
16692				}
16693				return this;
16694			},
16695
16696			// Call all the callbacks with the given arguments
16697			fire: function() {
16698				self.fireWith( this, arguments );
16699				return this;
16700			},
16701
16702			// To know if the callbacks have already been called at least once
16703			fired: function() {
16704				return !!fired;
16705			}
16706		};
16707
16708	return self;
16709};
16710
16711
16712function Identity( v ) {
16713	return v;
16714}
16715function Thrower( ex ) {
16716	throw ex;
16717}
16718
16719function adoptValue( value, resolve, reject, noValue ) {
16720	var method;
16721
16722	try {
16723
16724		// Check for promise aspect first to privilege synchronous behavior
16725		if ( value && isFunction( ( method = value.promise ) ) ) {
16726			method.call( value ).done( resolve ).fail( reject );
16727
16728		// Other thenables
16729		} else if ( value && isFunction( ( method = value.then ) ) ) {
16730			method.call( value, resolve, reject );
16731
16732		// Other non-thenables
16733		} else {
16734
16735			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
16736			// * false: [ value ].slice( 0 ) => resolve( value )
16737			// * true: [ value ].slice( 1 ) => resolve()
16738			resolve.apply( undefined, [ value ].slice( noValue ) );
16739		}
16740
16741	// For Promises/A+, convert exceptions into rejections
16742	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
16743	// Deferred#then to conditionally suppress rejection.
16744	} catch ( value ) {
16745
16746		// Support: Android 4.0 only
16747		// Strict mode functions invoked without .call/.apply get global-object context
16748		reject.apply( undefined, [ value ] );
16749	}
16750}
16751
16752jQuery.extend( {
16753
16754	Deferred: function( func ) {
16755		var tuples = [
16756
16757				// action, add listener, callbacks,
16758				// ... .then handlers, argument index, [final state]
16759				[ "notify", "progress", jQuery.Callbacks( "memory" ),
16760					jQuery.Callbacks( "memory" ), 2 ],
16761				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
16762					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
16763				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
16764					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
16765			],
16766			state = "pending",
16767			promise = {
16768				state: function() {
16769					return state;
16770				},
16771				always: function() {
16772					deferred.done( arguments ).fail( arguments );
16773					return this;
16774				},
16775				"catch": function( fn ) {
16776					return promise.then( null, fn );
16777				},
16778
16779				// Keep pipe for back-compat
16780				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
16781					var fns = arguments;
16782
16783					return jQuery.Deferred( function( newDefer ) {
16784						jQuery.each( tuples, function( _i, tuple ) {
16785
16786							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
16787							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
16788
16789							// deferred.progress(function() { bind to newDefer or newDefer.notify })
16790							// deferred.done(function() { bind to newDefer or newDefer.resolve })
16791							// deferred.fail(function() { bind to newDefer or newDefer.reject })
16792							deferred[ tuple[ 1 ] ]( function() {
16793								var returned = fn && fn.apply( this, arguments );
16794								if ( returned && isFunction( returned.promise ) ) {
16795									returned.promise()
16796										.progress( newDefer.notify )
16797										.done( newDefer.resolve )
16798										.fail( newDefer.reject );
16799								} else {
16800									newDefer[ tuple[ 0 ] + "With" ](
16801										this,
16802										fn ? [ returned ] : arguments
16803									);
16804								}
16805							} );
16806						} );
16807						fns = null;
16808					} ).promise();
16809				},
16810				then: function( onFulfilled, onRejected, onProgress ) {
16811					var maxDepth = 0;
16812					function resolve( depth, deferred, handler, special ) {
16813						return function() {
16814							var that = this,
16815								args = arguments,
16816								mightThrow = function() {
16817									var returned, then;
16818
16819									// Support: Promises/A+ section 2.3.3.3.3
16820									// https://promisesaplus.com/#point-59
16821									// Ignore double-resolution attempts
16822									if ( depth < maxDepth ) {
16823										return;
16824									}
16825
16826									returned = handler.apply( that, args );
16827
16828									// Support: Promises/A+ section 2.3.1
16829									// https://promisesaplus.com/#point-48
16830									if ( returned === deferred.promise() ) {
16831										throw new TypeError( "Thenable self-resolution" );
16832									}
16833
16834									// Support: Promises/A+ sections 2.3.3.1, 3.5
16835									// https://promisesaplus.com/#point-54
16836									// https://promisesaplus.com/#point-75
16837									// Retrieve `then` only once
16838									then = returned &&
16839
16840										// Support: Promises/A+ section 2.3.4
16841										// https://promisesaplus.com/#point-64
16842										// Only check objects and functions for thenability
16843										( typeof returned === "object" ||
16844											typeof returned === "function" ) &&
16845										returned.then;
16846
16847									// Handle a returned thenable
16848									if ( isFunction( then ) ) {
16849
16850										// Special processors (notify) just wait for resolution
16851										if ( special ) {
16852											then.call(
16853												returned,
16854												resolve( maxDepth, deferred, Identity, special ),
16855												resolve( maxDepth, deferred, Thrower, special )
16856											);
16857
16858										// Normal processors (resolve) also hook into progress
16859										} else {
16860
16861											// ...and disregard older resolution values
16862											maxDepth++;
16863
16864											then.call(
16865												returned,
16866												resolve( maxDepth, deferred, Identity, special ),
16867												resolve( maxDepth, deferred, Thrower, special ),
16868												resolve( maxDepth, deferred, Identity,
16869													deferred.notifyWith )
16870											);
16871										}
16872
16873									// Handle all other returned values
16874									} else {
16875
16876										// Only substitute handlers pass on context
16877										// and multiple values (non-spec behavior)
16878										if ( handler !== Identity ) {
16879											that = undefined;
16880											args = [ returned ];
16881										}
16882
16883										// Process the value(s)
16884										// Default process is resolve
16885										( special || deferred.resolveWith )( that, args );
16886									}
16887								},
16888
16889								// Only normal processors (resolve) catch and reject exceptions
16890								process = special ?
16891									mightThrow :
16892									function() {
16893										try {
16894											mightThrow();
16895										} catch ( e ) {
16896
16897											if ( jQuery.Deferred.exceptionHook ) {
16898												jQuery.Deferred.exceptionHook( e,
16899													process.stackTrace );
16900											}
16901
16902											// Support: Promises/A+ section 2.3.3.3.4.1
16903											// https://promisesaplus.com/#point-61
16904											// Ignore post-resolution exceptions
16905											if ( depth + 1 >= maxDepth ) {
16906
16907												// Only substitute handlers pass on context
16908												// and multiple values (non-spec behavior)
16909												if ( handler !== Thrower ) {
16910													that = undefined;
16911													args = [ e ];
16912												}
16913
16914												deferred.rejectWith( that, args );
16915											}
16916										}
16917									};
16918
16919							// Support: Promises/A+ section 2.3.3.3.1
16920							// https://promisesaplus.com/#point-57
16921							// Re-resolve promises immediately to dodge false rejection from
16922							// subsequent errors
16923							if ( depth ) {
16924								process();
16925							} else {
16926
16927								// Call an optional hook to record the stack, in case of exception
16928								// since it's otherwise lost when execution goes async
16929								if ( jQuery.Deferred.getStackHook ) {
16930									process.stackTrace = jQuery.Deferred.getStackHook();
16931								}
16932								window.setTimeout( process );
16933							}
16934						};
16935					}
16936
16937					return jQuery.Deferred( function( newDefer ) {
16938
16939						// progress_handlers.add( ... )
16940						tuples[ 0 ][ 3 ].add(
16941							resolve(
16942								0,
16943								newDefer,
16944								isFunction( onProgress ) ?
16945									onProgress :
16946									Identity,
16947								newDefer.notifyWith
16948							)
16949						);
16950
16951						// fulfilled_handlers.add( ... )
16952						tuples[ 1 ][ 3 ].add(
16953							resolve(
16954								0,
16955								newDefer,
16956								isFunction( onFulfilled ) ?
16957									onFulfilled :
16958									Identity
16959							)
16960						);
16961
16962						// rejected_handlers.add( ... )
16963						tuples[ 2 ][ 3 ].add(
16964							resolve(
16965								0,
16966								newDefer,
16967								isFunction( onRejected ) ?
16968									onRejected :
16969									Thrower
16970							)
16971						);
16972					} ).promise();
16973				},
16974
16975				// Get a promise for this deferred
16976				// If obj is provided, the promise aspect is added to the object
16977				promise: function( obj ) {
16978					return obj != null ? jQuery.extend( obj, promise ) : promise;
16979				}
16980			},
16981			deferred = {};
16982
16983		// Add list-specific methods
16984		jQuery.each( tuples, function( i, tuple ) {
16985			var list = tuple[ 2 ],
16986				stateString = tuple[ 5 ];
16987
16988			// promise.progress = list.add
16989			// promise.done = list.add
16990			// promise.fail = list.add
16991			promise[ tuple[ 1 ] ] = list.add;
16992
16993			// Handle state
16994			if ( stateString ) {
16995				list.add(
16996					function() {
16997
16998						// state = "resolved" (i.e., fulfilled)
16999						// state = "rejected"
17000						state = stateString;
17001					},
17002
17003					// rejected_callbacks.disable
17004					// fulfilled_callbacks.disable
17005					tuples[ 3 - i ][ 2 ].disable,
17006
17007					// rejected_handlers.disable
17008					// fulfilled_handlers.disable
17009					tuples[ 3 - i ][ 3 ].disable,
17010
17011					// progress_callbacks.lock
17012					tuples[ 0 ][ 2 ].lock,
17013
17014					// progress_handlers.lock
17015					tuples[ 0 ][ 3 ].lock
17016				);
17017			}
17018
17019			// progress_handlers.fire
17020			// fulfilled_handlers.fire
17021			// rejected_handlers.fire
17022			list.add( tuple[ 3 ].fire );
17023
17024			// deferred.notify = function() { deferred.notifyWith(...) }
17025			// deferred.resolve = function() { deferred.resolveWith(...) }
17026			// deferred.reject = function() { deferred.rejectWith(...) }
17027			deferred[ tuple[ 0 ] ] = function() {
17028				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
17029				return this;
17030			};
17031
17032			// deferred.notifyWith = list.fireWith
17033			// deferred.resolveWith = list.fireWith
17034			// deferred.rejectWith = list.fireWith
17035			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
17036		} );
17037
17038		// Make the deferred a promise
17039		promise.promise( deferred );
17040
17041		// Call given func if any
17042		if ( func ) {
17043			func.call( deferred, deferred );
17044		}
17045
17046		// All done!
17047		return deferred;
17048	},
17049
17050	// Deferred helper
17051	when: function( singleValue ) {
17052		var
17053
17054			// count of uncompleted subordinates
17055			remaining = arguments.length,
17056
17057			// count of unprocessed arguments
17058			i = remaining,
17059
17060			// subordinate fulfillment data
17061			resolveContexts = Array( i ),
17062			resolveValues = slice.call( arguments ),
17063
17064			// the primary Deferred
17065			primary = jQuery.Deferred(),
17066
17067			// subordinate callback factory
17068			updateFunc = function( i ) {
17069				return function( value ) {
17070					resolveContexts[ i ] = this;
17071					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
17072					if ( !( --remaining ) ) {
17073						primary.resolveWith( resolveContexts, resolveValues );
17074					}
17075				};
17076			};
17077
17078		// Single- and empty arguments are adopted like Promise.resolve
17079		if ( remaining <= 1 ) {
17080			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
17081				!remaining );
17082
17083			// Use .then() to unwrap secondary thenables (cf. gh-3000)
17084			if ( primary.state() === "pending" ||
17085				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
17086
17087				return primary.then();
17088			}
17089		}
17090
17091		// Multiple arguments are aggregated like Promise.all array elements
17092		while ( i-- ) {
17093			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
17094		}
17095
17096		return primary.promise();
17097	}
17098} );
17099
17100
17101// These usually indicate a programmer mistake during development,
17102// warn about them ASAP rather than swallowing them by default.
17103var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
17104
17105jQuery.Deferred.exceptionHook = function( error, stack ) {
17106
17107	// Support: IE 8 - 9 only
17108	// Console exists when dev tools are open, which can happen at any time
17109	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
17110		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
17111	}
17112};
17113
17114
17115
17116
17117jQuery.readyException = function( error ) {
17118	window.setTimeout( function() {
17119		throw error;
17120	} );
17121};
17122
17123
17124
17125
17126// The deferred used on DOM ready
17127var readyList = jQuery.Deferred();
17128
17129jQuery.fn.ready = function( fn ) {
17130
17131	readyList
17132		.then( fn )
17133
17134		// Wrap jQuery.readyException in a function so that the lookup
17135		// happens at the time of error handling instead of callback
17136		// registration.
17137		.catch( function( error ) {
17138			jQuery.readyException( error );
17139		} );
17140
17141	return this;
17142};
17143
17144jQuery.extend( {
17145
17146	// Is the DOM ready to be used? Set to true once it occurs.
17147	isReady: false,
17148
17149	// A counter to track how many items to wait for before
17150	// the ready event fires. See trac-6781
17151	readyWait: 1,
17152
17153	// Handle when the DOM is ready
17154	ready: function( wait ) {
17155
17156		// Abort if there are pending holds or we're already ready
17157		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
17158			return;
17159		}
17160
17161		// Remember that the DOM is ready
17162		jQuery.isReady = true;
17163
17164		// If a normal DOM Ready event fired, decrement, and wait if need be
17165		if ( wait !== true && --jQuery.readyWait > 0 ) {
17166			return;
17167		}
17168
17169		// If there are functions bound, to execute
17170		readyList.resolveWith( document, [ jQuery ] );
17171	}
17172} );
17173
17174jQuery.ready.then = readyList.then;
17175
17176// The ready event handler and self cleanup method
17177function completed() {
17178	document.removeEventListener( "DOMContentLoaded", completed );
17179	window.removeEventListener( "load", completed );
17180	jQuery.ready();
17181}
17182
17183// Catch cases where $(document).ready() is called
17184// after the browser event has already occurred.
17185// Support: IE <=9 - 10 only
17186// Older IE sometimes signals "interactive" too soon
17187if ( document.readyState === "complete" ||
17188	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
17189
17190	// Handle it asynchronously to allow scripts the opportunity to delay ready
17191	window.setTimeout( jQuery.ready );
17192
17193} else {
17194
17195	// Use the handy event callback
17196	document.addEventListener( "DOMContentLoaded", completed );
17197
17198	// A fallback to window.onload, that will always work
17199	window.addEventListener( "load", completed );
17200}
17201
17202
17203
17204
17205// Multifunctional method to get and set values of a collection
17206// The value/s can optionally be executed if it's a function
17207var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
17208	var i = 0,
17209		len = elems.length,
17210		bulk = key == null;
17211
17212	// Sets many values
17213	if ( toType( key ) === "object" ) {
17214		chainable = true;
17215		for ( i in key ) {
17216			access( elems, fn, i, key[ i ], true, emptyGet, raw );
17217		}
17218
17219	// Sets one value
17220	} else if ( value !== undefined ) {
17221		chainable = true;
17222
17223		if ( !isFunction( value ) ) {
17224			raw = true;
17225		}
17226
17227		if ( bulk ) {
17228
17229			// Bulk operations run against the entire set
17230			if ( raw ) {
17231				fn.call( elems, value );
17232				fn = null;
17233
17234			// ...except when executing function values
17235			} else {
17236				bulk = fn;
17237				fn = function( elem, _key, value ) {
17238					return bulk.call( jQuery( elem ), value );
17239				};
17240			}
17241		}
17242
17243		if ( fn ) {
17244			for ( ; i < len; i++ ) {
17245				fn(
17246					elems[ i ], key, raw ?
17247						value :
17248						value.call( elems[ i ], i, fn( elems[ i ], key ) )
17249				);
17250			}
17251		}
17252	}
17253
17254	if ( chainable ) {
17255		return elems;
17256	}
17257
17258	// Gets
17259	if ( bulk ) {
17260		return fn.call( elems );
17261	}
17262
17263	return len ? fn( elems[ 0 ], key ) : emptyGet;
17264};
17265
17266
17267// Matches dashed string for camelizing
17268var rmsPrefix = /^-ms-/,
17269	rdashAlpha = /-([a-z])/g;
17270
17271// Used by camelCase as callback to replace()
17272function fcamelCase( _all, letter ) {
17273	return letter.toUpperCase();
17274}
17275
17276// Convert dashed to camelCase; used by the css and data modules
17277// Support: IE <=9 - 11, Edge 12 - 15
17278// Microsoft forgot to hump their vendor prefix (trac-9572)
17279function camelCase( string ) {
17280	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
17281}
17282var acceptData = function( owner ) {
17283
17284	// Accepts only:
17285	//  - Node
17286	//    - Node.ELEMENT_NODE
17287	//    - Node.DOCUMENT_NODE
17288	//  - Object
17289	//    - Any
17290	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
17291};
17292
17293
17294
17295
17296function Data() {
17297	this.expando = jQuery.expando + Data.uid++;
17298}
17299
17300Data.uid = 1;
17301
17302Data.prototype = {
17303
17304	cache: function( owner ) {
17305
17306		// Check if the owner object already has a cache
17307		var value = owner[ this.expando ];
17308
17309		// If not, create one
17310		if ( !value ) {
17311			value = {};
17312
17313			// We can accept data for non-element nodes in modern browsers,
17314			// but we should not, see trac-8335.
17315			// Always return an empty object.
17316			if ( acceptData( owner ) ) {
17317
17318				// If it is a node unlikely to be stringify-ed or looped over
17319				// use plain assignment
17320				if ( owner.nodeType ) {
17321					owner[ this.expando ] = value;
17322
17323				// Otherwise secure it in a non-enumerable property
17324				// configurable must be true to allow the property to be
17325				// deleted when data is removed
17326				} else {
17327					Object.defineProperty( owner, this.expando, {
17328						value: value,
17329						configurable: true
17330					} );
17331				}
17332			}
17333		}
17334
17335		return value;
17336	},
17337	set: function( owner, data, value ) {
17338		var prop,
17339			cache = this.cache( owner );
17340
17341		// Handle: [ owner, key, value ] args
17342		// Always use camelCase key (gh-2257)
17343		if ( typeof data === "string" ) {
17344			cache[ camelCase( data ) ] = value;
17345
17346		// Handle: [ owner, { properties } ] args
17347		} else {
17348
17349			// Copy the properties one-by-one to the cache object
17350			for ( prop in data ) {
17351				cache[ camelCase( prop ) ] = data[ prop ];
17352			}
17353		}
17354		return cache;
17355	},
17356	get: function( owner, key ) {
17357		return key === undefined ?
17358			this.cache( owner ) :
17359
17360			// Always use camelCase key (gh-2257)
17361			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
17362	},
17363	access: function( owner, key, value ) {
17364
17365		// In cases where either:
17366		//
17367		//   1. No key was specified
17368		//   2. A string key was specified, but no value provided
17369		//
17370		// Take the "read" path and allow the get method to determine
17371		// which value to return, respectively either:
17372		//
17373		//   1. The entire cache object
17374		//   2. The data stored at the key
17375		//
17376		if ( key === undefined ||
17377				( ( key && typeof key === "string" ) && value === undefined ) ) {
17378
17379			return this.get( owner, key );
17380		}
17381
17382		// When the key is not a string, or both a key and value
17383		// are specified, set or extend (existing objects) with either:
17384		//
17385		//   1. An object of properties
17386		//   2. A key and value
17387		//
17388		this.set( owner, key, value );
17389
17390		// Since the "set" path can have two possible entry points
17391		// return the expected data based on which path was taken[*]
17392		return value !== undefined ? value : key;
17393	},
17394	remove: function( owner, key ) {
17395		var i,
17396			cache = owner[ this.expando ];
17397
17398		if ( cache === undefined ) {
17399			return;
17400		}
17401
17402		if ( key !== undefined ) {
17403
17404			// Support array or space separated string of keys
17405			if ( Array.isArray( key ) ) {
17406
17407				// If key is an array of keys...
17408				// We always set camelCase keys, so remove that.
17409				key = key.map( camelCase );
17410			} else {
17411				key = camelCase( key );
17412
17413				// If a key with the spaces exists, use it.
17414				// Otherwise, create an array by matching non-whitespace
17415				key = key in cache ?
17416					[ key ] :
17417					( key.match( rnothtmlwhite ) || [] );
17418			}
17419
17420			i = key.length;
17421
17422			while ( i-- ) {
17423				delete cache[ key[ i ] ];
17424			}
17425		}
17426
17427		// Remove the expando if there's no more data
17428		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
17429
17430			// Support: Chrome <=35 - 45
17431			// Webkit & Blink performance suffers when deleting properties
17432			// from DOM nodes, so set to undefined instead
17433			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
17434			if ( owner.nodeType ) {
17435				owner[ this.expando ] = undefined;
17436			} else {
17437				delete owner[ this.expando ];
17438			}
17439		}
17440	},
17441	hasData: function( owner ) {
17442		var cache = owner[ this.expando ];
17443		return cache !== undefined && !jQuery.isEmptyObject( cache );
17444	}
17445};
17446var dataPriv = new Data();
17447
17448var dataUser = new Data();
17449
17450
17451
17452//	Implementation Summary
17453//
17454//	1. Enforce API surface and semantic compatibility with 1.9.x branch
17455//	2. Improve the module's maintainability by reducing the storage
17456//		paths to a single mechanism.
17457//	3. Use the same single mechanism to support "private" and "user" data.
17458//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
17459//	5. Avoid exposing implementation details on user objects (eg. expando properties)
17460//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
17461
17462var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
17463	rmultiDash = /[A-Z]/g;
17464
17465function getData( data ) {
17466	if ( data === "true" ) {
17467		return true;
17468	}
17469
17470	if ( data === "false" ) {
17471		return false;
17472	}
17473
17474	if ( data === "null" ) {
17475		return null;
17476	}
17477
17478	// Only convert to a number if it doesn't change the string
17479	if ( data === +data + "" ) {
17480		return +data;
17481	}
17482
17483	if ( rbrace.test( data ) ) {
17484		return JSON.parse( data );
17485	}
17486
17487	return data;
17488}
17489
17490function dataAttr( elem, key, data ) {
17491	var name;
17492
17493	// If nothing was found internally, try to fetch any
17494	// data from the HTML5 data-* attribute
17495	if ( data === undefined && elem.nodeType === 1 ) {
17496		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
17497		data = elem.getAttribute( name );
17498
17499		if ( typeof data === "string" ) {
17500			try {
17501				data = getData( data );
17502			} catch ( e ) {}
17503
17504			// Make sure we set the data so it isn't changed later
17505			dataUser.set( elem, key, data );
17506		} else {
17507			data = undefined;
17508		}
17509	}
17510	return data;
17511}
17512
17513jQuery.extend( {
17514	hasData: function( elem ) {
17515		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
17516	},
17517
17518	data: function( elem, name, data ) {
17519		return dataUser.access( elem, name, data );
17520	},
17521
17522	removeData: function( elem, name ) {
17523		dataUser.remove( elem, name );
17524	},
17525
17526	// TODO: Now that all calls to _data and _removeData have been replaced
17527	// with direct calls to dataPriv methods, these can be deprecated.
17528	_data: function( elem, name, data ) {
17529		return dataPriv.access( elem, name, data );
17530	},
17531
17532	_removeData: function( elem, name ) {
17533		dataPriv.remove( elem, name );
17534	}
17535} );
17536
17537jQuery.fn.extend( {
17538	data: function( key, value ) {
17539		var i, name, data,
17540			elem = this[ 0 ],
17541			attrs = elem && elem.attributes;
17542
17543		// Gets all values
17544		if ( key === undefined ) {
17545			if ( this.length ) {
17546				data = dataUser.get( elem );
17547
17548				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
17549					i = attrs.length;
17550					while ( i-- ) {
17551
17552						// Support: IE 11 only
17553						// The attrs elements can be null (trac-14894)
17554						if ( attrs[ i ] ) {
17555							name = attrs[ i ].name;
17556							if ( name.indexOf( "data-" ) === 0 ) {
17557								name = camelCase( name.slice( 5 ) );
17558								dataAttr( elem, name, data[ name ] );
17559							}
17560						}
17561					}
17562					dataPriv.set( elem, "hasDataAttrs", true );
17563				}
17564			}
17565
17566			return data;
17567		}
17568
17569		// Sets multiple values
17570		if ( typeof key === "object" ) {
17571			return this.each( function() {
17572				dataUser.set( this, key );
17573			} );
17574		}
17575
17576		return access( this, function( value ) {
17577			var data;
17578
17579			// The calling jQuery object (element matches) is not empty
17580			// (and therefore has an element appears at this[ 0 ]) and the
17581			// `value` parameter was not undefined. An empty jQuery object
17582			// will result in `undefined` for elem = this[ 0 ] which will
17583			// throw an exception if an attempt to read a data cache is made.
17584			if ( elem && value === undefined ) {
17585
17586				// Attempt to get data from the cache
17587				// The key will always be camelCased in Data
17588				data = dataUser.get( elem, key );
17589				if ( data !== undefined ) {
17590					return data;
17591				}
17592
17593				// Attempt to "discover" the data in
17594				// HTML5 custom data-* attrs
17595				data = dataAttr( elem, key );
17596				if ( data !== undefined ) {
17597					return data;
17598				}
17599
17600				// We tried really hard, but the data doesn't exist.
17601				return;
17602			}
17603
17604			// Set the data...
17605			this.each( function() {
17606
17607				// We always store the camelCased key
17608				dataUser.set( this, key, value );
17609			} );
17610		}, null, value, arguments.length > 1, null, true );
17611	},
17612
17613	removeData: function( key ) {
17614		return this.each( function() {
17615			dataUser.remove( this, key );
17616		} );
17617	}
17618} );
17619
17620
17621jQuery.extend( {
17622	queue: function( elem, type, data ) {
17623		var queue;
17624
17625		if ( elem ) {
17626			type = ( type || "fx" ) + "queue";
17627			queue = dataPriv.get( elem, type );
17628
17629			// Speed up dequeue by getting out quickly if this is just a lookup
17630			if ( data ) {
17631				if ( !queue || Array.isArray( data ) ) {
17632					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
17633				} else {
17634					queue.push( data );
17635				}
17636			}
17637			return queue || [];
17638		}
17639	},
17640
17641	dequeue: function( elem, type ) {
17642		type = type || "fx";
17643
17644		var queue = jQuery.queue( elem, type ),
17645			startLength = queue.length,
17646			fn = queue.shift(),
17647			hooks = jQuery._queueHooks( elem, type ),
17648			next = function() {
17649				jQuery.dequeue( elem, type );
17650			};
17651
17652		// If the fx queue is dequeued, always remove the progress sentinel
17653		if ( fn === "inprogress" ) {
17654			fn = queue.shift();
17655			startLength--;
17656		}
17657
17658		if ( fn ) {
17659
17660			// Add a progress sentinel to prevent the fx queue from being
17661			// automatically dequeued
17662			if ( type === "fx" ) {
17663				queue.unshift( "inprogress" );
17664			}
17665
17666			// Clear up the last queue stop function
17667			delete hooks.stop;
17668			fn.call( elem, next, hooks );
17669		}
17670
17671		if ( !startLength && hooks ) {
17672			hooks.empty.fire();
17673		}
17674	},
17675
17676	// Not public - generate a queueHooks object, or return the current one
17677	_queueHooks: function( elem, type ) {
17678		var key = type + "queueHooks";
17679		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
17680			empty: jQuery.Callbacks( "once memory" ).add( function() {
17681				dataPriv.remove( elem, [ type + "queue", key ] );
17682			} )
17683		} );
17684	}
17685} );
17686
17687jQuery.fn.extend( {
17688	queue: function( type, data ) {
17689		var setter = 2;
17690
17691		if ( typeof type !== "string" ) {
17692			data = type;
17693			type = "fx";
17694			setter--;
17695		}
17696
17697		if ( arguments.length < setter ) {
17698			return jQuery.queue( this[ 0 ], type );
17699		}
17700
17701		return data === undefined ?
17702			this :
17703			this.each( function() {
17704				var queue = jQuery.queue( this, type, data );
17705
17706				// Ensure a hooks for this queue
17707				jQuery._queueHooks( this, type );
17708
17709				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
17710					jQuery.dequeue( this, type );
17711				}
17712			} );
17713	},
17714	dequeue: function( type ) {
17715		return this.each( function() {
17716			jQuery.dequeue( this, type );
17717		} );
17718	},
17719	clearQueue: function( type ) {
17720		return this.queue( type || "fx", [] );
17721	},
17722
17723	// Get a promise resolved when queues of a certain type
17724	// are emptied (fx is the type by default)
17725	promise: function( type, obj ) {
17726		var tmp,
17727			count = 1,
17728			defer = jQuery.Deferred(),
17729			elements = this,
17730			i = this.length,
17731			resolve = function() {
17732				if ( !( --count ) ) {
17733					defer.resolveWith( elements, [ elements ] );
17734				}
17735			};
17736
17737		if ( typeof type !== "string" ) {
17738			obj = type;
17739			type = undefined;
17740		}
17741		type = type || "fx";
17742
17743		while ( i-- ) {
17744			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
17745			if ( tmp && tmp.empty ) {
17746				count++;
17747				tmp.empty.add( resolve );
17748			}
17749		}
17750		resolve();
17751		return defer.promise( obj );
17752	}
17753} );
17754var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
17755
17756var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
17757
17758
17759var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
17760
17761var documentElement = document.documentElement;
17762
17763
17764
17765	var isAttached = function( elem ) {
17766			return jQuery.contains( elem.ownerDocument, elem );
17767		},
17768		composed = { composed: true };
17769
17770	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
17771	// Check attachment across shadow DOM boundaries when possible (gh-3504)
17772	// Support: iOS 10.0-10.2 only
17773	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
17774	// leading to errors. We need to check for `getRootNode`.
17775	if ( documentElement.getRootNode ) {
17776		isAttached = function( elem ) {
17777			return jQuery.contains( elem.ownerDocument, elem ) ||
17778				elem.getRootNode( composed ) === elem.ownerDocument;
17779		};
17780	}
17781var isHiddenWithinTree = function( elem, el ) {
17782
17783		// isHiddenWithinTree might be called from jQuery#filter function;
17784		// in that case, element will be second argument
17785		elem = el || elem;
17786
17787		// Inline style trumps all
17788		return elem.style.display === "none" ||
17789			elem.style.display === "" &&
17790
17791			// Otherwise, check computed style
17792			// Support: Firefox <=43 - 45
17793			// Disconnected elements can have computed display: none, so first confirm that elem is
17794			// in the document.
17795			isAttached( elem ) &&
17796
17797			jQuery.css( elem, "display" ) === "none";
17798	};
17799
17800
17801
17802function adjustCSS( elem, prop, valueParts, tween ) {
17803	var adjusted, scale,
17804		maxIterations = 20,
17805		currentValue = tween ?
17806			function() {
17807				return tween.cur();
17808			} :
17809			function() {
17810				return jQuery.css( elem, prop, "" );
17811			},
17812		initial = currentValue(),
17813		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
17814
17815		// Starting value computation is required for potential unit mismatches
17816		initialInUnit = elem.nodeType &&
17817			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
17818			rcssNum.exec( jQuery.css( elem, prop ) );
17819
17820	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
17821
17822		// Support: Firefox <=54
17823		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
17824		initial = initial / 2;
17825
17826		// Trust units reported by jQuery.css
17827		unit = unit || initialInUnit[ 3 ];
17828
17829		// Iteratively approximate from a nonzero starting point
17830		initialInUnit = +initial || 1;
17831
17832		while ( maxIterations-- ) {
17833
17834			// Evaluate and update our best guess (doubling guesses that zero out).
17835			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
17836			jQuery.style( elem, prop, initialInUnit + unit );
17837			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
17838				maxIterations = 0;
17839			}
17840			initialInUnit = initialInUnit / scale;
17841
17842		}
17843
17844		initialInUnit = initialInUnit * 2;
17845		jQuery.style( elem, prop, initialInUnit + unit );
17846
17847		// Make sure we update the tween properties later on
17848		valueParts = valueParts || [];
17849	}
17850
17851	if ( valueParts ) {
17852		initialInUnit = +initialInUnit || +initial || 0;
17853
17854		// Apply relative offset (+=/-=) if specified
17855		adjusted = valueParts[ 1 ] ?
17856			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
17857			+valueParts[ 2 ];
17858		if ( tween ) {
17859			tween.unit = unit;
17860			tween.start = initialInUnit;
17861			tween.end = adjusted;
17862		}
17863	}
17864	return adjusted;
17865}
17866
17867
17868var defaultDisplayMap = {};
17869
17870function getDefaultDisplay( elem ) {
17871	var temp,
17872		doc = elem.ownerDocument,
17873		nodeName = elem.nodeName,
17874		display = defaultDisplayMap[ nodeName ];
17875
17876	if ( display ) {
17877		return display;
17878	}
17879
17880	temp = doc.body.appendChild( doc.createElement( nodeName ) );
17881	display = jQuery.css( temp, "display" );
17882
17883	temp.parentNode.removeChild( temp );
17884
17885	if ( display === "none" ) {
17886		display = "block";
17887	}
17888	defaultDisplayMap[ nodeName ] = display;
17889
17890	return display;
17891}
17892
17893function showHide( elements, show ) {
17894	var display, elem,
17895		values = [],
17896		index = 0,
17897		length = elements.length;
17898
17899	// Determine new display value for elements that need to change
17900	for ( ; index < length; index++ ) {
17901		elem = elements[ index ];
17902		if ( !elem.style ) {
17903			continue;
17904		}
17905
17906		display = elem.style.display;
17907		if ( show ) {
17908
17909			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
17910			// check is required in this first loop unless we have a nonempty display value (either
17911			// inline or about-to-be-restored)
17912			if ( display === "none" ) {
17913				values[ index ] = dataPriv.get( elem, "display" ) || null;
17914				if ( !values[ index ] ) {
17915					elem.style.display = "";
17916				}
17917			}
17918			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
17919				values[ index ] = getDefaultDisplay( elem );
17920			}
17921		} else {
17922			if ( display !== "none" ) {
17923				values[ index ] = "none";
17924
17925				// Remember what we're overwriting
17926				dataPriv.set( elem, "display", display );
17927			}
17928		}
17929	}
17930
17931	// Set the display of the elements in a second loop to avoid constant reflow
17932	for ( index = 0; index < length; index++ ) {
17933		if ( values[ index ] != null ) {
17934			elements[ index ].style.display = values[ index ];
17935		}
17936	}
17937
17938	return elements;
17939}
17940
17941jQuery.fn.extend( {
17942	show: function() {
17943		return showHide( this, true );
17944	},
17945	hide: function() {
17946		return showHide( this );
17947	},
17948	toggle: function( state ) {
17949		if ( typeof state === "boolean" ) {
17950			return state ? this.show() : this.hide();
17951		}
17952
17953		return this.each( function() {
17954			if ( isHiddenWithinTree( this ) ) {
17955				jQuery( this ).show();
17956			} else {
17957				jQuery( this ).hide();
17958			}
17959		} );
17960	}
17961} );
17962var rcheckableType = ( /^(?:checkbox|radio)$/i );
17963
17964var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
17965
17966var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
17967
17968
17969
17970( function() {
17971	var fragment = document.createDocumentFragment(),
17972		div = fragment.appendChild( document.createElement( "div" ) ),
17973		input = document.createElement( "input" );
17974
17975	// Support: Android 4.0 - 4.3 only
17976	// Check state lost if the name is set (trac-11217)
17977	// Support: Windows Web Apps (WWA)
17978	// `name` and `type` must use .setAttribute for WWA (trac-14901)
17979	input.setAttribute( "type", "radio" );
17980	input.setAttribute( "checked", "checked" );
17981	input.setAttribute( "name", "t" );
17982
17983	div.appendChild( input );
17984
17985	// Support: Android <=4.1 only
17986	// Older WebKit doesn't clone checked state correctly in fragments
17987	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
17988
17989	// Support: IE <=11 only
17990	// Make sure textarea (and checkbox) defaultValue is properly cloned
17991	div.innerHTML = "<textarea>x</textarea>";
17992	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
17993
17994	// Support: IE <=9 only
17995	// IE <=9 replaces <option> tags with their contents when inserted outside of
17996	// the select element.
17997	div.innerHTML = "<option></option>";
17998	support.option = !!div.lastChild;
17999} )();
18000
18001
18002// We have to close these tags to support XHTML (trac-13200)
18003var wrapMap = {
18004
18005	// XHTML parsers do not magically insert elements in the
18006	// same way that tag soup parsers do. So we cannot shorten
18007	// this by omitting <tbody> or other required elements.
18008	thead: [ 1, "<table>", "</table>" ],
18009	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
18010	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
18011	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
18012
18013	_default: [ 0, "", "" ]
18014};
18015
18016wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
18017wrapMap.th = wrapMap.td;
18018
18019// Support: IE <=9 only
18020if ( !support.option ) {
18021	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
18022}
18023
18024
18025function getAll( context, tag ) {
18026
18027	// Support: IE <=9 - 11 only
18028	// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
18029	var ret;
18030
18031	if ( typeof context.getElementsByTagName !== "undefined" ) {
18032		ret = context.getElementsByTagName( tag || "*" );
18033
18034	} else if ( typeof context.querySelectorAll !== "undefined" ) {
18035		ret = context.querySelectorAll( tag || "*" );
18036
18037	} else {
18038		ret = [];
18039	}
18040
18041	if ( tag === undefined || tag && nodeName( context, tag ) ) {
18042		return jQuery.merge( [ context ], ret );
18043	}
18044
18045	return ret;
18046}
18047
18048
18049// Mark scripts as having already been evaluated
18050function setGlobalEval( elems, refElements ) {
18051	var i = 0,
18052		l = elems.length;
18053
18054	for ( ; i < l; i++ ) {
18055		dataPriv.set(
18056			elems[ i ],
18057			"globalEval",
18058			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
18059		);
18060	}
18061}
18062
18063
18064var rhtml = /<|&#?\w+;/;
18065
18066function buildFragment( elems, context, scripts, selection, ignored ) {
18067	var elem, tmp, tag, wrap, attached, j,
18068		fragment = context.createDocumentFragment(),
18069		nodes = [],
18070		i = 0,
18071		l = elems.length;
18072
18073	for ( ; i < l; i++ ) {
18074		elem = elems[ i ];
18075
18076		if ( elem || elem === 0 ) {
18077
18078			// Add nodes directly
18079			if ( toType( elem ) === "object" ) {
18080
18081				// Support: Android <=4.0 only, PhantomJS 1 only
18082				// push.apply(_, arraylike) throws on ancient WebKit
18083				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
18084
18085			// Convert non-html into a text node
18086			} else if ( !rhtml.test( elem ) ) {
18087				nodes.push( context.createTextNode( elem ) );
18088
18089			// Convert html into DOM nodes
18090			} else {
18091				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
18092
18093				// Deserialize a standard representation
18094				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
18095				wrap = wrapMap[ tag ] || wrapMap._default;
18096				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
18097
18098				// Descend through wrappers to the right content
18099				j = wrap[ 0 ];
18100				while ( j-- ) {
18101					tmp = tmp.lastChild;
18102				}
18103
18104				// Support: Android <=4.0 only, PhantomJS 1 only
18105				// push.apply(_, arraylike) throws on ancient WebKit
18106				jQuery.merge( nodes, tmp.childNodes );
18107
18108				// Remember the top-level container
18109				tmp = fragment.firstChild;
18110
18111				// Ensure the created nodes are orphaned (trac-12392)
18112				tmp.textContent = "";
18113			}
18114		}
18115	}
18116
18117	// Remove wrapper from fragment
18118	fragment.textContent = "";
18119
18120	i = 0;
18121	while ( ( elem = nodes[ i++ ] ) ) {
18122
18123		// Skip elements already in the context collection (trac-4087)
18124		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
18125			if ( ignored ) {
18126				ignored.push( elem );
18127			}
18128			continue;
18129		}
18130
18131		attached = isAttached( elem );
18132
18133		// Append to fragment
18134		tmp = getAll( fragment.appendChild( elem ), "script" );
18135
18136		// Preserve script evaluation history
18137		if ( attached ) {
18138			setGlobalEval( tmp );
18139		}
18140
18141		// Capture executables
18142		if ( scripts ) {
18143			j = 0;
18144			while ( ( elem = tmp[ j++ ] ) ) {
18145				if ( rscriptType.test( elem.type || "" ) ) {
18146					scripts.push( elem );
18147				}
18148			}
18149		}
18150	}
18151
18152	return fragment;
18153}
18154
18155
18156var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
18157
18158function returnTrue() {
18159	return true;
18160}
18161
18162function returnFalse() {
18163	return false;
18164}
18165
18166// Support: IE <=9 - 11+
18167// focus() and blur() are asynchronous, except when they are no-op.
18168// So expect focus to be synchronous when the element is already active,
18169// and blur to be synchronous when the element is not already active.
18170// (focus and blur are always synchronous in other supported browsers,
18171// this just defines when we can count on it).
18172function expectSync( elem, type ) {
18173	return ( elem === safeActiveElement() ) === ( type === "focus" );
18174}
18175
18176// Support: IE <=9 only
18177// Accessing document.activeElement can throw unexpectedly
18178// https://bugs.jquery.com/ticket/13393
18179function safeActiveElement() {
18180	try {
18181		return document.activeElement;
18182	} catch ( err ) { }
18183}
18184
18185function on( elem, types, selector, data, fn, one ) {
18186	var origFn, type;
18187
18188	// Types can be a map of types/handlers
18189	if ( typeof types === "object" ) {
18190
18191		// ( types-Object, selector, data )
18192		if ( typeof selector !== "string" ) {
18193
18194			// ( types-Object, data )
18195			data = data || selector;
18196			selector = undefined;
18197		}
18198		for ( type in types ) {
18199			on( elem, type, selector, data, types[ type ], one );
18200		}
18201		return elem;
18202	}
18203
18204	if ( data == null && fn == null ) {
18205
18206		// ( types, fn )
18207		fn = selector;
18208		data = selector = undefined;
18209	} else if ( fn == null ) {
18210		if ( typeof selector === "string" ) {
18211
18212			// ( types, selector, fn )
18213			fn = data;
18214			data = undefined;
18215		} else {
18216
18217			// ( types, data, fn )
18218			fn = data;
18219			data = selector;
18220			selector = undefined;
18221		}
18222	}
18223	if ( fn === false ) {
18224		fn = returnFalse;
18225	} else if ( !fn ) {
18226		return elem;
18227	}
18228
18229	if ( one === 1 ) {
18230		origFn = fn;
18231		fn = function( event ) {
18232
18233			// Can use an empty set, since event contains the info
18234			jQuery().off( event );
18235			return origFn.apply( this, arguments );
18236		};
18237
18238		// Use same guid so caller can remove using origFn
18239		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
18240	}
18241	return elem.each( function() {
18242		jQuery.event.add( this, types, fn, data, selector );
18243	} );
18244}
18245
18246/*
18247 * Helper functions for managing events -- not part of the public interface.
18248 * Props to Dean Edwards' addEvent library for many of the ideas.
18249 */
18250jQuery.event = {
18251
18252	global: {},
18253
18254	add: function( elem, types, handler, data, selector ) {
18255
18256		var handleObjIn, eventHandle, tmp,
18257			events, t, handleObj,
18258			special, handlers, type, namespaces, origType,
18259			elemData = dataPriv.get( elem );
18260
18261		// Only attach events to objects that accept data
18262		if ( !acceptData( elem ) ) {
18263			return;
18264		}
18265
18266		// Caller can pass in an object of custom data in lieu of the handler
18267		if ( handler.handler ) {
18268			handleObjIn = handler;
18269			handler = handleObjIn.handler;
18270			selector = handleObjIn.selector;
18271		}
18272
18273		// Ensure that invalid selectors throw exceptions at attach time
18274		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
18275		if ( selector ) {
18276			jQuery.find.matchesSelector( documentElement, selector );
18277		}
18278
18279		// Make sure that the handler has a unique ID, used to find/remove it later
18280		if ( !handler.guid ) {
18281			handler.guid = jQuery.guid++;
18282		}
18283
18284		// Init the element's event structure and main handler, if this is the first
18285		if ( !( events = elemData.events ) ) {
18286			events = elemData.events = Object.create( null );
18287		}
18288		if ( !( eventHandle = elemData.handle ) ) {
18289			eventHandle = elemData.handle = function( e ) {
18290
18291				// Discard the second event of a jQuery.event.trigger() and
18292				// when an event is called after a page has unloaded
18293				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
18294					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
18295			};
18296		}
18297
18298		// Handle multiple events separated by a space
18299		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
18300		t = types.length;
18301		while ( t-- ) {
18302			tmp = rtypenamespace.exec( types[ t ] ) || [];
18303			type = origType = tmp[ 1 ];
18304			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
18305
18306			// There *must* be a type, no attaching namespace-only handlers
18307			if ( !type ) {
18308				continue;
18309			}
18310
18311			// If event changes its type, use the special event handlers for the changed type
18312			special = jQuery.event.special[ type ] || {};
18313
18314			// If selector defined, determine special event api type, otherwise given type
18315			type = ( selector ? special.delegateType : special.bindType ) || type;
18316
18317			// Update special based on newly reset type
18318			special = jQuery.event.special[ type ] || {};
18319
18320			// handleObj is passed to all event handlers
18321			handleObj = jQuery.extend( {
18322				type: type,
18323				origType: origType,
18324				data: data,
18325				handler: handler,
18326				guid: handler.guid,
18327				selector: selector,
18328				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
18329				namespace: namespaces.join( "." )
18330			}, handleObjIn );
18331
18332			// Init the event handler queue if we're the first
18333			if ( !( handlers = events[ type ] ) ) {
18334				handlers = events[ type ] = [];
18335				handlers.delegateCount = 0;
18336
18337				// Only use addEventListener if the special events handler returns false
18338				if ( !special.setup ||
18339					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
18340
18341					if ( elem.addEventListener ) {
18342						elem.addEventListener( type, eventHandle );
18343					}
18344				}
18345			}
18346
18347			if ( special.add ) {
18348				special.add.call( elem, handleObj );
18349
18350				if ( !handleObj.handler.guid ) {
18351					handleObj.handler.guid = handler.guid;
18352				}
18353			}
18354
18355			// Add to the element's handler list, delegates in front
18356			if ( selector ) {
18357				handlers.splice( handlers.delegateCount++, 0, handleObj );
18358			} else {
18359				handlers.push( handleObj );
18360			}
18361
18362			// Keep track of which events have ever been used, for event optimization
18363			jQuery.event.global[ type ] = true;
18364		}
18365
18366	},
18367
18368	// Detach an event or set of events from an element
18369	remove: function( elem, types, handler, selector, mappedTypes ) {
18370
18371		var j, origCount, tmp,
18372			events, t, handleObj,
18373			special, handlers, type, namespaces, origType,
18374			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
18375
18376		if ( !elemData || !( events = elemData.events ) ) {
18377			return;
18378		}
18379
18380		// Once for each type.namespace in types; type may be omitted
18381		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
18382		t = types.length;
18383		while ( t-- ) {
18384			tmp = rtypenamespace.exec( types[ t ] ) || [];
18385			type = origType = tmp[ 1 ];
18386			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
18387
18388			// Unbind all events (on this namespace, if provided) for the element
18389			if ( !type ) {
18390				for ( type in events ) {
18391					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
18392				}
18393				continue;
18394			}
18395
18396			special = jQuery.event.special[ type ] || {};
18397			type = ( selector ? special.delegateType : special.bindType ) || type;
18398			handlers = events[ type ] || [];
18399			tmp = tmp[ 2 ] &&
18400				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
18401
18402			// Remove matching events
18403			origCount = j = handlers.length;
18404			while ( j-- ) {
18405				handleObj = handlers[ j ];
18406
18407				if ( ( mappedTypes || origType === handleObj.origType ) &&
18408					( !handler || handler.guid === handleObj.guid ) &&
18409					( !tmp || tmp.test( handleObj.namespace ) ) &&
18410					( !selector || selector === handleObj.selector ||
18411						selector === "**" && handleObj.selector ) ) {
18412					handlers.splice( j, 1 );
18413
18414					if ( handleObj.selector ) {
18415						handlers.delegateCount--;
18416					}
18417					if ( special.remove ) {
18418						special.remove.call( elem, handleObj );
18419					}
18420				}
18421			}
18422
18423			// Remove generic event handler if we removed something and no more handlers exist
18424			// (avoids potential for endless recursion during removal of special event handlers)
18425			if ( origCount && !handlers.length ) {
18426				if ( !special.teardown ||
18427					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
18428
18429					jQuery.removeEvent( elem, type, elemData.handle );
18430				}
18431
18432				delete events[ type ];
18433			}
18434		}
18435
18436		// Remove data and the expando if it's no longer used
18437		if ( jQuery.isEmptyObject( events ) ) {
18438			dataPriv.remove( elem, "handle events" );
18439		}
18440	},
18441
18442	dispatch: function( nativeEvent ) {
18443
18444		var i, j, ret, matched, handleObj, handlerQueue,
18445			args = new Array( arguments.length ),
18446
18447			// Make a writable jQuery.Event from the native event object
18448			event = jQuery.event.fix( nativeEvent ),
18449
18450			handlers = (
18451				dataPriv.get( this, "events" ) || Object.create( null )
18452			)[ event.type ] || [],
18453			special = jQuery.event.special[ event.type ] || {};
18454
18455		// Use the fix-ed jQuery.Event rather than the (read-only) native event
18456		args[ 0 ] = event;
18457
18458		for ( i = 1; i < arguments.length; i++ ) {
18459			args[ i ] = arguments[ i ];
18460		}
18461
18462		event.delegateTarget = this;
18463
18464		// Call the preDispatch hook for the mapped type, and let it bail if desired
18465		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
18466			return;
18467		}
18468
18469		// Determine handlers
18470		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
18471
18472		// Run delegates first; they may want to stop propagation beneath us
18473		i = 0;
18474		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
18475			event.currentTarget = matched.elem;
18476
18477			j = 0;
18478			while ( ( handleObj = matched.handlers[ j++ ] ) &&
18479				!event.isImmediatePropagationStopped() ) {
18480
18481				// If the event is namespaced, then each handler is only invoked if it is
18482				// specially universal or its namespaces are a superset of the event's.
18483				if ( !event.rnamespace || handleObj.namespace === false ||
18484					event.rnamespace.test( handleObj.namespace ) ) {
18485
18486					event.handleObj = handleObj;
18487					event.data = handleObj.data;
18488
18489					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
18490						handleObj.handler ).apply( matched.elem, args );
18491
18492					if ( ret !== undefined ) {
18493						if ( ( event.result = ret ) === false ) {
18494							event.preventDefault();
18495							event.stopPropagation();
18496						}
18497					}
18498				}
18499			}
18500		}
18501
18502		// Call the postDispatch hook for the mapped type
18503		if ( special.postDispatch ) {
18504			special.postDispatch.call( this, event );
18505		}
18506
18507		return event.result;
18508	},
18509
18510	handlers: function( event, handlers ) {
18511		var i, handleObj, sel, matchedHandlers, matchedSelectors,
18512			handlerQueue = [],
18513			delegateCount = handlers.delegateCount,
18514			cur = event.target;
18515
18516		// Find delegate handlers
18517		if ( delegateCount &&
18518
18519			// Support: IE <=9
18520			// Black-hole SVG <use> instance trees (trac-13180)
18521			cur.nodeType &&
18522
18523			// Support: Firefox <=42
18524			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
18525			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
18526			// Support: IE 11 only
18527			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
18528			!( event.type === "click" && event.button >= 1 ) ) {
18529
18530			for ( ; cur !== this; cur = cur.parentNode || this ) {
18531
18532				// Don't check non-elements (trac-13208)
18533				// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
18534				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
18535					matchedHandlers = [];
18536					matchedSelectors = {};
18537					for ( i = 0; i < delegateCount; i++ ) {
18538						handleObj = handlers[ i ];
18539
18540						// Don't conflict with Object.prototype properties (trac-13203)
18541						sel = handleObj.selector + " ";
18542
18543						if ( matchedSelectors[ sel ] === undefined ) {
18544							matchedSelectors[ sel ] = handleObj.needsContext ?
18545								jQuery( sel, this ).index( cur ) > -1 :
18546								jQuery.find( sel, this, null, [ cur ] ).length;
18547						}
18548						if ( matchedSelectors[ sel ] ) {
18549							matchedHandlers.push( handleObj );
18550						}
18551					}
18552					if ( matchedHandlers.length ) {
18553						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
18554					}
18555				}
18556			}
18557		}
18558
18559		// Add the remaining (directly-bound) handlers
18560		cur = this;
18561		if ( delegateCount < handlers.length ) {
18562			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
18563		}
18564
18565		return handlerQueue;
18566	},
18567
18568	addProp: function( name, hook ) {
18569		Object.defineProperty( jQuery.Event.prototype, name, {
18570			enumerable: true,
18571			configurable: true,
18572
18573			get: isFunction( hook ) ?
18574				function() {
18575					if ( this.originalEvent ) {
18576						return hook( this.originalEvent );
18577					}
18578				} :
18579				function() {
18580					if ( this.originalEvent ) {
18581						return this.originalEvent[ name ];
18582					}
18583				},
18584
18585			set: function( value ) {
18586				Object.defineProperty( this, name, {
18587					enumerable: true,
18588					configurable: true,
18589					writable: true,
18590					value: value
18591				} );
18592			}
18593		} );
18594	},
18595
18596	fix: function( originalEvent ) {
18597		return originalEvent[ jQuery.expando ] ?
18598			originalEvent :
18599			new jQuery.Event( originalEvent );
18600	},
18601
18602	special: {
18603		load: {
18604
18605			// Prevent triggered image.load events from bubbling to window.load
18606			noBubble: true
18607		},
18608		click: {
18609
18610			// Utilize native event to ensure correct state for checkable inputs
18611			setup: function( data ) {
18612
18613				// For mutual compressibility with _default, replace `this` access with a local var.
18614				// `|| data` is dead code meant only to preserve the variable through minification.
18615				var el = this || data;
18616
18617				// Claim the first handler
18618				if ( rcheckableType.test( el.type ) &&
18619					el.click && nodeName( el, "input" ) ) {
18620
18621					// dataPriv.set( el, "click", ... )
18622					leverageNative( el, "click", returnTrue );
18623				}
18624
18625				// Return false to allow normal processing in the caller
18626				return false;
18627			},
18628			trigger: function( data ) {
18629
18630				// For mutual compressibility with _default, replace `this` access with a local var.
18631				// `|| data` is dead code meant only to preserve the variable through minification.
18632				var el = this || data;
18633
18634				// Force setup before triggering a click
18635				if ( rcheckableType.test( el.type ) &&
18636					el.click && nodeName( el, "input" ) ) {
18637
18638					leverageNative( el, "click" );
18639				}
18640
18641				// Return non-false to allow normal event-path propagation
18642				return true;
18643			},
18644
18645			// For cross-browser consistency, suppress native .click() on links
18646			// Also prevent it if we're currently inside a leveraged native-event stack
18647			_default: function( event ) {
18648				var target = event.target;
18649				return rcheckableType.test( target.type ) &&
18650					target.click && nodeName( target, "input" ) &&
18651					dataPriv.get( target, "click" ) ||
18652					nodeName( target, "a" );
18653			}
18654		},
18655
18656		beforeunload: {
18657			postDispatch: function( event ) {
18658
18659				// Support: Firefox 20+
18660				// Firefox doesn't alert if the returnValue field is not set.
18661				if ( event.result !== undefined && event.originalEvent ) {
18662					event.originalEvent.returnValue = event.result;
18663				}
18664			}
18665		}
18666	}
18667};
18668
18669// Ensure the presence of an event listener that handles manually-triggered
18670// synthetic events by interrupting progress until reinvoked in response to
18671// *native* events that it fires directly, ensuring that state changes have
18672// already occurred before other listeners are invoked.
18673function leverageNative( el, type, expectSync ) {
18674
18675	// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
18676	if ( !expectSync ) {
18677		if ( dataPriv.get( el, type ) === undefined ) {
18678			jQuery.event.add( el, type, returnTrue );
18679		}
18680		return;
18681	}
18682
18683	// Register the controller as a special universal handler for all event namespaces
18684	dataPriv.set( el, type, false );
18685	jQuery.event.add( el, type, {
18686		namespace: false,
18687		handler: function( event ) {
18688			var notAsync, result,
18689				saved = dataPriv.get( this, type );
18690
18691			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
18692
18693				// Interrupt processing of the outer synthetic .trigger()ed event
18694				// Saved data should be false in such cases, but might be a leftover capture object
18695				// from an async native handler (gh-4350)
18696				if ( !saved.length ) {
18697
18698					// Store arguments for use when handling the inner native event
18699					// There will always be at least one argument (an event object), so this array
18700					// will not be confused with a leftover capture object.
18701					saved = slice.call( arguments );
18702					dataPriv.set( this, type, saved );
18703
18704					// Trigger the native event and capture its result
18705					// Support: IE <=9 - 11+
18706					// focus() and blur() are asynchronous
18707					notAsync = expectSync( this, type );
18708					this[ type ]();
18709					result = dataPriv.get( this, type );
18710					if ( saved !== result || notAsync ) {
18711						dataPriv.set( this, type, false );
18712					} else {
18713						result = {};
18714					}
18715					if ( saved !== result ) {
18716
18717						// Cancel the outer synthetic event
18718						event.stopImmediatePropagation();
18719						event.preventDefault();
18720
18721						// Support: Chrome 86+
18722						// In Chrome, if an element having a focusout handler is blurred by
18723						// clicking outside of it, it invokes the handler synchronously. If
18724						// that handler calls `.remove()` on the element, the data is cleared,
18725						// leaving `result` undefined. We need to guard against this.
18726						return result && result.value;
18727					}
18728
18729				// If this is an inner synthetic event for an event with a bubbling surrogate
18730				// (focus or blur), assume that the surrogate already propagated from triggering the
18731				// native event and prevent that from happening again here.
18732				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
18733				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
18734				// less bad than duplication.
18735				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
18736					event.stopPropagation();
18737				}
18738
18739			// If this is a native event triggered above, everything is now in order
18740			// Fire an inner synthetic event with the original arguments
18741			} else if ( saved.length ) {
18742
18743				// ...and capture the result
18744				dataPriv.set( this, type, {
18745					value: jQuery.event.trigger(
18746
18747						// Support: IE <=9 - 11+
18748						// Extend with the prototype to reset the above stopImmediatePropagation()
18749						jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
18750						saved.slice( 1 ),
18751						this
18752					)
18753				} );
18754
18755				// Abort handling of the native event
18756				event.stopImmediatePropagation();
18757			}
18758		}
18759	} );
18760}
18761
18762jQuery.removeEvent = function( elem, type, handle ) {
18763
18764	// This "if" is needed for plain objects
18765	if ( elem.removeEventListener ) {
18766		elem.removeEventListener( type, handle );
18767	}
18768};
18769
18770jQuery.Event = function( src, props ) {
18771
18772	// Allow instantiation without the 'new' keyword
18773	if ( !( this instanceof jQuery.Event ) ) {
18774		return new jQuery.Event( src, props );
18775	}
18776
18777	// Event object
18778	if ( src && src.type ) {
18779		this.originalEvent = src;
18780		this.type = src.type;
18781
18782		// Events bubbling up the document may have been marked as prevented
18783		// by a handler lower down the tree; reflect the correct value.
18784		this.isDefaultPrevented = src.defaultPrevented ||
18785				src.defaultPrevented === undefined &&
18786
18787				// Support: Android <=2.3 only
18788				src.returnValue === false ?
18789			returnTrue :
18790			returnFalse;
18791
18792		// Create target properties
18793		// Support: Safari <=6 - 7 only
18794		// Target should not be a text node (trac-504, trac-13143)
18795		this.target = ( src.target && src.target.nodeType === 3 ) ?
18796			src.target.parentNode :
18797			src.target;
18798
18799		this.currentTarget = src.currentTarget;
18800		this.relatedTarget = src.relatedTarget;
18801
18802	// Event type
18803	} else {
18804		this.type = src;
18805	}
18806
18807	// Put explicitly provided properties onto the event object
18808	if ( props ) {
18809		jQuery.extend( this, props );
18810	}
18811
18812	// Create a timestamp if incoming event doesn't have one
18813	this.timeStamp = src && src.timeStamp || Date.now();
18814
18815	// Mark it as fixed
18816	this[ jQuery.expando ] = true;
18817};
18818
18819// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
18820// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
18821jQuery.Event.prototype = {
18822	constructor: jQuery.Event,
18823	isDefaultPrevented: returnFalse,
18824	isPropagationStopped: returnFalse,
18825	isImmediatePropagationStopped: returnFalse,
18826	isSimulated: false,
18827
18828	preventDefault: function() {
18829		var e = this.originalEvent;
18830
18831		this.isDefaultPrevented = returnTrue;
18832
18833		if ( e && !this.isSimulated ) {
18834			e.preventDefault();
18835		}
18836	},
18837	stopPropagation: function() {
18838		var e = this.originalEvent;
18839
18840		this.isPropagationStopped = returnTrue;
18841
18842		if ( e && !this.isSimulated ) {
18843			e.stopPropagation();
18844		}
18845	},
18846	stopImmediatePropagation: function() {
18847		var e = this.originalEvent;
18848
18849		this.isImmediatePropagationStopped = returnTrue;
18850
18851		if ( e && !this.isSimulated ) {
18852			e.stopImmediatePropagation();
18853		}
18854
18855		this.stopPropagation();
18856	}
18857};
18858
18859// Includes all common event props including KeyEvent and MouseEvent specific props
18860jQuery.each( {
18861	altKey: true,
18862	bubbles: true,
18863	cancelable: true,
18864	changedTouches: true,
18865	ctrlKey: true,
18866	detail: true,
18867	eventPhase: true,
18868	metaKey: true,
18869	pageX: true,
18870	pageY: true,
18871	shiftKey: true,
18872	view: true,
18873	"char": true,
18874	code: true,
18875	charCode: true,
18876	key: true,
18877	keyCode: true,
18878	button: true,
18879	buttons: true,
18880	clientX: true,
18881	clientY: true,
18882	offsetX: true,
18883	offsetY: true,
18884	pointerId: true,
18885	pointerType: true,
18886	screenX: true,
18887	screenY: true,
18888	targetTouches: true,
18889	toElement: true,
18890	touches: true,
18891	which: true
18892}, jQuery.event.addProp );
18893
18894jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
18895	jQuery.event.special[ type ] = {
18896
18897		// Utilize native event if possible so blur/focus sequence is correct
18898		setup: function() {
18899
18900			// Claim the first handler
18901			// dataPriv.set( this, "focus", ... )
18902			// dataPriv.set( this, "blur", ... )
18903			leverageNative( this, type, expectSync );
18904
18905			// Return false to allow normal processing in the caller
18906			return false;
18907		},
18908		trigger: function() {
18909
18910			// Force setup before trigger
18911			leverageNative( this, type );
18912
18913			// Return non-false to allow normal event-path propagation
18914			return true;
18915		},
18916
18917		// Suppress native focus or blur if we're currently inside
18918		// a leveraged native-event stack
18919		_default: function( event ) {
18920			return dataPriv.get( event.target, type );
18921		},
18922
18923		delegateType: delegateType
18924	};
18925} );
18926
18927// Create mouseenter/leave events using mouseover/out and event-time checks
18928// so that event delegation works in jQuery.
18929// Do the same for pointerenter/pointerleave and pointerover/pointerout
18930//
18931// Support: Safari 7 only
18932// Safari sends mouseenter too often; see:
18933// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
18934// for the description of the bug (it existed in older Chrome versions as well).
18935jQuery.each( {
18936	mouseenter: "mouseover",
18937	mouseleave: "mouseout",
18938	pointerenter: "pointerover",
18939	pointerleave: "pointerout"
18940}, function( orig, fix ) {
18941	jQuery.event.special[ orig ] = {
18942		delegateType: fix,
18943		bindType: fix,
18944
18945		handle: function( event ) {
18946			var ret,
18947				target = this,
18948				related = event.relatedTarget,
18949				handleObj = event.handleObj;
18950
18951			// For mouseenter/leave call the handler if related is outside the target.
18952			// NB: No relatedTarget if the mouse left/entered the browser window
18953			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
18954				event.type = handleObj.origType;
18955				ret = handleObj.handler.apply( this, arguments );
18956				event.type = fix;
18957			}
18958			return ret;
18959		}
18960	};
18961} );
18962
18963jQuery.fn.extend( {
18964
18965	on: function( types, selector, data, fn ) {
18966		return on( this, types, selector, data, fn );
18967	},
18968	one: function( types, selector, data, fn ) {
18969		return on( this, types, selector, data, fn, 1 );
18970	},
18971	off: function( types, selector, fn ) {
18972		var handleObj, type;
18973		if ( types && types.preventDefault && types.handleObj ) {
18974
18975			// ( event )  dispatched jQuery.Event
18976			handleObj = types.handleObj;
18977			jQuery( types.delegateTarget ).off(
18978				handleObj.namespace ?
18979					handleObj.origType + "." + handleObj.namespace :
18980					handleObj.origType,
18981				handleObj.selector,
18982				handleObj.handler
18983			);
18984			return this;
18985		}
18986		if ( typeof types === "object" ) {
18987
18988			// ( types-object [, selector] )
18989			for ( type in types ) {
18990				this.off( type, selector, types[ type ] );
18991			}
18992			return this;
18993		}
18994		if ( selector === false || typeof selector === "function" ) {
18995
18996			// ( types [, fn] )
18997			fn = selector;
18998			selector = undefined;
18999		}
19000		if ( fn === false ) {
19001			fn = returnFalse;
19002		}
19003		return this.each( function() {
19004			jQuery.event.remove( this, types, fn, selector );
19005		} );
19006	}
19007} );
19008
19009
19010var
19011
19012	// Support: IE <=10 - 11, Edge 12 - 13 only
19013	// In IE/Edge using regex groups here causes severe slowdowns.
19014	// See https://connect.microsoft.com/IE/feedback/details/1736512/
19015	rnoInnerhtml = /<script|<style|<link/i,
19016
19017	// checked="checked" or checked
19018	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
19019
19020	rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
19021
19022// Prefer a tbody over its parent table for containing new rows
19023function manipulationTarget( elem, content ) {
19024	if ( nodeName( elem, "table" ) &&
19025		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
19026
19027		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
19028	}
19029
19030	return elem;
19031}
19032
19033// Replace/restore the type attribute of script elements for safe DOM manipulation
19034function disableScript( elem ) {
19035	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
19036	return elem;
19037}
19038function restoreScript( elem ) {
19039	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
19040		elem.type = elem.type.slice( 5 );
19041	} else {
19042		elem.removeAttribute( "type" );
19043	}
19044
19045	return elem;
19046}
19047
19048function cloneCopyEvent( src, dest ) {
19049	var i, l, type, pdataOld, udataOld, udataCur, events;
19050
19051	if ( dest.nodeType !== 1 ) {
19052		return;
19053	}
19054
19055	// 1. Copy private data: events, handlers, etc.
19056	if ( dataPriv.hasData( src ) ) {
19057		pdataOld = dataPriv.get( src );
19058		events = pdataOld.events;
19059
19060		if ( events ) {
19061			dataPriv.remove( dest, "handle events" );
19062
19063			for ( type in events ) {
19064				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
19065					jQuery.event.add( dest, type, events[ type ][ i ] );
19066				}
19067			}
19068		}
19069	}
19070
19071	// 2. Copy user data
19072	if ( dataUser.hasData( src ) ) {
19073		udataOld = dataUser.access( src );
19074		udataCur = jQuery.extend( {}, udataOld );
19075
19076		dataUser.set( dest, udataCur );
19077	}
19078}
19079
19080// Fix IE bugs, see support tests
19081function fixInput( src, dest ) {
19082	var nodeName = dest.nodeName.toLowerCase();
19083
19084	// Fails to persist the checked state of a cloned checkbox or radio button.
19085	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
19086		dest.checked = src.checked;
19087
19088	// Fails to return the selected option to the default selected state when cloning options
19089	} else if ( nodeName === "input" || nodeName === "textarea" ) {
19090		dest.defaultValue = src.defaultValue;
19091	}
19092}
19093
19094function domManip( collection, args, callback, ignored ) {
19095
19096	// Flatten any nested arrays
19097	args = flat( args );
19098
19099	var fragment, first, scripts, hasScripts, node, doc,
19100		i = 0,
19101		l = collection.length,
19102		iNoClone = l - 1,
19103		value = args[ 0 ],
19104		valueIsFunction = isFunction( value );
19105
19106	// We can't cloneNode fragments that contain checked, in WebKit
19107	if ( valueIsFunction ||
19108			( l > 1 && typeof value === "string" &&
19109				!support.checkClone && rchecked.test( value ) ) ) {
19110		return collection.each( function( index ) {
19111			var self = collection.eq( index );
19112			if ( valueIsFunction ) {
19113				args[ 0 ] = value.call( this, index, self.html() );
19114			}
19115			domManip( self, args, callback, ignored );
19116		} );
19117	}
19118
19119	if ( l ) {
19120		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
19121		first = fragment.firstChild;
19122
19123		if ( fragment.childNodes.length === 1 ) {
19124			fragment = first;
19125		}
19126
19127		// Require either new content or an interest in ignored elements to invoke the callback
19128		if ( first || ignored ) {
19129			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
19130			hasScripts = scripts.length;
19131
19132			// Use the original fragment for the last item
19133			// instead of the first because it can end up
19134			// being emptied incorrectly in certain situations (trac-8070).
19135			for ( ; i < l; i++ ) {
19136				node = fragment;
19137
19138				if ( i !== iNoClone ) {
19139					node = jQuery.clone( node, true, true );
19140
19141					// Keep references to cloned scripts for later restoration
19142					if ( hasScripts ) {
19143
19144						// Support: Android <=4.0 only, PhantomJS 1 only
19145						// push.apply(_, arraylike) throws on ancient WebKit
19146						jQuery.merge( scripts, getAll( node, "script" ) );
19147					}
19148				}
19149
19150				callback.call( collection[ i ], node, i );
19151			}
19152
19153			if ( hasScripts ) {
19154				doc = scripts[ scripts.length - 1 ].ownerDocument;
19155
19156				// Reenable scripts
19157				jQuery.map( scripts, restoreScript );
19158
19159				// Evaluate executable scripts on first document insertion
19160				for ( i = 0; i < hasScripts; i++ ) {
19161					node = scripts[ i ];
19162					if ( rscriptType.test( node.type || "" ) &&
19163						!dataPriv.access( node, "globalEval" ) &&
19164						jQuery.contains( doc, node ) ) {
19165
19166						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
19167
19168							// Optional AJAX dependency, but won't run scripts if not present
19169							if ( jQuery._evalUrl && !node.noModule ) {
19170								jQuery._evalUrl( node.src, {
19171									nonce: node.nonce || node.getAttribute( "nonce" )
19172								}, doc );
19173							}
19174						} else {
19175
19176							// Unwrap a CDATA section containing script contents. This shouldn't be
19177							// needed as in XML documents they're already not visible when
19178							// inspecting element contents and in HTML documents they have no
19179							// meaning but we're preserving that logic for backwards compatibility.
19180							// This will be removed completely in 4.0. See gh-4904.
19181							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
19182						}
19183					}
19184				}
19185			}
19186		}
19187	}
19188
19189	return collection;
19190}
19191
19192function remove( elem, selector, keepData ) {
19193	var node,
19194		nodes = selector ? jQuery.filter( selector, elem ) : elem,
19195		i = 0;
19196
19197	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
19198		if ( !keepData && node.nodeType === 1 ) {
19199			jQuery.cleanData( getAll( node ) );
19200		}
19201
19202		if ( node.parentNode ) {
19203			if ( keepData && isAttached( node ) ) {
19204				setGlobalEval( getAll( node, "script" ) );
19205			}
19206			node.parentNode.removeChild( node );
19207		}
19208	}
19209
19210	return elem;
19211}
19212
19213jQuery.extend( {
19214	htmlPrefilter: function( html ) {
19215		return html;
19216	},
19217
19218	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
19219		var i, l, srcElements, destElements,
19220			clone = elem.cloneNode( true ),
19221			inPage = isAttached( elem );
19222
19223		// Fix IE cloning issues
19224		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
19225				!jQuery.isXMLDoc( elem ) ) {
19226
19227			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
19228			destElements = getAll( clone );
19229			srcElements = getAll( elem );
19230
19231			for ( i = 0, l = srcElements.length; i < l; i++ ) {
19232				fixInput( srcElements[ i ], destElements[ i ] );
19233			}
19234		}
19235
19236		// Copy the events from the original to the clone
19237		if ( dataAndEvents ) {
19238			if ( deepDataAndEvents ) {
19239				srcElements = srcElements || getAll( elem );
19240				destElements = destElements || getAll( clone );
19241
19242				for ( i = 0, l = srcElements.length; i < l; i++ ) {
19243					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
19244				}
19245			} else {
19246				cloneCopyEvent( elem, clone );
19247			}
19248		}
19249
19250		// Preserve script evaluation history
19251		destElements = getAll( clone, "script" );
19252		if ( destElements.length > 0 ) {
19253			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
19254		}
19255
19256		// Return the cloned set
19257		return clone;
19258	},
19259
19260	cleanData: function( elems ) {
19261		var data, elem, type,
19262			special = jQuery.event.special,
19263			i = 0;
19264
19265		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
19266			if ( acceptData( elem ) ) {
19267				if ( ( data = elem[ dataPriv.expando ] ) ) {
19268					if ( data.events ) {
19269						for ( type in data.events ) {
19270							if ( special[ type ] ) {
19271								jQuery.event.remove( elem, type );
19272
19273							// This is a shortcut to avoid jQuery.event.remove's overhead
19274							} else {
19275								jQuery.removeEvent( elem, type, data.handle );
19276							}
19277						}
19278					}
19279
19280					// Support: Chrome <=35 - 45+
19281					// Assign undefined instead of using delete, see Data#remove
19282					elem[ dataPriv.expando ] = undefined;
19283				}
19284				if ( elem[ dataUser.expando ] ) {
19285
19286					// Support: Chrome <=35 - 45+
19287					// Assign undefined instead of using delete, see Data#remove
19288					elem[ dataUser.expando ] = undefined;
19289				}
19290			}
19291		}
19292	}
19293} );
19294
19295jQuery.fn.extend( {
19296	detach: function( selector ) {
19297		return remove( this, selector, true );
19298	},
19299
19300	remove: function( selector ) {
19301		return remove( this, selector );
19302	},
19303
19304	text: function( value ) {
19305		return access( this, function( value ) {
19306			return value === undefined ?
19307				jQuery.text( this ) :
19308				this.empty().each( function() {
19309					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
19310						this.textContent = value;
19311					}
19312				} );
19313		}, null, value, arguments.length );
19314	},
19315
19316	append: function() {
19317		return domManip( this, arguments, function( elem ) {
19318			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
19319				var target = manipulationTarget( this, elem );
19320				target.appendChild( elem );
19321			}
19322		} );
19323	},
19324
19325	prepend: function() {
19326		return domManip( this, arguments, function( elem ) {
19327			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
19328				var target = manipulationTarget( this, elem );
19329				target.insertBefore( elem, target.firstChild );
19330			}
19331		} );
19332	},
19333
19334	before: function() {
19335		return domManip( this, arguments, function( elem ) {
19336			if ( this.parentNode ) {
19337				this.parentNode.insertBefore( elem, this );
19338			}
19339		} );
19340	},
19341
19342	after: function() {
19343		return domManip( this, arguments, function( elem ) {
19344			if ( this.parentNode ) {
19345				this.parentNode.insertBefore( elem, this.nextSibling );
19346			}
19347		} );
19348	},
19349
19350	empty: function() {
19351		var elem,
19352			i = 0;
19353
19354		for ( ; ( elem = this[ i ] ) != null; i++ ) {
19355			if ( elem.nodeType === 1 ) {
19356
19357				// Prevent memory leaks
19358				jQuery.cleanData( getAll( elem, false ) );
19359
19360				// Remove any remaining nodes
19361				elem.textContent = "";
19362			}
19363		}
19364
19365		return this;
19366	},
19367
19368	clone: function( dataAndEvents, deepDataAndEvents ) {
19369		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
19370		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
19371
19372		return this.map( function() {
19373			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
19374		} );
19375	},
19376
19377	html: function( value ) {
19378		return access( this, function( value ) {
19379			var elem = this[ 0 ] || {},
19380				i = 0,
19381				l = this.length;
19382
19383			if ( value === undefined && elem.nodeType === 1 ) {
19384				return elem.innerHTML;
19385			}
19386
19387			// See if we can take a shortcut and just use innerHTML
19388			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
19389				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
19390
19391				value = jQuery.htmlPrefilter( value );
19392
19393				try {
19394					for ( ; i < l; i++ ) {
19395						elem = this[ i ] || {};
19396
19397						// Remove element nodes and prevent memory leaks
19398						if ( elem.nodeType === 1 ) {
19399							jQuery.cleanData( getAll( elem, false ) );
19400							elem.innerHTML = value;
19401						}
19402					}
19403
19404					elem = 0;
19405
19406				// If using innerHTML throws an exception, use the fallback method
19407				} catch ( e ) {}
19408			}
19409
19410			if ( elem ) {
19411				this.empty().append( value );
19412			}
19413		}, null, value, arguments.length );
19414	},
19415
19416	replaceWith: function() {
19417		var ignored = [];
19418
19419		// Make the changes, replacing each non-ignored context element with the new content
19420		return domManip( this, arguments, function( elem ) {
19421			var parent = this.parentNode;
19422
19423			if ( jQuery.inArray( this, ignored ) < 0 ) {
19424				jQuery.cleanData( getAll( this ) );
19425				if ( parent ) {
19426					parent.replaceChild( elem, this );
19427				}
19428			}
19429
19430		// Force callback invocation
19431		}, ignored );
19432	}
19433} );
19434
19435jQuery.each( {
19436	appendTo: "append",
19437	prependTo: "prepend",
19438	insertBefore: "before",
19439	insertAfter: "after",
19440	replaceAll: "replaceWith"
19441}, function( name, original ) {
19442	jQuery.fn[ name ] = function( selector ) {
19443		var elems,
19444			ret = [],
19445			insert = jQuery( selector ),
19446			last = insert.length - 1,
19447			i = 0;
19448
19449		for ( ; i <= last; i++ ) {
19450			elems = i === last ? this : this.clone( true );
19451			jQuery( insert[ i ] )[ original ]( elems );
19452
19453			// Support: Android <=4.0 only, PhantomJS 1 only
19454			// .get() because push.apply(_, arraylike) throws on ancient WebKit
19455			push.apply( ret, elems.get() );
19456		}
19457
19458		return this.pushStack( ret );
19459	};
19460} );
19461var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
19462
19463var rcustomProp = /^--/;
19464
19465
19466var getStyles = function( elem ) {
19467
19468		// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
19469		// IE throws on elements created in popups
19470		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
19471		var view = elem.ownerDocument.defaultView;
19472
19473		if ( !view || !view.opener ) {
19474			view = window;
19475		}
19476
19477		return view.getComputedStyle( elem );
19478	};
19479
19480var swap = function( elem, options, callback ) {
19481	var ret, name,
19482		old = {};
19483
19484	// Remember the old values, and insert the new ones
19485	for ( name in options ) {
19486		old[ name ] = elem.style[ name ];
19487		elem.style[ name ] = options[ name ];
19488	}
19489
19490	ret = callback.call( elem );
19491
19492	// Revert the old values
19493	for ( name in options ) {
19494		elem.style[ name ] = old[ name ];
19495	}
19496
19497	return ret;
19498};
19499
19500
19501var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
19502
19503var whitespace = "[\\x20\\t\\r\\n\\f]";
19504
19505
19506var rtrimCSS = new RegExp(
19507	"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
19508	"g"
19509);
19510
19511
19512
19513
19514( function() {
19515
19516	// Executing both pixelPosition & boxSizingReliable tests require only one layout
19517	// so they're executed at the same time to save the second computation.
19518	function computeStyleTests() {
19519
19520		// This is a singleton, we need to execute it only once
19521		if ( !div ) {
19522			return;
19523		}
19524
19525		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
19526			"margin-top:1px;padding:0;border:0";
19527		div.style.cssText =
19528			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
19529			"margin:auto;border:1px;padding:1px;" +
19530			"width:60%;top:1%";
19531		documentElement.appendChild( container ).appendChild( div );
19532
19533		var divStyle = window.getComputedStyle( div );
19534		pixelPositionVal = divStyle.top !== "1%";
19535
19536		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
19537		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
19538
19539		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
19540		// Some styles come back with percentage values, even though they shouldn't
19541		div.style.right = "60%";
19542		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
19543
19544		// Support: IE 9 - 11 only
19545		// Detect misreporting of content dimensions for box-sizing:border-box elements
19546		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
19547
19548		// Support: IE 9 only
19549		// Detect overflow:scroll screwiness (gh-3699)
19550		// Support: Chrome <=64
19551		// Don't get tricked when zoom affects offsetWidth (gh-4029)
19552		div.style.position = "absolute";
19553		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
19554
19555		documentElement.removeChild( container );
19556
19557		// Nullify the div so it wouldn't be stored in the memory and
19558		// it will also be a sign that checks already performed
19559		div = null;
19560	}
19561
19562	function roundPixelMeasures( measure ) {
19563		return Math.round( parseFloat( measure ) );
19564	}
19565
19566	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
19567		reliableTrDimensionsVal, reliableMarginLeftVal,
19568		container = document.createElement( "div" ),
19569		div = document.createElement( "div" );
19570
19571	// Finish early in limited (non-browser) environments
19572	if ( !div.style ) {
19573		return;
19574	}
19575
19576	// Support: IE <=9 - 11 only
19577	// Style of cloned element affects source element cloned (trac-8908)
19578	div.style.backgroundClip = "content-box";
19579	div.cloneNode( true ).style.backgroundClip = "";
19580	support.clearCloneStyle = div.style.backgroundClip === "content-box";
19581
19582	jQuery.extend( support, {
19583		boxSizingReliable: function() {
19584			computeStyleTests();
19585			return boxSizingReliableVal;
19586		},
19587		pixelBoxStyles: function() {
19588			computeStyleTests();
19589			return pixelBoxStylesVal;
19590		},
19591		pixelPosition: function() {
19592			computeStyleTests();
19593			return pixelPositionVal;
19594		},
19595		reliableMarginLeft: function() {
19596			computeStyleTests();
19597			return reliableMarginLeftVal;
19598		},
19599		scrollboxSize: function() {
19600			computeStyleTests();
19601			return scrollboxSizeVal;
19602		},
19603
19604		// Support: IE 9 - 11+, Edge 15 - 18+
19605		// IE/Edge misreport `getComputedStyle` of table rows with width/height
19606		// set in CSS while `offset*` properties report correct values.
19607		// Behavior in IE 9 is more subtle than in newer versions & it passes
19608		// some versions of this test; make sure not to make it pass there!
19609		//
19610		// Support: Firefox 70+
19611		// Only Firefox includes border widths
19612		// in computed dimensions. (gh-4529)
19613		reliableTrDimensions: function() {
19614			var table, tr, trChild, trStyle;
19615			if ( reliableTrDimensionsVal == null ) {
19616				table = document.createElement( "table" );
19617				tr = document.createElement( "tr" );
19618				trChild = document.createElement( "div" );
19619
19620				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
19621				tr.style.cssText = "border:1px solid";
19622
19623				// Support: Chrome 86+
19624				// Height set through cssText does not get applied.
19625				// Computed height then comes back as 0.
19626				tr.style.height = "1px";
19627				trChild.style.height = "9px";
19628
19629				// Support: Android 8 Chrome 86+
19630				// In our bodyBackground.html iframe,
19631				// display for all div elements is set to "inline",
19632				// which causes a problem only in Android 8 Chrome 86.
19633				// Ensuring the div is display: block
19634				// gets around this issue.
19635				trChild.style.display = "block";
19636
19637				documentElement
19638					.appendChild( table )
19639					.appendChild( tr )
19640					.appendChild( trChild );
19641
19642				trStyle = window.getComputedStyle( tr );
19643				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
19644					parseInt( trStyle.borderTopWidth, 10 ) +
19645					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
19646
19647				documentElement.removeChild( table );
19648			}
19649			return reliableTrDimensionsVal;
19650		}
19651	} );
19652} )();
19653
19654
19655function curCSS( elem, name, computed ) {
19656	var width, minWidth, maxWidth, ret,
19657		isCustomProp = rcustomProp.test( name ),
19658
19659		// Support: Firefox 51+
19660		// Retrieving style before computed somehow
19661		// fixes an issue with getting wrong values
19662		// on detached elements
19663		style = elem.style;
19664
19665	computed = computed || getStyles( elem );
19666
19667	// getPropertyValue is needed for:
19668	//   .css('filter') (IE 9 only, trac-12537)
19669	//   .css('--customProperty) (gh-3144)
19670	if ( computed ) {
19671
19672		// Support: IE <=9 - 11+
19673		// IE only supports `"float"` in `getPropertyValue`; in computed styles
19674		// it's only available as `"cssFloat"`. We no longer modify properties
19675		// sent to `.css()` apart from camelCasing, so we need to check both.
19676		// Normally, this would create difference in behavior: if
19677		// `getPropertyValue` returns an empty string, the value returned
19678		// by `.css()` would be `undefined`. This is usually the case for
19679		// disconnected elements. However, in IE even disconnected elements
19680		// with no styles return `"none"` for `getPropertyValue( "float" )`
19681		ret = computed.getPropertyValue( name ) || computed[ name ];
19682
19683		if ( isCustomProp && ret ) {
19684
19685			// Support: Firefox 105+, Chrome <=105+
19686			// Spec requires trimming whitespace for custom properties (gh-4926).
19687			// Firefox only trims leading whitespace. Chrome just collapses
19688			// both leading & trailing whitespace to a single space.
19689			//
19690			// Fall back to `undefined` if empty string returned.
19691			// This collapses a missing definition with property defined
19692			// and set to an empty string but there's no standard API
19693			// allowing us to differentiate them without a performance penalty
19694			// and returning `undefined` aligns with older jQuery.
19695			//
19696			// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
19697			// as whitespace while CSS does not, but this is not a problem
19698			// because CSS preprocessing replaces them with U+000A LINE FEED
19699			// (which *is* CSS whitespace)
19700			// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
19701			ret = ret.replace( rtrimCSS, "$1" ) || undefined;
19702		}
19703
19704		if ( ret === "" && !isAttached( elem ) ) {
19705			ret = jQuery.style( elem, name );
19706		}
19707
19708		// A tribute to the "awesome hack by Dean Edwards"
19709		// Android Browser returns percentage for some values,
19710		// but width seems to be reliably pixels.
19711		// This is against the CSSOM draft spec:
19712		// https://drafts.csswg.org/cssom/#resolved-values
19713		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
19714
19715			// Remember the original values
19716			width = style.width;
19717			minWidth = style.minWidth;
19718			maxWidth = style.maxWidth;
19719
19720			// Put in the new values to get a computed value out
19721			style.minWidth = style.maxWidth = style.width = ret;
19722			ret = computed.width;
19723
19724			// Revert the changed values
19725			style.width = width;
19726			style.minWidth = minWidth;
19727			style.maxWidth = maxWidth;
19728		}
19729	}
19730
19731	return ret !== undefined ?
19732
19733		// Support: IE <=9 - 11 only
19734		// IE returns zIndex value as an integer.
19735		ret + "" :
19736		ret;
19737}
19738
19739
19740function addGetHookIf( conditionFn, hookFn ) {
19741
19742	// Define the hook, we'll check on the first run if it's really needed.
19743	return {
19744		get: function() {
19745			if ( conditionFn() ) {
19746
19747				// Hook not needed (or it's not possible to use it due
19748				// to missing dependency), remove it.
19749				delete this.get;
19750				return;
19751			}
19752
19753			// Hook needed; redefine it so that the support test is not executed again.
19754			return ( this.get = hookFn ).apply( this, arguments );
19755		}
19756	};
19757}
19758
19759
19760var cssPrefixes = [ "Webkit", "Moz", "ms" ],
19761	emptyStyle = document.createElement( "div" ).style,
19762	vendorProps = {};
19763
19764// Return a vendor-prefixed property or undefined
19765function vendorPropName( name ) {
19766
19767	// Check for vendor prefixed names
19768	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
19769		i = cssPrefixes.length;
19770
19771	while ( i-- ) {
19772		name = cssPrefixes[ i ] + capName;
19773		if ( name in emptyStyle ) {
19774			return name;
19775		}
19776	}
19777}
19778
19779// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
19780function finalPropName( name ) {
19781	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
19782
19783	if ( final ) {
19784		return final;
19785	}
19786	if ( name in emptyStyle ) {
19787		return name;
19788	}
19789	return vendorProps[ name ] = vendorPropName( name ) || name;
19790}
19791
19792
19793var
19794
19795	// Swappable if display is none or starts with table
19796	// except "table", "table-cell", or "table-caption"
19797	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
19798	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
19799	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
19800	cssNormalTransform = {
19801		letterSpacing: "0",
19802		fontWeight: "400"
19803	};
19804
19805function setPositiveNumber( _elem, value, subtract ) {
19806
19807	// Any relative (+/-) values have already been
19808	// normalized at this point
19809	var matches = rcssNum.exec( value );
19810	return matches ?
19811
19812		// Guard against undefined "subtract", e.g., when used as in cssHooks
19813		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
19814		value;
19815}
19816
19817function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
19818	var i = dimension === "width" ? 1 : 0,
19819		extra = 0,
19820		delta = 0;
19821
19822	// Adjustment may not be necessary
19823	if ( box === ( isBorderBox ? "border" : "content" ) ) {
19824		return 0;
19825	}
19826
19827	for ( ; i < 4; i += 2 ) {
19828
19829		// Both box models exclude margin
19830		if ( box === "margin" ) {
19831			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
19832		}
19833
19834		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
19835		if ( !isBorderBox ) {
19836
19837			// Add padding
19838			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
19839
19840			// For "border" or "margin", add border
19841			if ( box !== "padding" ) {
19842				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
19843
19844			// But still keep track of it otherwise
19845			} else {
19846				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
19847			}
19848
19849		// If we get here with a border-box (content + padding + border), we're seeking "content" or
19850		// "padding" or "margin"
19851		} else {
19852
19853			// For "content", subtract padding
19854			if ( box === "content" ) {
19855				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
19856			}
19857
19858			// For "content" or "padding", subtract border
19859			if ( box !== "margin" ) {
19860				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
19861			}
19862		}
19863	}
19864
19865	// Account for positive content-box scroll gutter when requested by providing computedVal
19866	if ( !isBorderBox && computedVal >= 0 ) {
19867
19868		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
19869		// Assuming integer scroll gutter, subtract the rest and round down
19870		delta += Math.max( 0, Math.ceil(
19871			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
19872			computedVal -
19873			delta -
19874			extra -
19875			0.5
19876
19877		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
19878		// Use an explicit zero to avoid NaN (gh-3964)
19879		) ) || 0;
19880	}
19881
19882	return delta;
19883}
19884
19885function getWidthOrHeight( elem, dimension, extra ) {
19886
19887	// Start with computed style
19888	var styles = getStyles( elem ),
19889
19890		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
19891		// Fake content-box until we know it's needed to know the true value.
19892		boxSizingNeeded = !support.boxSizingReliable() || extra,
19893		isBorderBox = boxSizingNeeded &&
19894			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
19895		valueIsBorderBox = isBorderBox,
19896
19897		val = curCSS( elem, dimension, styles ),
19898		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
19899
19900	// Support: Firefox <=54
19901	// Return a confounding non-pixel value or feign ignorance, as appropriate.
19902	if ( rnumnonpx.test( val ) ) {
19903		if ( !extra ) {
19904			return val;
19905		}
19906		val = "auto";
19907	}
19908
19909
19910	// Support: IE 9 - 11 only
19911	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
19912	// In those cases, the computed value can be trusted to be border-box.
19913	if ( ( !support.boxSizingReliable() && isBorderBox ||
19914
19915		// Support: IE 10 - 11+, Edge 15 - 18+
19916		// IE/Edge misreport `getComputedStyle` of table rows with width/height
19917		// set in CSS while `offset*` properties report correct values.
19918		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
19919		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
19920
19921		// Fall back to offsetWidth/offsetHeight when value is "auto"
19922		// This happens for inline elements with no explicit setting (gh-3571)
19923		val === "auto" ||
19924
19925		// Support: Android <=4.1 - 4.3 only
19926		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
19927		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
19928
19929		// Make sure the element is visible & connected
19930		elem.getClientRects().length ) {
19931
19932		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
19933
19934		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
19935		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
19936		// retrieved value as a content box dimension.
19937		valueIsBorderBox = offsetProp in elem;
19938		if ( valueIsBorderBox ) {
19939			val = elem[ offsetProp ];
19940		}
19941	}
19942
19943	// Normalize "" and auto
19944	val = parseFloat( val ) || 0;
19945
19946	// Adjust for the element's box model
19947	return ( val +
19948		boxModelAdjustment(
19949			elem,
19950			dimension,
19951			extra || ( isBorderBox ? "border" : "content" ),
19952			valueIsBorderBox,
19953			styles,
19954
19955			// Provide the current computed size to request scroll gutter calculation (gh-3589)
19956			val
19957		)
19958	) + "px";
19959}
19960
19961jQuery.extend( {
19962
19963	// Add in style property hooks for overriding the default
19964	// behavior of getting and setting a style property
19965	cssHooks: {
19966		opacity: {
19967			get: function( elem, computed ) {
19968				if ( computed ) {
19969
19970					// We should always get a number back from opacity
19971					var ret = curCSS( elem, "opacity" );
19972					return ret === "" ? "1" : ret;
19973				}
19974			}
19975		}
19976	},
19977
19978	// Don't automatically add "px" to these possibly-unitless properties
19979	cssNumber: {
19980		"animationIterationCount": true,
19981		"columnCount": true,
19982		"fillOpacity": true,
19983		"flexGrow": true,
19984		"flexShrink": true,
19985		"fontWeight": true,
19986		"gridArea": true,
19987		"gridColumn": true,
19988		"gridColumnEnd": true,
19989		"gridColumnStart": true,
19990		"gridRow": true,
19991		"gridRowEnd": true,
19992		"gridRowStart": true,
19993		"lineHeight": true,
19994		"opacity": true,
19995		"order": true,
19996		"orphans": true,
19997		"widows": true,
19998		"zIndex": true,
19999		"zoom": true
20000	},
20001
20002	// Add in properties whose names you wish to fix before
20003	// setting or getting the value
20004	cssProps: {},
20005
20006	// Get and set the style property on a DOM Node
20007	style: function( elem, name, value, extra ) {
20008
20009		// Don't set styles on text and comment nodes
20010		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
20011			return;
20012		}
20013
20014		// Make sure that we're working with the right name
20015		var ret, type, hooks,
20016			origName = camelCase( name ),
20017			isCustomProp = rcustomProp.test( name ),
20018			style = elem.style;
20019
20020		// Make sure that we're working with the right name. We don't
20021		// want to query the value if it is a CSS custom property
20022		// since they are user-defined.
20023		if ( !isCustomProp ) {
20024			name = finalPropName( origName );
20025		}
20026
20027		// Gets hook for the prefixed version, then unprefixed version
20028		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
20029
20030		// Check if we're setting a value
20031		if ( value !== undefined ) {
20032			type = typeof value;
20033
20034			// Convert "+=" or "-=" to relative numbers (trac-7345)
20035			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
20036				value = adjustCSS( elem, name, ret );
20037
20038				// Fixes bug trac-9237
20039				type = "number";
20040			}
20041
20042			// Make sure that null and NaN values aren't set (trac-7116)
20043			if ( value == null || value !== value ) {
20044				return;
20045			}
20046
20047			// If a number was passed in, add the unit (except for certain CSS properties)
20048			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
20049			// "px" to a few hardcoded values.
20050			if ( type === "number" && !isCustomProp ) {
20051				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
20052			}
20053
20054			// background-* props affect original clone's values
20055			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
20056				style[ name ] = "inherit";
20057			}
20058
20059			// If a hook was provided, use that value, otherwise just set the specified value
20060			if ( !hooks || !( "set" in hooks ) ||
20061				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
20062
20063				if ( isCustomProp ) {
20064					style.setProperty( name, value );
20065				} else {
20066					style[ name ] = value;
20067				}
20068			}
20069
20070		} else {
20071
20072			// If a hook was provided get the non-computed value from there
20073			if ( hooks && "get" in hooks &&
20074				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
20075
20076				return ret;
20077			}
20078
20079			// Otherwise just get the value from the style object
20080			return style[ name ];
20081		}
20082	},
20083
20084	css: function( elem, name, extra, styles ) {
20085		var val, num, hooks,
20086			origName = camelCase( name ),
20087			isCustomProp = rcustomProp.test( name );
20088
20089		// Make sure that we're working with the right name. We don't
20090		// want to modify the value if it is a CSS custom property
20091		// since they are user-defined.
20092		if ( !isCustomProp ) {
20093			name = finalPropName( origName );
20094		}
20095
20096		// Try prefixed name followed by the unprefixed name
20097		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
20098
20099		// If a hook was provided get the computed value from there
20100		if ( hooks && "get" in hooks ) {
20101			val = hooks.get( elem, true, extra );
20102		}
20103
20104		// Otherwise, if a way to get the computed value exists, use that
20105		if ( val === undefined ) {
20106			val = curCSS( elem, name, styles );
20107		}
20108
20109		// Convert "normal" to computed value
20110		if ( val === "normal" && name in cssNormalTransform ) {
20111			val = cssNormalTransform[ name ];
20112		}
20113
20114		// Make numeric if forced or a qualifier was provided and val looks numeric
20115		if ( extra === "" || extra ) {
20116			num = parseFloat( val );
20117			return extra === true || isFinite( num ) ? num || 0 : val;
20118		}
20119
20120		return val;
20121	}
20122} );
20123
20124jQuery.each( [ "height", "width" ], function( _i, dimension ) {
20125	jQuery.cssHooks[ dimension ] = {
20126		get: function( elem, computed, extra ) {
20127			if ( computed ) {
20128
20129				// Certain elements can have dimension info if we invisibly show them
20130				// but it must have a current display style that would benefit
20131				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
20132
20133					// Support: Safari 8+
20134					// Table columns in Safari have non-zero offsetWidth & zero
20135					// getBoundingClientRect().width unless display is changed.
20136					// Support: IE <=11 only
20137					// Running getBoundingClientRect on a disconnected node
20138					// in IE throws an error.
20139					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
20140					swap( elem, cssShow, function() {
20141						return getWidthOrHeight( elem, dimension, extra );
20142					} ) :
20143					getWidthOrHeight( elem, dimension, extra );
20144			}
20145		},
20146
20147		set: function( elem, value, extra ) {
20148			var matches,
20149				styles = getStyles( elem ),
20150
20151				// Only read styles.position if the test has a chance to fail
20152				// to avoid forcing a reflow.
20153				scrollboxSizeBuggy = !support.scrollboxSize() &&
20154					styles.position === "absolute",
20155
20156				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
20157				boxSizingNeeded = scrollboxSizeBuggy || extra,
20158				isBorderBox = boxSizingNeeded &&
20159					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
20160				subtract = extra ?
20161					boxModelAdjustment(
20162						elem,
20163						dimension,
20164						extra,
20165						isBorderBox,
20166						styles
20167					) :
20168					0;
20169
20170			// Account for unreliable border-box dimensions by comparing offset* to computed and
20171			// faking a content-box to get border and padding (gh-3699)
20172			if ( isBorderBox && scrollboxSizeBuggy ) {
20173				subtract -= Math.ceil(
20174					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
20175					parseFloat( styles[ dimension ] ) -
20176					boxModelAdjustment( elem, dimension, "border", false, styles ) -
20177					0.5
20178				);
20179			}
20180
20181			// Convert to pixels if value adjustment is needed
20182			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
20183				( matches[ 3 ] || "px" ) !== "px" ) {
20184
20185				elem.style[ dimension ] = value;
20186				value = jQuery.css( elem, dimension );
20187			}
20188
20189			return setPositiveNumber( elem, value, subtract );
20190		}
20191	};
20192} );
20193
20194jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
20195	function( elem, computed ) {
20196		if ( computed ) {
20197			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
20198				elem.getBoundingClientRect().left -
20199					swap( elem, { marginLeft: 0 }, function() {
20200						return elem.getBoundingClientRect().left;
20201					} )
20202			) + "px";
20203		}
20204	}
20205);
20206
20207// These hooks are used by animate to expand properties
20208jQuery.each( {
20209	margin: "",
20210	padding: "",
20211	border: "Width"
20212}, function( prefix, suffix ) {
20213	jQuery.cssHooks[ prefix + suffix ] = {
20214		expand: function( value ) {
20215			var i = 0,
20216				expanded = {},
20217
20218				// Assumes a single number if not a string
20219				parts = typeof value === "string" ? value.split( " " ) : [ value ];
20220
20221			for ( ; i < 4; i++ ) {
20222				expanded[ prefix + cssExpand[ i ] + suffix ] =
20223					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
20224			}
20225
20226			return expanded;
20227		}
20228	};
20229
20230	if ( prefix !== "margin" ) {
20231		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
20232	}
20233} );
20234
20235jQuery.fn.extend( {
20236	css: function( name, value ) {
20237		return access( this, function( elem, name, value ) {
20238			var styles, len,
20239				map = {},
20240				i = 0;
20241
20242			if ( Array.isArray( name ) ) {
20243				styles = getStyles( elem );
20244				len = name.length;
20245
20246				for ( ; i < len; i++ ) {
20247					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
20248				}
20249
20250				return map;
20251			}
20252
20253			return value !== undefined ?
20254				jQuery.style( elem, name, value ) :
20255				jQuery.css( elem, name );
20256		}, name, value, arguments.length > 1 );
20257	}
20258} );
20259
20260
20261function Tween( elem, options, prop, end, easing ) {
20262	return new Tween.prototype.init( elem, options, prop, end, easing );
20263}
20264jQuery.Tween = Tween;
20265
20266Tween.prototype = {
20267	constructor: Tween,
20268	init: function( elem, options, prop, end, easing, unit ) {
20269		this.elem = elem;
20270		this.prop = prop;
20271		this.easing = easing || jQuery.easing._default;
20272		this.options = options;
20273		this.start = this.now = this.cur();
20274		this.end = end;
20275		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
20276	},
20277	cur: function() {
20278		var hooks = Tween.propHooks[ this.prop ];
20279
20280		return hooks && hooks.get ?
20281			hooks.get( this ) :
20282			Tween.propHooks._default.get( this );
20283	},
20284	run: function( percent ) {
20285		var eased,
20286			hooks = Tween.propHooks[ this.prop ];
20287
20288		if ( this.options.duration ) {
20289			this.pos = eased = jQuery.easing[ this.easing ](
20290				percent, this.options.duration * percent, 0, 1, this.options.duration
20291			);
20292		} else {
20293			this.pos = eased = percent;
20294		}
20295		this.now = ( this.end - this.start ) * eased + this.start;
20296
20297		if ( this.options.step ) {
20298			this.options.step.call( this.elem, this.now, this );
20299		}
20300
20301		if ( hooks && hooks.set ) {
20302			hooks.set( this );
20303		} else {
20304			Tween.propHooks._default.set( this );
20305		}
20306		return this;
20307	}
20308};
20309
20310Tween.prototype.init.prototype = Tween.prototype;
20311
20312Tween.propHooks = {
20313	_default: {
20314		get: function( tween ) {
20315			var result;
20316
20317			// Use a property on the element directly when it is not a DOM element,
20318			// or when there is no matching style property that exists.
20319			if ( tween.elem.nodeType !== 1 ||
20320				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
20321				return tween.elem[ tween.prop ];
20322			}
20323
20324			// Passing an empty string as a 3rd parameter to .css will automatically
20325			// attempt a parseFloat and fallback to a string if the parse fails.
20326			// Simple values such as "10px" are parsed to Float;
20327			// complex values such as "rotate(1rad)" are returned as-is.
20328			result = jQuery.css( tween.elem, tween.prop, "" );
20329
20330			// Empty strings, null, undefined and "auto" are converted to 0.
20331			return !result || result === "auto" ? 0 : result;
20332		},
20333		set: function( tween ) {
20334
20335			// Use step hook for back compat.
20336			// Use cssHook if its there.
20337			// Use .style if available and use plain properties where available.
20338			if ( jQuery.fx.step[ tween.prop ] ) {
20339				jQuery.fx.step[ tween.prop ]( tween );
20340			} else if ( tween.elem.nodeType === 1 && (
20341				jQuery.cssHooks[ tween.prop ] ||
20342					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
20343				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
20344			} else {
20345				tween.elem[ tween.prop ] = tween.now;
20346			}
20347		}
20348	}
20349};
20350
20351// Support: IE <=9 only
20352// Panic based approach to setting things on disconnected nodes
20353Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
20354	set: function( tween ) {
20355		if ( tween.elem.nodeType && tween.elem.parentNode ) {
20356			tween.elem[ tween.prop ] = tween.now;
20357		}
20358	}
20359};
20360
20361jQuery.easing = {
20362	linear: function( p ) {
20363		return p;
20364	},
20365	swing: function( p ) {
20366		return 0.5 - Math.cos( p * Math.PI ) / 2;
20367	},
20368	_default: "swing"
20369};
20370
20371jQuery.fx = Tween.prototype.init;
20372
20373// Back compat <1.8 extension point
20374jQuery.fx.step = {};
20375
20376
20377
20378
20379var
20380	fxNow, inProgress,
20381	rfxtypes = /^(?:toggle|show|hide)$/,
20382	rrun = /queueHooks$/;
20383
20384function schedule() {
20385	if ( inProgress ) {
20386		if ( document.hidden === false && window.requestAnimationFrame ) {
20387			window.requestAnimationFrame( schedule );
20388		} else {
20389			window.setTimeout( schedule, jQuery.fx.interval );
20390		}
20391
20392		jQuery.fx.tick();
20393	}
20394}
20395
20396// Animations created synchronously will run synchronously
20397function createFxNow() {
20398	window.setTimeout( function() {
20399		fxNow = undefined;
20400	} );
20401	return ( fxNow = Date.now() );
20402}
20403
20404// Generate parameters to create a standard animation
20405function genFx( type, includeWidth ) {
20406	var which,
20407		i = 0,
20408		attrs = { height: type };
20409
20410	// If we include width, step value is 1 to do all cssExpand values,
20411	// otherwise step value is 2 to skip over Left and Right
20412	includeWidth = includeWidth ? 1 : 0;
20413	for ( ; i < 4; i += 2 - includeWidth ) {
20414		which = cssExpand[ i ];
20415		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
20416	}
20417
20418	if ( includeWidth ) {
20419		attrs.opacity = attrs.width = type;
20420	}
20421
20422	return attrs;
20423}
20424
20425function createTween( value, prop, animation ) {
20426	var tween,
20427		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
20428		index = 0,
20429		length = collection.length;
20430	for ( ; index < length; index++ ) {
20431		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
20432
20433			// We're done with this property
20434			return tween;
20435		}
20436	}
20437}
20438
20439function defaultPrefilter( elem, props, opts ) {
20440	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
20441		isBox = "width" in props || "height" in props,
20442		anim = this,
20443		orig = {},
20444		style = elem.style,
20445		hidden = elem.nodeType && isHiddenWithinTree( elem ),
20446		dataShow = dataPriv.get( elem, "fxshow" );
20447
20448	// Queue-skipping animations hijack the fx hooks
20449	if ( !opts.queue ) {
20450		hooks = jQuery._queueHooks( elem, "fx" );
20451		if ( hooks.unqueued == null ) {
20452			hooks.unqueued = 0;
20453			oldfire = hooks.empty.fire;
20454			hooks.empty.fire = function() {
20455				if ( !hooks.unqueued ) {
20456					oldfire();
20457				}
20458			};
20459		}
20460		hooks.unqueued++;
20461
20462		anim.always( function() {
20463
20464			// Ensure the complete handler is called before this completes
20465			anim.always( function() {
20466				hooks.unqueued--;
20467				if ( !jQuery.queue( elem, "fx" ).length ) {
20468					hooks.empty.fire();
20469				}
20470			} );
20471		} );
20472	}
20473
20474	// Detect show/hide animations
20475	for ( prop in props ) {
20476		value = props[ prop ];
20477		if ( rfxtypes.test( value ) ) {
20478			delete props[ prop ];
20479			toggle = toggle || value === "toggle";
20480			if ( value === ( hidden ? "hide" : "show" ) ) {
20481
20482				// Pretend to be hidden if this is a "show" and
20483				// there is still data from a stopped show/hide
20484				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
20485					hidden = true;
20486
20487				// Ignore all other no-op show/hide data
20488				} else {
20489					continue;
20490				}
20491			}
20492			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
20493		}
20494	}
20495
20496	// Bail out if this is a no-op like .hide().hide()
20497	propTween = !jQuery.isEmptyObject( props );
20498	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
20499		return;
20500	}
20501
20502	// Restrict "overflow" and "display" styles during box animations
20503	if ( isBox && elem.nodeType === 1 ) {
20504
20505		// Support: IE <=9 - 11, Edge 12 - 15
20506		// Record all 3 overflow attributes because IE does not infer the shorthand
20507		// from identically-valued overflowX and overflowY and Edge just mirrors
20508		// the overflowX value there.
20509		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
20510
20511		// Identify a display type, preferring old show/hide data over the CSS cascade
20512		restoreDisplay = dataShow && dataShow.display;
20513		if ( restoreDisplay == null ) {
20514			restoreDisplay = dataPriv.get( elem, "display" );
20515		}
20516		display = jQuery.css( elem, "display" );
20517		if ( display === "none" ) {
20518			if ( restoreDisplay ) {
20519				display = restoreDisplay;
20520			} else {
20521
20522				// Get nonempty value(s) by temporarily forcing visibility
20523				showHide( [ elem ], true );
20524				restoreDisplay = elem.style.display || restoreDisplay;
20525				display = jQuery.css( elem, "display" );
20526				showHide( [ elem ] );
20527			}
20528		}
20529
20530		// Animate inline elements as inline-block
20531		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
20532			if ( jQuery.css( elem, "float" ) === "none" ) {
20533
20534				// Restore the original display value at the end of pure show/hide animations
20535				if ( !propTween ) {
20536					anim.done( function() {
20537						style.display = restoreDisplay;
20538					} );
20539					if ( restoreDisplay == null ) {
20540						display = style.display;
20541						restoreDisplay = display === "none" ? "" : display;
20542					}
20543				}
20544				style.display = "inline-block";
20545			}
20546		}
20547	}
20548
20549	if ( opts.overflow ) {
20550		style.overflow = "hidden";
20551		anim.always( function() {
20552			style.overflow = opts.overflow[ 0 ];
20553			style.overflowX = opts.overflow[ 1 ];
20554			style.overflowY = opts.overflow[ 2 ];
20555		} );
20556	}
20557
20558	// Implement show/hide animations
20559	propTween = false;
20560	for ( prop in orig ) {
20561
20562		// General show/hide setup for this element animation
20563		if ( !propTween ) {
20564			if ( dataShow ) {
20565				if ( "hidden" in dataShow ) {
20566					hidden = dataShow.hidden;
20567				}
20568			} else {
20569				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
20570			}
20571
20572			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
20573			if ( toggle ) {
20574				dataShow.hidden = !hidden;
20575			}
20576
20577			// Show elements before animating them
20578			if ( hidden ) {
20579				showHide( [ elem ], true );
20580			}
20581
20582			/* eslint-disable no-loop-func */
20583
20584			anim.done( function() {
20585
20586				/* eslint-enable no-loop-func */
20587
20588				// The final step of a "hide" animation is actually hiding the element
20589				if ( !hidden ) {
20590					showHide( [ elem ] );
20591				}
20592				dataPriv.remove( elem, "fxshow" );
20593				for ( prop in orig ) {
20594					jQuery.style( elem, prop, orig[ prop ] );
20595				}
20596			} );
20597		}
20598
20599		// Per-property setup
20600		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
20601		if ( !( prop in dataShow ) ) {
20602			dataShow[ prop ] = propTween.start;
20603			if ( hidden ) {
20604				propTween.end = propTween.start;
20605				propTween.start = 0;
20606			}
20607		}
20608	}
20609}
20610
20611function propFilter( props, specialEasing ) {
20612	var index, name, easing, value, hooks;
20613
20614	// camelCase, specialEasing and expand cssHook pass
20615	for ( index in props ) {
20616		name = camelCase( index );
20617		easing = specialEasing[ name ];
20618		value = props[ index ];
20619		if ( Array.isArray( value ) ) {
20620			easing = value[ 1 ];
20621			value = props[ index ] = value[ 0 ];
20622		}
20623
20624		if ( index !== name ) {
20625			props[ name ] = value;
20626			delete props[ index ];
20627		}
20628
20629		hooks = jQuery.cssHooks[ name ];
20630		if ( hooks && "expand" in hooks ) {
20631			value = hooks.expand( value );
20632			delete props[ name ];
20633
20634			// Not quite $.extend, this won't overwrite existing keys.
20635			// Reusing 'index' because we have the correct "name"
20636			for ( index in value ) {
20637				if ( !( index in props ) ) {
20638					props[ index ] = value[ index ];
20639					specialEasing[ index ] = easing;
20640				}
20641			}
20642		} else {
20643			specialEasing[ name ] = easing;
20644		}
20645	}
20646}
20647
20648function Animation( elem, properties, options ) {
20649	var result,
20650		stopped,
20651		index = 0,
20652		length = Animation.prefilters.length,
20653		deferred = jQuery.Deferred().always( function() {
20654
20655			// Don't match elem in the :animated selector
20656			delete tick.elem;
20657		} ),
20658		tick = function() {
20659			if ( stopped ) {
20660				return false;
20661			}
20662			var currentTime = fxNow || createFxNow(),
20663				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
20664
20665				// Support: Android 2.3 only
20666				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
20667				temp = remaining / animation.duration || 0,
20668				percent = 1 - temp,
20669				index = 0,
20670				length = animation.tweens.length;
20671
20672			for ( ; index < length; index++ ) {
20673				animation.tweens[ index ].run( percent );
20674			}
20675
20676			deferred.notifyWith( elem, [ animation, percent, remaining ] );
20677
20678			// If there's more to do, yield
20679			if ( percent < 1 && length ) {
20680				return remaining;
20681			}
20682
20683			// If this was an empty animation, synthesize a final progress notification
20684			if ( !length ) {
20685				deferred.notifyWith( elem, [ animation, 1, 0 ] );
20686			}
20687
20688			// Resolve the animation and report its conclusion
20689			deferred.resolveWith( elem, [ animation ] );
20690			return false;
20691		},
20692		animation = deferred.promise( {
20693			elem: elem,
20694			props: jQuery.extend( {}, properties ),
20695			opts: jQuery.extend( true, {
20696				specialEasing: {},
20697				easing: jQuery.easing._default
20698			}, options ),
20699			originalProperties: properties,
20700			originalOptions: options,
20701			startTime: fxNow || createFxNow(),
20702			duration: options.duration,
20703			tweens: [],
20704			createTween: function( prop, end ) {
20705				var tween = jQuery.Tween( elem, animation.opts, prop, end,
20706					animation.opts.specialEasing[ prop ] || animation.opts.easing );
20707				animation.tweens.push( tween );
20708				return tween;
20709			},
20710			stop: function( gotoEnd ) {
20711				var index = 0,
20712
20713					// If we are going to the end, we want to run all the tweens
20714					// otherwise we skip this part
20715					length = gotoEnd ? animation.tweens.length : 0;
20716				if ( stopped ) {
20717					return this;
20718				}
20719				stopped = true;
20720				for ( ; index < length; index++ ) {
20721					animation.tweens[ index ].run( 1 );
20722				}
20723
20724				// Resolve when we played the last frame; otherwise, reject
20725				if ( gotoEnd ) {
20726					deferred.notifyWith( elem, [ animation, 1, 0 ] );
20727					deferred.resolveWith( elem, [ animation, gotoEnd ] );
20728				} else {
20729					deferred.rejectWith( elem, [ animation, gotoEnd ] );
20730				}
20731				return this;
20732			}
20733		} ),
20734		props = animation.props;
20735
20736	propFilter( props, animation.opts.specialEasing );
20737
20738	for ( ; index < length; index++ ) {
20739		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
20740		if ( result ) {
20741			if ( isFunction( result.stop ) ) {
20742				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
20743					result.stop.bind( result );
20744			}
20745			return result;
20746		}
20747	}
20748
20749	jQuery.map( props, createTween, animation );
20750
20751	if ( isFunction( animation.opts.start ) ) {
20752		animation.opts.start.call( elem, animation );
20753	}
20754
20755	// Attach callbacks from options
20756	animation
20757		.progress( animation.opts.progress )
20758		.done( animation.opts.done, animation.opts.complete )
20759		.fail( animation.opts.fail )
20760		.always( animation.opts.always );
20761
20762	jQuery.fx.timer(
20763		jQuery.extend( tick, {
20764			elem: elem,
20765			anim: animation,
20766			queue: animation.opts.queue
20767		} )
20768	);
20769
20770	return animation;
20771}
20772
20773jQuery.Animation = jQuery.extend( Animation, {
20774
20775	tweeners: {
20776		"*": [ function( prop, value ) {
20777			var tween = this.createTween( prop, value );
20778			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
20779			return tween;
20780		} ]
20781	},
20782
20783	tweener: function( props, callback ) {
20784		if ( isFunction( props ) ) {
20785			callback = props;
20786			props = [ "*" ];
20787		} else {
20788			props = props.match( rnothtmlwhite );
20789		}
20790
20791		var prop,
20792			index = 0,
20793			length = props.length;
20794
20795		for ( ; index < length; index++ ) {
20796			prop = props[ index ];
20797			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
20798			Animation.tweeners[ prop ].unshift( callback );
20799		}
20800	},
20801
20802	prefilters: [ defaultPrefilter ],
20803
20804	prefilter: function( callback, prepend ) {
20805		if ( prepend ) {
20806			Animation.prefilters.unshift( callback );
20807		} else {
20808			Animation.prefilters.push( callback );
20809		}
20810	}
20811} );
20812
20813jQuery.speed = function( speed, easing, fn ) {
20814	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
20815		complete: fn || !fn && easing ||
20816			isFunction( speed ) && speed,
20817		duration: speed,
20818		easing: fn && easing || easing && !isFunction( easing ) && easing
20819	};
20820
20821	// Go to the end state if fx are off
20822	if ( jQuery.fx.off ) {
20823		opt.duration = 0;
20824
20825	} else {
20826		if ( typeof opt.duration !== "number" ) {
20827			if ( opt.duration in jQuery.fx.speeds ) {
20828				opt.duration = jQuery.fx.speeds[ opt.duration ];
20829
20830			} else {
20831				opt.duration = jQuery.fx.speeds._default;
20832			}
20833		}
20834	}
20835
20836	// Normalize opt.queue - true/undefined/null -> "fx"
20837	if ( opt.queue == null || opt.queue === true ) {
20838		opt.queue = "fx";
20839	}
20840
20841	// Queueing
20842	opt.old = opt.complete;
20843
20844	opt.complete = function() {
20845		if ( isFunction( opt.old ) ) {
20846			opt.old.call( this );
20847		}
20848
20849		if ( opt.queue ) {
20850			jQuery.dequeue( this, opt.queue );
20851		}
20852	};
20853
20854	return opt;
20855};
20856
20857jQuery.fn.extend( {
20858	fadeTo: function( speed, to, easing, callback ) {
20859
20860		// Show any hidden elements after setting opacity to 0
20861		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
20862
20863			// Animate to the value specified
20864			.end().animate( { opacity: to }, speed, easing, callback );
20865	},
20866	animate: function( prop, speed, easing, callback ) {
20867		var empty = jQuery.isEmptyObject( prop ),
20868			optall = jQuery.speed( speed, easing, callback ),
20869			doAnimation = function() {
20870
20871				// Operate on a copy of prop so per-property easing won't be lost
20872				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
20873
20874				// Empty animations, or finishing resolves immediately
20875				if ( empty || dataPriv.get( this, "finish" ) ) {
20876					anim.stop( true );
20877				}
20878			};
20879
20880		doAnimation.finish = doAnimation;
20881
20882		return empty || optall.queue === false ?
20883			this.each( doAnimation ) :
20884			this.queue( optall.queue, doAnimation );
20885	},
20886	stop: function( type, clearQueue, gotoEnd ) {
20887		var stopQueue = function( hooks ) {
20888			var stop = hooks.stop;
20889			delete hooks.stop;
20890			stop( gotoEnd );
20891		};
20892
20893		if ( typeof type !== "string" ) {
20894			gotoEnd = clearQueue;
20895			clearQueue = type;
20896			type = undefined;
20897		}
20898		if ( clearQueue ) {
20899			this.queue( type || "fx", [] );
20900		}
20901
20902		return this.each( function() {
20903			var dequeue = true,
20904				index = type != null && type + "queueHooks",
20905				timers = jQuery.timers,
20906				data = dataPriv.get( this );
20907
20908			if ( index ) {
20909				if ( data[ index ] && data[ index ].stop ) {
20910					stopQueue( data[ index ] );
20911				}
20912			} else {
20913				for ( index in data ) {
20914					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
20915						stopQueue( data[ index ] );
20916					}
20917				}
20918			}
20919
20920			for ( index = timers.length; index--; ) {
20921				if ( timers[ index ].elem === this &&
20922					( type == null || timers[ index ].queue === type ) ) {
20923
20924					timers[ index ].anim.stop( gotoEnd );
20925					dequeue = false;
20926					timers.splice( index, 1 );
20927				}
20928			}
20929
20930			// Start the next in the queue if the last step wasn't forced.
20931			// Timers currently will call their complete callbacks, which
20932			// will dequeue but only if they were gotoEnd.
20933			if ( dequeue || !gotoEnd ) {
20934				jQuery.dequeue( this, type );
20935			}
20936		} );
20937	},
20938	finish: function( type ) {
20939		if ( type !== false ) {
20940			type = type || "fx";
20941		}
20942		return this.each( function() {
20943			var index,
20944				data = dataPriv.get( this ),
20945				queue = data[ type + "queue" ],
20946				hooks = data[ type + "queueHooks" ],
20947				timers = jQuery.timers,
20948				length = queue ? queue.length : 0;
20949
20950			// Enable finishing flag on private data
20951			data.finish = true;
20952
20953			// Empty the queue first
20954			jQuery.queue( this, type, [] );
20955
20956			if ( hooks && hooks.stop ) {
20957				hooks.stop.call( this, true );
20958			}
20959
20960			// Look for any active animations, and finish them
20961			for ( index = timers.length; index--; ) {
20962				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
20963					timers[ index ].anim.stop( true );
20964					timers.splice( index, 1 );
20965				}
20966			}
20967
20968			// Look for any animations in the old queue and finish them
20969			for ( index = 0; index < length; index++ ) {
20970				if ( queue[ index ] && queue[ index ].finish ) {
20971					queue[ index ].finish.call( this );
20972				}
20973			}
20974
20975			// Turn off finishing flag
20976			delete data.finish;
20977		} );
20978	}
20979} );
20980
20981jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
20982	var cssFn = jQuery.fn[ name ];
20983	jQuery.fn[ name ] = function( speed, easing, callback ) {
20984		return speed == null || typeof speed === "boolean" ?
20985			cssFn.apply( this, arguments ) :
20986			this.animate( genFx( name, true ), speed, easing, callback );
20987	};
20988} );
20989
20990// Generate shortcuts for custom animations
20991jQuery.each( {
20992	slideDown: genFx( "show" ),
20993	slideUp: genFx( "hide" ),
20994	slideToggle: genFx( "toggle" ),
20995	fadeIn: { opacity: "show" },
20996	fadeOut: { opacity: "hide" },
20997	fadeToggle: { opacity: "toggle" }
20998}, function( name, props ) {
20999	jQuery.fn[ name ] = function( speed, easing, callback ) {
21000		return this.animate( props, speed, easing, callback );
21001	};
21002} );
21003
21004jQuery.timers = [];
21005jQuery.fx.tick = function() {
21006	var timer,
21007		i = 0,
21008		timers = jQuery.timers;
21009
21010	fxNow = Date.now();
21011
21012	for ( ; i < timers.length; i++ ) {
21013		timer = timers[ i ];
21014
21015		// Run the timer and safely remove it when done (allowing for external removal)
21016		if ( !timer() && timers[ i ] === timer ) {
21017			timers.splice( i--, 1 );
21018		}
21019	}
21020
21021	if ( !timers.length ) {
21022		jQuery.fx.stop();
21023	}
21024	fxNow = undefined;
21025};
21026
21027jQuery.fx.timer = function( timer ) {
21028	jQuery.timers.push( timer );
21029	jQuery.fx.start();
21030};
21031
21032jQuery.fx.interval = 13;
21033jQuery.fx.start = function() {
21034	if ( inProgress ) {
21035		return;
21036	}
21037
21038	inProgress = true;
21039	schedule();
21040};
21041
21042jQuery.fx.stop = function() {
21043	inProgress = null;
21044};
21045
21046jQuery.fx.speeds = {
21047	slow: 600,
21048	fast: 200,
21049
21050	// Default speed
21051	_default: 400
21052};
21053
21054
21055// Based off of the plugin by Clint Helfers, with permission.
21056jQuery.fn.delay = function( time, type ) {
21057	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
21058	type = type || "fx";
21059
21060	return this.queue( type, function( next, hooks ) {
21061		var timeout = window.setTimeout( next, time );
21062		hooks.stop = function() {
21063			window.clearTimeout( timeout );
21064		};
21065	} );
21066};
21067
21068
21069( function() {
21070	var input = document.createElement( "input" ),
21071		select = document.createElement( "select" ),
21072		opt = select.appendChild( document.createElement( "option" ) );
21073
21074	input.type = "checkbox";
21075
21076	// Support: Android <=4.3 only
21077	// Default value for a checkbox should be "on"
21078	support.checkOn = input.value !== "";
21079
21080	// Support: IE <=11 only
21081	// Must access selectedIndex to make default options select
21082	support.optSelected = opt.selected;
21083
21084	// Support: IE <=11 only
21085	// An input loses its value after becoming a radio
21086	input = document.createElement( "input" );
21087	input.value = "t";
21088	input.type = "radio";
21089	support.radioValue = input.value === "t";
21090} )();
21091
21092
21093var boolHook,
21094	attrHandle = jQuery.expr.attrHandle;
21095
21096jQuery.fn.extend( {
21097	attr: function( name, value ) {
21098		return access( this, jQuery.attr, name, value, arguments.length > 1 );
21099	},
21100
21101	removeAttr: function( name ) {
21102		return this.each( function() {
21103			jQuery.removeAttr( this, name );
21104		} );
21105	}
21106} );
21107
21108jQuery.extend( {
21109	attr: function( elem, name, value ) {
21110		var ret, hooks,
21111			nType = elem.nodeType;
21112
21113		// Don't get/set attributes on text, comment and attribute nodes
21114		if ( nType === 3 || nType === 8 || nType === 2 ) {
21115			return;
21116		}
21117
21118		// Fallback to prop when attributes are not supported
21119		if ( typeof elem.getAttribute === "undefined" ) {
21120			return jQuery.prop( elem, name, value );
21121		}
21122
21123		// Attribute hooks are determined by the lowercase version
21124		// Grab necessary hook if one is defined
21125		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
21126			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
21127				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
21128		}
21129
21130		if ( value !== undefined ) {
21131			if ( value === null ) {
21132				jQuery.removeAttr( elem, name );
21133				return;
21134			}
21135
21136			if ( hooks && "set" in hooks &&
21137				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
21138				return ret;
21139			}
21140
21141			elem.setAttribute( name, value + "" );
21142			return value;
21143		}
21144
21145		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
21146			return ret;
21147		}
21148
21149		ret = jQuery.find.attr( elem, name );
21150
21151		// Non-existent attributes return null, we normalize to undefined
21152		return ret == null ? undefined : ret;
21153	},
21154
21155	attrHooks: {
21156		type: {
21157			set: function( elem, value ) {
21158				if ( !support.radioValue && value === "radio" &&
21159					nodeName( elem, "input" ) ) {
21160					var val = elem.value;
21161					elem.setAttribute( "type", value );
21162					if ( val ) {
21163						elem.value = val;
21164					}
21165					return value;
21166				}
21167			}
21168		}
21169	},
21170
21171	removeAttr: function( elem, value ) {
21172		var name,
21173			i = 0,
21174
21175			// Attribute names can contain non-HTML whitespace characters
21176			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
21177			attrNames = value && value.match( rnothtmlwhite );
21178
21179		if ( attrNames && elem.nodeType === 1 ) {
21180			while ( ( name = attrNames[ i++ ] ) ) {
21181				elem.removeAttribute( name );
21182			}
21183		}
21184	}
21185} );
21186
21187// Hooks for boolean attributes
21188boolHook = {
21189	set: function( elem, value, name ) {
21190		if ( value === false ) {
21191
21192			// Remove boolean attributes when set to false
21193			jQuery.removeAttr( elem, name );
21194		} else {
21195			elem.setAttribute( name, name );
21196		}
21197		return name;
21198	}
21199};
21200
21201jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
21202	var getter = attrHandle[ name ] || jQuery.find.attr;
21203
21204	attrHandle[ name ] = function( elem, name, isXML ) {
21205		var ret, handle,
21206			lowercaseName = name.toLowerCase();
21207
21208		if ( !isXML ) {
21209
21210			// Avoid an infinite loop by temporarily removing this function from the getter
21211			handle = attrHandle[ lowercaseName ];
21212			attrHandle[ lowercaseName ] = ret;
21213			ret = getter( elem, name, isXML ) != null ?
21214				lowercaseName :
21215				null;
21216			attrHandle[ lowercaseName ] = handle;
21217		}
21218		return ret;
21219	};
21220} );
21221
21222
21223
21224
21225var rfocusable = /^(?:input|select|textarea|button)$/i,
21226	rclickable = /^(?:a|area)$/i;
21227
21228jQuery.fn.extend( {
21229	prop: function( name, value ) {
21230		return access( this, jQuery.prop, name, value, arguments.length > 1 );
21231	},
21232
21233	removeProp: function( name ) {
21234		return this.each( function() {
21235			delete this[ jQuery.propFix[ name ] || name ];
21236		} );
21237	}
21238} );
21239
21240jQuery.extend( {
21241	prop: function( elem, name, value ) {
21242		var ret, hooks,
21243			nType = elem.nodeType;
21244
21245		// Don't get/set properties on text, comment and attribute nodes
21246		if ( nType === 3 || nType === 8 || nType === 2 ) {
21247			return;
21248		}
21249
21250		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
21251
21252			// Fix name and attach hooks
21253			name = jQuery.propFix[ name ] || name;
21254			hooks = jQuery.propHooks[ name ];
21255		}
21256
21257		if ( value !== undefined ) {
21258			if ( hooks && "set" in hooks &&
21259				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
21260				return ret;
21261			}
21262
21263			return ( elem[ name ] = value );
21264		}
21265
21266		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
21267			return ret;
21268		}
21269
21270		return elem[ name ];
21271	},
21272
21273	propHooks: {
21274		tabIndex: {
21275			get: function( elem ) {
21276
21277				// Support: IE <=9 - 11 only
21278				// elem.tabIndex doesn't always return the
21279				// correct value when it hasn't been explicitly set
21280				// Use proper attribute retrieval (trac-12072)
21281				var tabindex = jQuery.find.attr( elem, "tabindex" );
21282
21283				if ( tabindex ) {
21284					return parseInt( tabindex, 10 );
21285				}
21286
21287				if (
21288					rfocusable.test( elem.nodeName ) ||
21289					rclickable.test( elem.nodeName ) &&
21290					elem.href
21291				) {
21292					return 0;
21293				}
21294
21295				return -1;
21296			}
21297		}
21298	},
21299
21300	propFix: {
21301		"for": "htmlFor",
21302		"class": "className"
21303	}
21304} );
21305
21306// Support: IE <=11 only
21307// Accessing the selectedIndex property
21308// forces the browser to respect setting selected
21309// on the option
21310// The getter ensures a default option is selected
21311// when in an optgroup
21312// eslint rule "no-unused-expressions" is disabled for this code
21313// since it considers such accessions noop
21314if ( !support.optSelected ) {
21315	jQuery.propHooks.selected = {
21316		get: function( elem ) {
21317
21318			/* eslint no-unused-expressions: "off" */
21319
21320			var parent = elem.parentNode;
21321			if ( parent && parent.parentNode ) {
21322				parent.parentNode.selectedIndex;
21323			}
21324			return null;
21325		},
21326		set: function( elem ) {
21327
21328			/* eslint no-unused-expressions: "off" */
21329
21330			var parent = elem.parentNode;
21331			if ( parent ) {
21332				parent.selectedIndex;
21333
21334				if ( parent.parentNode ) {
21335					parent.parentNode.selectedIndex;
21336				}
21337			}
21338		}
21339	};
21340}
21341
21342jQuery.each( [
21343	"tabIndex",
21344	"readOnly",
21345	"maxLength",
21346	"cellSpacing",
21347	"cellPadding",
21348	"rowSpan",
21349	"colSpan",
21350	"useMap",
21351	"frameBorder",
21352	"contentEditable"
21353], function() {
21354	jQuery.propFix[ this.toLowerCase() ] = this;
21355} );
21356
21357
21358
21359
21360	// Strip and collapse whitespace according to HTML spec
21361	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
21362	function stripAndCollapse( value ) {
21363		var tokens = value.match( rnothtmlwhite ) || [];
21364		return tokens.join( " " );
21365	}
21366
21367
21368function getClass( elem ) {
21369	return elem.getAttribute && elem.getAttribute( "class" ) || "";
21370}
21371
21372function classesToArray( value ) {
21373	if ( Array.isArray( value ) ) {
21374		return value;
21375	}
21376	if ( typeof value === "string" ) {
21377		return value.match( rnothtmlwhite ) || [];
21378	}
21379	return [];
21380}
21381
21382jQuery.fn.extend( {
21383	addClass: function( value ) {
21384		var classNames, cur, curValue, className, i, finalValue;
21385
21386		if ( isFunction( value ) ) {
21387			return this.each( function( j ) {
21388				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
21389			} );
21390		}
21391
21392		classNames = classesToArray( value );
21393
21394		if ( classNames.length ) {
21395			return this.each( function() {
21396				curValue = getClass( this );
21397				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
21398
21399				if ( cur ) {
21400					for ( i = 0; i < classNames.length; i++ ) {
21401						className = classNames[ i ];
21402						if ( cur.indexOf( " " + className + " " ) < 0 ) {
21403							cur += className + " ";
21404						}
21405					}
21406
21407					// Only assign if different to avoid unneeded rendering.
21408					finalValue = stripAndCollapse( cur );
21409					if ( curValue !== finalValue ) {
21410						this.setAttribute( "class", finalValue );
21411					}
21412				}
21413			} );
21414		}
21415
21416		return this;
21417	},
21418
21419	removeClass: function( value ) {
21420		var classNames, cur, curValue, className, i, finalValue;
21421
21422		if ( isFunction( value ) ) {
21423			return this.each( function( j ) {
21424				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
21425			} );
21426		}
21427
21428		if ( !arguments.length ) {
21429			return this.attr( "class", "" );
21430		}
21431
21432		classNames = classesToArray( value );
21433
21434		if ( classNames.length ) {
21435			return this.each( function() {
21436				curValue = getClass( this );
21437
21438				// This expression is here for better compressibility (see addClass)
21439				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
21440
21441				if ( cur ) {
21442					for ( i = 0; i < classNames.length; i++ ) {
21443						className = classNames[ i ];
21444
21445						// Remove *all* instances
21446						while ( cur.indexOf( " " + className + " " ) > -1 ) {
21447							cur = cur.replace( " " + className + " ", " " );
21448						}
21449					}
21450
21451					// Only assign if different to avoid unneeded rendering.
21452					finalValue = stripAndCollapse( cur );
21453					if ( curValue !== finalValue ) {
21454						this.setAttribute( "class", finalValue );
21455					}
21456				}
21457			} );
21458		}
21459
21460		return this;
21461	},
21462
21463	toggleClass: function( value, stateVal ) {
21464		var classNames, className, i, self,
21465			type = typeof value,
21466			isValidValue = type === "string" || Array.isArray( value );
21467
21468		if ( isFunction( value ) ) {
21469			return this.each( function( i ) {
21470				jQuery( this ).toggleClass(
21471					value.call( this, i, getClass( this ), stateVal ),
21472					stateVal
21473				);
21474			} );
21475		}
21476
21477		if ( typeof stateVal === "boolean" && isValidValue ) {
21478			return stateVal ? this.addClass( value ) : this.removeClass( value );
21479		}
21480
21481		classNames = classesToArray( value );
21482
21483		return this.each( function() {
21484			if ( isValidValue ) {
21485
21486				// Toggle individual class names
21487				self = jQuery( this );
21488
21489				for ( i = 0; i < classNames.length; i++ ) {
21490					className = classNames[ i ];
21491
21492					// Check each className given, space separated list
21493					if ( self.hasClass( className ) ) {
21494						self.removeClass( className );
21495					} else {
21496						self.addClass( className );
21497					}
21498				}
21499
21500			// Toggle whole class name
21501			} else if ( value === undefined || type === "boolean" ) {
21502				className = getClass( this );
21503				if ( className ) {
21504
21505					// Store className if set
21506					dataPriv.set( this, "__className__", className );
21507				}
21508
21509				// If the element has a class name or if we're passed `false`,
21510				// then remove the whole classname (if there was one, the above saved it).
21511				// Otherwise bring back whatever was previously saved (if anything),
21512				// falling back to the empty string if nothing was stored.
21513				if ( this.setAttribute ) {
21514					this.setAttribute( "class",
21515						className || value === false ?
21516							"" :
21517							dataPriv.get( this, "__className__" ) || ""
21518					);
21519				}
21520			}
21521		} );
21522	},
21523
21524	hasClass: function( selector ) {
21525		var className, elem,
21526			i = 0;
21527
21528		className = " " + selector + " ";
21529		while ( ( elem = this[ i++ ] ) ) {
21530			if ( elem.nodeType === 1 &&
21531				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
21532				return true;
21533			}
21534		}
21535
21536		return false;
21537	}
21538} );
21539
21540
21541
21542
21543var rreturn = /\r/g;
21544
21545jQuery.fn.extend( {
21546	val: function( value ) {
21547		var hooks, ret, valueIsFunction,
21548			elem = this[ 0 ];
21549
21550		if ( !arguments.length ) {
21551			if ( elem ) {
21552				hooks = jQuery.valHooks[ elem.type ] ||
21553					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
21554
21555				if ( hooks &&
21556					"get" in hooks &&
21557					( ret = hooks.get( elem, "value" ) ) !== undefined
21558				) {
21559					return ret;
21560				}
21561
21562				ret = elem.value;
21563
21564				// Handle most common string cases
21565				if ( typeof ret === "string" ) {
21566					return ret.replace( rreturn, "" );
21567				}
21568
21569				// Handle cases where value is null/undef or number
21570				return ret == null ? "" : ret;
21571			}
21572
21573			return;
21574		}
21575
21576		valueIsFunction = isFunction( value );
21577
21578		return this.each( function( i ) {
21579			var val;
21580
21581			if ( this.nodeType !== 1 ) {
21582				return;
21583			}
21584
21585			if ( valueIsFunction ) {
21586				val = value.call( this, i, jQuery( this ).val() );
21587			} else {
21588				val = value;
21589			}
21590
21591			// Treat null/undefined as ""; convert numbers to string
21592			if ( val == null ) {
21593				val = "";
21594
21595			} else if ( typeof val === "number" ) {
21596				val += "";
21597
21598			} else if ( Array.isArray( val ) ) {
21599				val = jQuery.map( val, function( value ) {
21600					return value == null ? "" : value + "";
21601				} );
21602			}
21603
21604			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
21605
21606			// If set returns undefined, fall back to normal setting
21607			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
21608				this.value = val;
21609			}
21610		} );
21611	}
21612} );
21613
21614jQuery.extend( {
21615	valHooks: {
21616		option: {
21617			get: function( elem ) {
21618
21619				var val = jQuery.find.attr( elem, "value" );
21620				return val != null ?
21621					val :
21622
21623					// Support: IE <=10 - 11 only
21624					// option.text throws exceptions (trac-14686, trac-14858)
21625					// Strip and collapse whitespace
21626					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
21627					stripAndCollapse( jQuery.text( elem ) );
21628			}
21629		},
21630		select: {
21631			get: function( elem ) {
21632				var value, option, i,
21633					options = elem.options,
21634					index = elem.selectedIndex,
21635					one = elem.type === "select-one",
21636					values = one ? null : [],
21637					max = one ? index + 1 : options.length;
21638
21639				if ( index < 0 ) {
21640					i = max;
21641
21642				} else {
21643					i = one ? index : 0;
21644				}
21645
21646				// Loop through all the selected options
21647				for ( ; i < max; i++ ) {
21648					option = options[ i ];
21649
21650					// Support: IE <=9 only
21651					// IE8-9 doesn't update selected after form reset (trac-2551)
21652					if ( ( option.selected || i === index ) &&
21653
21654							// Don't return options that are disabled or in a disabled optgroup
21655							!option.disabled &&
21656							( !option.parentNode.disabled ||
21657								!nodeName( option.parentNode, "optgroup" ) ) ) {
21658
21659						// Get the specific value for the option
21660						value = jQuery( option ).val();
21661
21662						// We don't need an array for one selects
21663						if ( one ) {
21664							return value;
21665						}
21666
21667						// Multi-Selects return an array
21668						values.push( value );
21669					}
21670				}
21671
21672				return values;
21673			},
21674
21675			set: function( elem, value ) {
21676				var optionSet, option,
21677					options = elem.options,
21678					values = jQuery.makeArray( value ),
21679					i = options.length;
21680
21681				while ( i-- ) {
21682					option = options[ i ];
21683
21684					/* eslint-disable no-cond-assign */
21685
21686					if ( option.selected =
21687						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
21688					) {
21689						optionSet = true;
21690					}
21691
21692					/* eslint-enable no-cond-assign */
21693				}
21694
21695				// Force browsers to behave consistently when non-matching value is set
21696				if ( !optionSet ) {
21697					elem.selectedIndex = -1;
21698				}
21699				return values;
21700			}
21701		}
21702	}
21703} );
21704
21705// Radios and checkboxes getter/setter
21706jQuery.each( [ "radio", "checkbox" ], function() {
21707	jQuery.valHooks[ this ] = {
21708		set: function( elem, value ) {
21709			if ( Array.isArray( value ) ) {
21710				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
21711			}
21712		}
21713	};
21714	if ( !support.checkOn ) {
21715		jQuery.valHooks[ this ].get = function( elem ) {
21716			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
21717		};
21718	}
21719} );
21720
21721
21722
21723
21724// Return jQuery for attributes-only inclusion
21725
21726
21727support.focusin = "onfocusin" in window;
21728
21729
21730var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
21731	stopPropagationCallback = function( e ) {
21732		e.stopPropagation();
21733	};
21734
21735jQuery.extend( jQuery.event, {
21736
21737	trigger: function( event, data, elem, onlyHandlers ) {
21738
21739		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
21740			eventPath = [ elem || document ],
21741			type = hasOwn.call( event, "type" ) ? event.type : event,
21742			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
21743
21744		cur = lastElement = tmp = elem = elem || document;
21745
21746		// Don't do events on text and comment nodes
21747		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
21748			return;
21749		}
21750
21751		// focus/blur morphs to focusin/out; ensure we're not firing them right now
21752		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
21753			return;
21754		}
21755
21756		if ( type.indexOf( "." ) > -1 ) {
21757
21758			// Namespaced trigger; create a regexp to match event type in handle()
21759			namespaces = type.split( "." );
21760			type = namespaces.shift();
21761			namespaces.sort();
21762		}
21763		ontype = type.indexOf( ":" ) < 0 && "on" + type;
21764
21765		// Caller can pass in a jQuery.Event object, Object, or just an event type string
21766		event = event[ jQuery.expando ] ?
21767			event :
21768			new jQuery.Event( type, typeof event === "object" && event );
21769
21770		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
21771		event.isTrigger = onlyHandlers ? 2 : 3;
21772		event.namespace = namespaces.join( "." );
21773		event.rnamespace = event.namespace ?
21774			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
21775			null;
21776
21777		// Clean up the event in case it is being reused
21778		event.result = undefined;
21779		if ( !event.target ) {
21780			event.target = elem;
21781		}
21782
21783		// Clone any incoming data and prepend the event, creating the handler arg list
21784		data = data == null ?
21785			[ event ] :
21786			jQuery.makeArray( data, [ event ] );
21787
21788		// Allow special events to draw outside the lines
21789		special = jQuery.event.special[ type ] || {};
21790		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
21791			return;
21792		}
21793
21794		// Determine event propagation path in advance, per W3C events spec (trac-9951)
21795		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
21796		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
21797
21798			bubbleType = special.delegateType || type;
21799			if ( !rfocusMorph.test( bubbleType + type ) ) {
21800				cur = cur.parentNode;
21801			}
21802			for ( ; cur; cur = cur.parentNode ) {
21803				eventPath.push( cur );
21804				tmp = cur;
21805			}
21806
21807			// Only add window if we got to document (e.g., not plain obj or detached DOM)
21808			if ( tmp === ( elem.ownerDocument || document ) ) {
21809				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
21810			}
21811		}
21812
21813		// Fire handlers on the event path
21814		i = 0;
21815		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
21816			lastElement = cur;
21817			event.type = i > 1 ?
21818				bubbleType :
21819				special.bindType || type;
21820
21821			// jQuery handler
21822			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
21823				dataPriv.get( cur, "handle" );
21824			if ( handle ) {
21825				handle.apply( cur, data );
21826			}
21827
21828			// Native handler
21829			handle = ontype && cur[ ontype ];
21830			if ( handle && handle.apply && acceptData( cur ) ) {
21831				event.result = handle.apply( cur, data );
21832				if ( event.result === false ) {
21833					event.preventDefault();
21834				}
21835			}
21836		}
21837		event.type = type;
21838
21839		// If nobody prevented the default action, do it now
21840		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
21841
21842			if ( ( !special._default ||
21843				special._default.apply( eventPath.pop(), data ) === false ) &&
21844				acceptData( elem ) ) {
21845
21846				// Call a native DOM method on the target with the same name as the event.
21847				// Don't do default actions on window, that's where global variables be (trac-6170)
21848				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
21849
21850					// Don't re-trigger an onFOO event when we call its FOO() method
21851					tmp = elem[ ontype ];
21852
21853					if ( tmp ) {
21854						elem[ ontype ] = null;
21855					}
21856
21857					// Prevent re-triggering of the same event, since we already bubbled it above
21858					jQuery.event.triggered = type;
21859
21860					if ( event.isPropagationStopped() ) {
21861						lastElement.addEventListener( type, stopPropagationCallback );
21862					}
21863
21864					elem[ type ]();
21865
21866					if ( event.isPropagationStopped() ) {
21867						lastElement.removeEventListener( type, stopPropagationCallback );
21868					}
21869
21870					jQuery.event.triggered = undefined;
21871
21872					if ( tmp ) {
21873						elem[ ontype ] = tmp;
21874					}
21875				}
21876			}
21877		}
21878
21879		return event.result;
21880	},
21881
21882	// Piggyback on a donor event to simulate a different one
21883	// Used only for `focus(in | out)` events
21884	simulate: function( type, elem, event ) {
21885		var e = jQuery.extend(
21886			new jQuery.Event(),
21887			event,
21888			{
21889				type: type,
21890				isSimulated: true
21891			}
21892		);
21893
21894		jQuery.event.trigger( e, null, elem );
21895	}
21896
21897} );
21898
21899jQuery.fn.extend( {
21900
21901	trigger: function( type, data ) {
21902		return this.each( function() {
21903			jQuery.event.trigger( type, data, this );
21904		} );
21905	},
21906	triggerHandler: function( type, data ) {
21907		var elem = this[ 0 ];
21908		if ( elem ) {
21909			return jQuery.event.trigger( type, data, elem, true );
21910		}
21911	}
21912} );
21913
21914
21915// Support: Firefox <=44
21916// Firefox doesn't have focus(in | out) events
21917// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
21918//
21919// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
21920// focus(in | out) events fire after focus & blur events,
21921// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
21922// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
21923if ( !support.focusin ) {
21924	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
21925
21926		// Attach a single capturing handler on the document while someone wants focusin/focusout
21927		var handler = function( event ) {
21928			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
21929		};
21930
21931		jQuery.event.special[ fix ] = {
21932			setup: function() {
21933
21934				// Handle: regular nodes (via `this.ownerDocument`), window
21935				// (via `this.document`) & document (via `this`).
21936				var doc = this.ownerDocument || this.document || this,
21937					attaches = dataPriv.access( doc, fix );
21938
21939				if ( !attaches ) {
21940					doc.addEventListener( orig, handler, true );
21941				}
21942				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
21943			},
21944			teardown: function() {
21945				var doc = this.ownerDocument || this.document || this,
21946					attaches = dataPriv.access( doc, fix ) - 1;
21947
21948				if ( !attaches ) {
21949					doc.removeEventListener( orig, handler, true );
21950					dataPriv.remove( doc, fix );
21951
21952				} else {
21953					dataPriv.access( doc, fix, attaches );
21954				}
21955			}
21956		};
21957	} );
21958}
21959var location = window.location;
21960
21961var nonce = { guid: Date.now() };
21962
21963var rquery = ( /\?/ );
21964
21965
21966
21967// Cross-browser xml parsing
21968jQuery.parseXML = function( data ) {
21969	var xml, parserErrorElem;
21970	if ( !data || typeof data !== "string" ) {
21971		return null;
21972	}
21973
21974	// Support: IE 9 - 11 only
21975	// IE throws on parseFromString with invalid input.
21976	try {
21977		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
21978	} catch ( e ) {}
21979
21980	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
21981	if ( !xml || parserErrorElem ) {
21982		jQuery.error( "Invalid XML: " + (
21983			parserErrorElem ?
21984				jQuery.map( parserErrorElem.childNodes, function( el ) {
21985					return el.textContent;
21986				} ).join( "\n" ) :
21987				data
21988		) );
21989	}
21990	return xml;
21991};
21992
21993
21994var
21995	rbracket = /\[\]$/,
21996	rCRLF = /\r?\n/g,
21997	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
21998	rsubmittable = /^(?:input|select|textarea|keygen)/i;
21999
22000function buildParams( prefix, obj, traditional, add ) {
22001	var name;
22002
22003	if ( Array.isArray( obj ) ) {
22004
22005		// Serialize array item.
22006		jQuery.each( obj, function( i, v ) {
22007			if ( traditional || rbracket.test( prefix ) ) {
22008
22009				// Treat each array item as a scalar.
22010				add( prefix, v );
22011
22012			} else {
22013
22014				// Item is non-scalar (array or object), encode its numeric index.
22015				buildParams(
22016					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
22017					v,
22018					traditional,
22019					add
22020				);
22021			}
22022		} );
22023
22024	} else if ( !traditional && toType( obj ) === "object" ) {
22025
22026		// Serialize object item.
22027		for ( name in obj ) {
22028			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
22029		}
22030
22031	} else {
22032
22033		// Serialize scalar item.
22034		add( prefix, obj );
22035	}
22036}
22037
22038// Serialize an array of form elements or a set of
22039// key/values into a query string
22040jQuery.param = function( a, traditional ) {
22041	var prefix,
22042		s = [],
22043		add = function( key, valueOrFunction ) {
22044
22045			// If value is a function, invoke it and use its return value
22046			var value = isFunction( valueOrFunction ) ?
22047				valueOrFunction() :
22048				valueOrFunction;
22049
22050			s[ s.length ] = encodeURIComponent( key ) + "=" +
22051				encodeURIComponent( value == null ? "" : value );
22052		};
22053
22054	if ( a == null ) {
22055		return "";
22056	}
22057
22058	// If an array was passed in, assume that it is an array of form elements.
22059	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
22060
22061		// Serialize the form elements
22062		jQuery.each( a, function() {
22063			add( this.name, this.value );
22064		} );
22065
22066	} else {
22067
22068		// If traditional, encode the "old" way (the way 1.3.2 or older
22069		// did it), otherwise encode params recursively.
22070		for ( prefix in a ) {
22071			buildParams( prefix, a[ prefix ], traditional, add );
22072		}
22073	}
22074
22075	// Return the resulting serialization
22076	return s.join( "&" );
22077};
22078
22079jQuery.fn.extend( {
22080	serialize: function() {
22081		return jQuery.param( this.serializeArray() );
22082	},
22083	serializeArray: function() {
22084		return this.map( function() {
22085
22086			// Can add propHook for "elements" to filter or add form elements
22087			var elements = jQuery.prop( this, "elements" );
22088			return elements ? jQuery.makeArray( elements ) : this;
22089		} ).filter( function() {
22090			var type = this.type;
22091
22092			// Use .is( ":disabled" ) so that fieldset[disabled] works
22093			return this.name && !jQuery( this ).is( ":disabled" ) &&
22094				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
22095				( this.checked || !rcheckableType.test( type ) );
22096		} ).map( function( _i, elem ) {
22097			var val = jQuery( this ).val();
22098
22099			if ( val == null ) {
22100				return null;
22101			}
22102
22103			if ( Array.isArray( val ) ) {
22104				return jQuery.map( val, function( val ) {
22105					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
22106				} );
22107			}
22108
22109			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
22110		} ).get();
22111	}
22112} );
22113
22114
22115var
22116	r20 = /%20/g,
22117	rhash = /#.*$/,
22118	rantiCache = /([?&])_=[^&]*/,
22119	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
22120
22121	// trac-7653, trac-8125, trac-8152: local protocol detection
22122	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
22123	rnoContent = /^(?:GET|HEAD)$/,
22124	rprotocol = /^\/\//,
22125
22126	/* Prefilters
22127	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
22128	 * 2) These are called:
22129	 *    - BEFORE asking for a transport
22130	 *    - AFTER param serialization (s.data is a string if s.processData is true)
22131	 * 3) key is the dataType
22132	 * 4) the catchall symbol "*" can be used
22133	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
22134	 */
22135	prefilters = {},
22136
22137	/* Transports bindings
22138	 * 1) key is the dataType
22139	 * 2) the catchall symbol "*" can be used
22140	 * 3) selection will start with transport dataType and THEN go to "*" if needed
22141	 */
22142	transports = {},
22143
22144	// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
22145	allTypes = "*/".concat( "*" ),
22146
22147	// Anchor tag for parsing the document origin
22148	originAnchor = document.createElement( "a" );
22149
22150originAnchor.href = location.href;
22151
22152// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
22153function addToPrefiltersOrTransports( structure ) {
22154
22155	// dataTypeExpression is optional and defaults to "*"
22156	return function( dataTypeExpression, func ) {
22157
22158		if ( typeof dataTypeExpression !== "string" ) {
22159			func = dataTypeExpression;
22160			dataTypeExpression = "*";
22161		}
22162
22163		var dataType,
22164			i = 0,
22165			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
22166
22167		if ( isFunction( func ) ) {
22168
22169			// For each dataType in the dataTypeExpression
22170			while ( ( dataType = dataTypes[ i++ ] ) ) {
22171
22172				// Prepend if requested
22173				if ( dataType[ 0 ] === "+" ) {
22174					dataType = dataType.slice( 1 ) || "*";
22175					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
22176
22177				// Otherwise append
22178				} else {
22179					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
22180				}
22181			}
22182		}
22183	};
22184}
22185
22186// Base inspection function for prefilters and transports
22187function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
22188
22189	var inspected = {},
22190		seekingTransport = ( structure === transports );
22191
22192	function inspect( dataType ) {
22193		var selected;
22194		inspected[ dataType ] = true;
22195		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
22196			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
22197			if ( typeof dataTypeOrTransport === "string" &&
22198				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
22199
22200				options.dataTypes.unshift( dataTypeOrTransport );
22201				inspect( dataTypeOrTransport );
22202				return false;
22203			} else if ( seekingTransport ) {
22204				return !( selected = dataTypeOrTransport );
22205			}
22206		} );
22207		return selected;
22208	}
22209
22210	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
22211}
22212
22213// A special extend for ajax options
22214// that takes "flat" options (not to be deep extended)
22215// Fixes trac-9887
22216function ajaxExtend( target, src ) {
22217	var key, deep,
22218		flatOptions = jQuery.ajaxSettings.flatOptions || {};
22219
22220	for ( key in src ) {
22221		if ( src[ key ] !== undefined ) {
22222			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
22223		}
22224	}
22225	if ( deep ) {
22226		jQuery.extend( true, target, deep );
22227	}
22228
22229	return target;
22230}
22231
22232/* Handles responses to an ajax request:
22233 * - finds the right dataType (mediates between content-type and expected dataType)
22234 * - returns the corresponding response
22235 */
22236function ajaxHandleResponses( s, jqXHR, responses ) {
22237
22238	var ct, type, finalDataType, firstDataType,
22239		contents = s.contents,
22240		dataTypes = s.dataTypes;
22241
22242	// Remove auto dataType and get content-type in the process
22243	while ( dataTypes[ 0 ] === "*" ) {
22244		dataTypes.shift();
22245		if ( ct === undefined ) {
22246			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
22247		}
22248	}
22249
22250	// Check if we're dealing with a known content-type
22251	if ( ct ) {
22252		for ( type in contents ) {
22253			if ( contents[ type ] && contents[ type ].test( ct ) ) {
22254				dataTypes.unshift( type );
22255				break;
22256			}
22257		}
22258	}
22259
22260	// Check to see if we have a response for the expected dataType
22261	if ( dataTypes[ 0 ] in responses ) {
22262		finalDataType = dataTypes[ 0 ];
22263	} else {
22264
22265		// Try convertible dataTypes
22266		for ( type in responses ) {
22267			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
22268				finalDataType = type;
22269				break;
22270			}
22271			if ( !firstDataType ) {
22272				firstDataType = type;
22273			}
22274		}
22275
22276		// Or just use first one
22277		finalDataType = finalDataType || firstDataType;
22278	}
22279
22280	// If we found a dataType
22281	// We add the dataType to the list if needed
22282	// and return the corresponding response
22283	if ( finalDataType ) {
22284		if ( finalDataType !== dataTypes[ 0 ] ) {
22285			dataTypes.unshift( finalDataType );
22286		}
22287		return responses[ finalDataType ];
22288	}
22289}
22290
22291/* Chain conversions given the request and the original response
22292 * Also sets the responseXXX fields on the jqXHR instance
22293 */
22294function ajaxConvert( s, response, jqXHR, isSuccess ) {
22295	var conv2, current, conv, tmp, prev,
22296		converters = {},
22297
22298		// Work with a copy of dataTypes in case we need to modify it for conversion
22299		dataTypes = s.dataTypes.slice();
22300
22301	// Create converters map with lowercased keys
22302	if ( dataTypes[ 1 ] ) {
22303		for ( conv in s.converters ) {
22304			converters[ conv.toLowerCase() ] = s.converters[ conv ];
22305		}
22306	}
22307
22308	current = dataTypes.shift();
22309
22310	// Convert to each sequential dataType
22311	while ( current ) {
22312
22313		if ( s.responseFields[ current ] ) {
22314			jqXHR[ s.responseFields[ current ] ] = response;
22315		}
22316
22317		// Apply the dataFilter if provided
22318		if ( !prev && isSuccess && s.dataFilter ) {
22319			response = s.dataFilter( response, s.dataType );
22320		}
22321
22322		prev = current;
22323		current = dataTypes.shift();
22324
22325		if ( current ) {
22326
22327			// There's only work to do if current dataType is non-auto
22328			if ( current === "*" ) {
22329
22330				current = prev;
22331
22332			// Convert response if prev dataType is non-auto and differs from current
22333			} else if ( prev !== "*" && prev !== current ) {
22334
22335				// Seek a direct converter
22336				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
22337
22338				// If none found, seek a pair
22339				if ( !conv ) {
22340					for ( conv2 in converters ) {
22341
22342						// If conv2 outputs current
22343						tmp = conv2.split( " " );
22344						if ( tmp[ 1 ] === current ) {
22345
22346							// If prev can be converted to accepted input
22347							conv = converters[ prev + " " + tmp[ 0 ] ] ||
22348								converters[ "* " + tmp[ 0 ] ];
22349							if ( conv ) {
22350
22351								// Condense equivalence converters
22352								if ( conv === true ) {
22353									conv = converters[ conv2 ];
22354
22355								// Otherwise, insert the intermediate dataType
22356								} else if ( converters[ conv2 ] !== true ) {
22357									current = tmp[ 0 ];
22358									dataTypes.unshift( tmp[ 1 ] );
22359								}
22360								break;
22361							}
22362						}
22363					}
22364				}
22365
22366				// Apply converter (if not an equivalence)
22367				if ( conv !== true ) {
22368
22369					// Unless errors are allowed to bubble, catch and return them
22370					if ( conv && s.throws ) {
22371						response = conv( response );
22372					} else {
22373						try {
22374							response = conv( response );
22375						} catch ( e ) {
22376							return {
22377								state: "parsererror",
22378								error: conv ? e : "No conversion from " + prev + " to " + current
22379							};
22380						}
22381					}
22382				}
22383			}
22384		}
22385	}
22386
22387	return { state: "success", data: response };
22388}
22389
22390jQuery.extend( {
22391
22392	// Counter for holding the number of active queries
22393	active: 0,
22394
22395	// Last-Modified header cache for next request
22396	lastModified: {},
22397	etag: {},
22398
22399	ajaxSettings: {
22400		url: location.href,
22401		type: "GET",
22402		isLocal: rlocalProtocol.test( location.protocol ),
22403		global: true,
22404		processData: true,
22405		async: true,
22406		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
22407
22408		/*
22409		timeout: 0,
22410		data: null,
22411		dataType: null,
22412		username: null,
22413		password: null,
22414		cache: null,
22415		throws: false,
22416		traditional: false,
22417		headers: {},
22418		*/
22419
22420		accepts: {
22421			"*": allTypes,
22422			text: "text/plain",
22423			html: "text/html",
22424			xml: "application/xml, text/xml",
22425			json: "application/json, text/javascript"
22426		},
22427
22428		contents: {
22429			xml: /\bxml\b/,
22430			html: /\bhtml/,
22431			json: /\bjson\b/
22432		},
22433
22434		responseFields: {
22435			xml: "responseXML",
22436			text: "responseText",
22437			json: "responseJSON"
22438		},
22439
22440		// Data converters
22441		// Keys separate source (or catchall "*") and destination types with a single space
22442		converters: {
22443
22444			// Convert anything to text
22445			"* text": String,
22446
22447			// Text to html (true = no transformation)
22448			"text html": true,
22449
22450			// Evaluate text as a json expression
22451			"text json": JSON.parse,
22452
22453			// Parse text as xml
22454			"text xml": jQuery.parseXML
22455		},
22456
22457		// For options that shouldn't be deep extended:
22458		// you can add your own custom options here if
22459		// and when you create one that shouldn't be
22460		// deep extended (see ajaxExtend)
22461		flatOptions: {
22462			url: true,
22463			context: true
22464		}
22465	},
22466
22467	// Creates a full fledged settings object into target
22468	// with both ajaxSettings and settings fields.
22469	// If target is omitted, writes into ajaxSettings.
22470	ajaxSetup: function( target, settings ) {
22471		return settings ?
22472
22473			// Building a settings object
22474			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
22475
22476			// Extending ajaxSettings
22477			ajaxExtend( jQuery.ajaxSettings, target );
22478	},
22479
22480	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
22481	ajaxTransport: addToPrefiltersOrTransports( transports ),
22482
22483	// Main method
22484	ajax: function( url, options ) {
22485
22486		// If url is an object, simulate pre-1.5 signature
22487		if ( typeof url === "object" ) {
22488			options = url;
22489			url = undefined;
22490		}
22491
22492		// Force options to be an object
22493		options = options || {};
22494
22495		var transport,
22496
22497			// URL without anti-cache param
22498			cacheURL,
22499
22500			// Response headers
22501			responseHeadersString,
22502			responseHeaders,
22503
22504			// timeout handle
22505			timeoutTimer,
22506
22507			// Url cleanup var
22508			urlAnchor,
22509
22510			// Request state (becomes false upon send and true upon completion)
22511			completed,
22512
22513			// To know if global events are to be dispatched
22514			fireGlobals,
22515
22516			// Loop variable
22517			i,
22518
22519			// uncached part of the url
22520			uncached,
22521
22522			// Create the final options object
22523			s = jQuery.ajaxSetup( {}, options ),
22524
22525			// Callbacks context
22526			callbackContext = s.context || s,
22527
22528			// Context for global events is callbackContext if it is a DOM node or jQuery collection
22529			globalEventContext = s.context &&
22530				( callbackContext.nodeType || callbackContext.jquery ) ?
22531				jQuery( callbackContext ) :
22532				jQuery.event,
22533
22534			// Deferreds
22535			deferred = jQuery.Deferred(),
22536			completeDeferred = jQuery.Callbacks( "once memory" ),
22537
22538			// Status-dependent callbacks
22539			statusCode = s.statusCode || {},
22540
22541			// Headers (they are sent all at once)
22542			requestHeaders = {},
22543			requestHeadersNames = {},
22544
22545			// Default abort message
22546			strAbort = "canceled",
22547
22548			// Fake xhr
22549			jqXHR = {
22550				readyState: 0,
22551
22552				// Builds headers hashtable if needed
22553				getResponseHeader: function( key ) {
22554					var match;
22555					if ( completed ) {
22556						if ( !responseHeaders ) {
22557							responseHeaders = {};
22558							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
22559								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
22560									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
22561										.concat( match[ 2 ] );
22562							}
22563						}
22564						match = responseHeaders[ key.toLowerCase() + " " ];
22565					}
22566					return match == null ? null : match.join( ", " );
22567				},
22568
22569				// Raw string
22570				getAllResponseHeaders: function() {
22571					return completed ? responseHeadersString : null;
22572				},
22573
22574				// Caches the header
22575				setRequestHeader: function( name, value ) {
22576					if ( completed == null ) {
22577						name = requestHeadersNames[ name.toLowerCase() ] =
22578							requestHeadersNames[ name.toLowerCase() ] || name;
22579						requestHeaders[ name ] = value;
22580					}
22581					return this;
22582				},
22583
22584				// Overrides response content-type header
22585				overrideMimeType: function( type ) {
22586					if ( completed == null ) {
22587						s.mimeType = type;
22588					}
22589					return this;
22590				},
22591
22592				// Status-dependent callbacks
22593				statusCode: function( map ) {
22594					var code;
22595					if ( map ) {
22596						if ( completed ) {
22597
22598							// Execute the appropriate callbacks
22599							jqXHR.always( map[ jqXHR.status ] );
22600						} else {
22601
22602							// Lazy-add the new callbacks in a way that preserves old ones
22603							for ( code in map ) {
22604								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
22605							}
22606						}
22607					}
22608					return this;
22609				},
22610
22611				// Cancel the request
22612				abort: function( statusText ) {
22613					var finalText = statusText || strAbort;
22614					if ( transport ) {
22615						transport.abort( finalText );
22616					}
22617					done( 0, finalText );
22618					return this;
22619				}
22620			};
22621
22622		// Attach deferreds
22623		deferred.promise( jqXHR );
22624
22625		// Add protocol if not provided (prefilters might expect it)
22626		// Handle falsy url in the settings object (trac-10093: consistency with old signature)
22627		// We also use the url parameter if available
22628		s.url = ( ( url || s.url || location.href ) + "" )
22629			.replace( rprotocol, location.protocol + "//" );
22630
22631		// Alias method option to type as per ticket trac-12004
22632		s.type = options.method || options.type || s.method || s.type;
22633
22634		// Extract dataTypes list
22635		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
22636
22637		// A cross-domain request is in order when the origin doesn't match the current origin.
22638		if ( s.crossDomain == null ) {
22639			urlAnchor = document.createElement( "a" );
22640
22641			// Support: IE <=8 - 11, Edge 12 - 15
22642			// IE throws exception on accessing the href property if url is malformed,
22643			// e.g. http://example.com:80x/
22644			try {
22645				urlAnchor.href = s.url;
22646
22647				// Support: IE <=8 - 11 only
22648				// Anchor's host property isn't correctly set when s.url is relative
22649				urlAnchor.href = urlAnchor.href;
22650				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
22651					urlAnchor.protocol + "//" + urlAnchor.host;
22652			} catch ( e ) {
22653
22654				// If there is an error parsing the URL, assume it is crossDomain,
22655				// it can be rejected by the transport if it is invalid
22656				s.crossDomain = true;
22657			}
22658		}
22659
22660		// Convert data if not already a string
22661		if ( s.data && s.processData && typeof s.data !== "string" ) {
22662			s.data = jQuery.param( s.data, s.traditional );
22663		}
22664
22665		// Apply prefilters
22666		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
22667
22668		// If request was aborted inside a prefilter, stop there
22669		if ( completed ) {
22670			return jqXHR;
22671		}
22672
22673		// We can fire global events as of now if asked to
22674		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
22675		fireGlobals = jQuery.event && s.global;
22676
22677		// Watch for a new set of requests
22678		if ( fireGlobals && jQuery.active++ === 0 ) {
22679			jQuery.event.trigger( "ajaxStart" );
22680		}
22681
22682		// Uppercase the type
22683		s.type = s.type.toUpperCase();
22684
22685		// Determine if request has content
22686		s.hasContent = !rnoContent.test( s.type );
22687
22688		// Save the URL in case we're toying with the If-Modified-Since
22689		// and/or If-None-Match header later on
22690		// Remove hash to simplify url manipulation
22691		cacheURL = s.url.replace( rhash, "" );
22692
22693		// More options handling for requests with no content
22694		if ( !s.hasContent ) {
22695
22696			// Remember the hash so we can put it back
22697			uncached = s.url.slice( cacheURL.length );
22698
22699			// If data is available and should be processed, append data to url
22700			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
22701				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
22702
22703				// trac-9682: remove data so that it's not used in an eventual retry
22704				delete s.data;
22705			}
22706
22707			// Add or update anti-cache param if needed
22708			if ( s.cache === false ) {
22709				cacheURL = cacheURL.replace( rantiCache, "$1" );
22710				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
22711					uncached;
22712			}
22713
22714			// Put hash and anti-cache on the URL that will be requested (gh-1732)
22715			s.url = cacheURL + uncached;
22716
22717		// Change '%20' to '+' if this is encoded form body content (gh-2658)
22718		} else if ( s.data && s.processData &&
22719			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
22720			s.data = s.data.replace( r20, "+" );
22721		}
22722
22723		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
22724		if ( s.ifModified ) {
22725			if ( jQuery.lastModified[ cacheURL ] ) {
22726				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
22727			}
22728			if ( jQuery.etag[ cacheURL ] ) {
22729				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
22730			}
22731		}
22732
22733		// Set the correct header, if data is being sent
22734		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
22735			jqXHR.setRequestHeader( "Content-Type", s.contentType );
22736		}
22737
22738		// Set the Accepts header for the server, depending on the dataType
22739		jqXHR.setRequestHeader(
22740			"Accept",
22741			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
22742				s.accepts[ s.dataTypes[ 0 ] ] +
22743					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
22744				s.accepts[ "*" ]
22745		);
22746
22747		// Check for headers option
22748		for ( i in s.headers ) {
22749			jqXHR.setRequestHeader( i, s.headers[ i ] );
22750		}
22751
22752		// Allow custom headers/mimetypes and early abort
22753		if ( s.beforeSend &&
22754			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
22755
22756			// Abort if not done already and return
22757			return jqXHR.abort();
22758		}
22759
22760		// Aborting is no longer a cancellation
22761		strAbort = "abort";
22762
22763		// Install callbacks on deferreds
22764		completeDeferred.add( s.complete );
22765		jqXHR.done( s.success );
22766		jqXHR.fail( s.error );
22767
22768		// Get transport
22769		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
22770
22771		// If no transport, we auto-abort
22772		if ( !transport ) {
22773			done( -1, "No Transport" );
22774		} else {
22775			jqXHR.readyState = 1;
22776
22777			// Send global event
22778			if ( fireGlobals ) {
22779				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
22780			}
22781
22782			// If request was aborted inside ajaxSend, stop there
22783			if ( completed ) {
22784				return jqXHR;
22785			}
22786
22787			// Timeout
22788			if ( s.async && s.timeout > 0 ) {
22789				timeoutTimer = window.setTimeout( function() {
22790					jqXHR.abort( "timeout" );
22791				}, s.timeout );
22792			}
22793
22794			try {
22795				completed = false;
22796				transport.send( requestHeaders, done );
22797			} catch ( e ) {
22798
22799				// Rethrow post-completion exceptions
22800				if ( completed ) {
22801					throw e;
22802				}
22803
22804				// Propagate others as results
22805				done( -1, e );
22806			}
22807		}
22808
22809		// Callback for when everything is done
22810		function done( status, nativeStatusText, responses, headers ) {
22811			var isSuccess, success, error, response, modified,
22812				statusText = nativeStatusText;
22813
22814			// Ignore repeat invocations
22815			if ( completed ) {
22816				return;
22817			}
22818
22819			completed = true;
22820
22821			// Clear timeout if it exists
22822			if ( timeoutTimer ) {
22823				window.clearTimeout( timeoutTimer );
22824			}
22825
22826			// Dereference transport for early garbage collection
22827			// (no matter how long the jqXHR object will be used)
22828			transport = undefined;
22829
22830			// Cache response headers
22831			responseHeadersString = headers || "";
22832
22833			// Set readyState
22834			jqXHR.readyState = status > 0 ? 4 : 0;
22835
22836			// Determine if successful
22837			isSuccess = status >= 200 && status < 300 || status === 304;
22838
22839			// Get response data
22840			if ( responses ) {
22841				response = ajaxHandleResponses( s, jqXHR, responses );
22842			}
22843
22844			// Use a noop converter for missing script but not if jsonp
22845			if ( !isSuccess &&
22846				jQuery.inArray( "script", s.dataTypes ) > -1 &&
22847				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
22848				s.converters[ "text script" ] = function() {};
22849			}
22850
22851			// Convert no matter what (that way responseXXX fields are always set)
22852			response = ajaxConvert( s, response, jqXHR, isSuccess );
22853
22854			// If successful, handle type chaining
22855			if ( isSuccess ) {
22856
22857				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
22858				if ( s.ifModified ) {
22859					modified = jqXHR.getResponseHeader( "Last-Modified" );
22860					if ( modified ) {
22861						jQuery.lastModified[ cacheURL ] = modified;
22862					}
22863					modified = jqXHR.getResponseHeader( "etag" );
22864					if ( modified ) {
22865						jQuery.etag[ cacheURL ] = modified;
22866					}
22867				}
22868
22869				// if no content
22870				if ( status === 204 || s.type === "HEAD" ) {
22871					statusText = "nocontent";
22872
22873				// if not modified
22874				} else if ( status === 304 ) {
22875					statusText = "notmodified";
22876
22877				// If we have data, let's convert it
22878				} else {
22879					statusText = response.state;
22880					success = response.data;
22881					error = response.error;
22882					isSuccess = !error;
22883				}
22884			} else {
22885
22886				// Extract error from statusText and normalize for non-aborts
22887				error = statusText;
22888				if ( status || !statusText ) {
22889					statusText = "error";
22890					if ( status < 0 ) {
22891						status = 0;
22892					}
22893				}
22894			}
22895
22896			// Set data for the fake xhr object
22897			jqXHR.status = status;
22898			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
22899
22900			// Success/Error
22901			if ( isSuccess ) {
22902				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
22903			} else {
22904				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
22905			}
22906
22907			// Status-dependent callbacks
22908			jqXHR.statusCode( statusCode );
22909			statusCode = undefined;
22910
22911			if ( fireGlobals ) {
22912				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
22913					[ jqXHR, s, isSuccess ? success : error ] );
22914			}
22915
22916			// Complete
22917			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
22918
22919			if ( fireGlobals ) {
22920				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
22921
22922				// Handle the global AJAX counter
22923				if ( !( --jQuery.active ) ) {
22924					jQuery.event.trigger( "ajaxStop" );
22925				}
22926			}
22927		}
22928
22929		return jqXHR;
22930	},
22931
22932	getJSON: function( url, data, callback ) {
22933		return jQuery.get( url, data, callback, "json" );
22934	},
22935
22936	getScript: function( url, callback ) {
22937		return jQuery.get( url, undefined, callback, "script" );
22938	}
22939} );
22940
22941jQuery.each( [ "get", "post" ], function( _i, method ) {
22942	jQuery[ method ] = function( url, data, callback, type ) {
22943
22944		// Shift arguments if data argument was omitted
22945		if ( isFunction( data ) ) {
22946			type = type || callback;
22947			callback = data;
22948			data = undefined;
22949		}
22950
22951		// The url can be an options object (which then must have .url)
22952		return jQuery.ajax( jQuery.extend( {
22953			url: url,
22954			type: method,
22955			dataType: type,
22956			data: data,
22957			success: callback
22958		}, jQuery.isPlainObject( url ) && url ) );
22959	};
22960} );
22961
22962jQuery.ajaxPrefilter( function( s ) {
22963	var i;
22964	for ( i in s.headers ) {
22965		if ( i.toLowerCase() === "content-type" ) {
22966			s.contentType = s.headers[ i ] || "";
22967		}
22968	}
22969} );
22970
22971
22972jQuery._evalUrl = function( url, options, doc ) {
22973	return jQuery.ajax( {
22974		url: url,
22975
22976		// Make this explicit, since user can override this through ajaxSetup (trac-11264)
22977		type: "GET",
22978		dataType: "script",
22979		cache: true,
22980		async: false,
22981		global: false,
22982
22983		// Only evaluate the response if it is successful (gh-4126)
22984		// dataFilter is not invoked for failure responses, so using it instead
22985		// of the default converter is kludgy but it works.
22986		converters: {
22987			"text script": function() {}
22988		},
22989		dataFilter: function( response ) {
22990			jQuery.globalEval( response, options, doc );
22991		}
22992	} );
22993};
22994
22995
22996jQuery.fn.extend( {
22997	wrapAll: function( html ) {
22998		var wrap;
22999
23000		if ( this[ 0 ] ) {
23001			if ( isFunction( html ) ) {
23002				html = html.call( this[ 0 ] );
23003			}
23004
23005			// The elements to wrap the target around
23006			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
23007
23008			if ( this[ 0 ].parentNode ) {
23009				wrap.insertBefore( this[ 0 ] );
23010			}
23011
23012			wrap.map( function() {
23013				var elem = this;
23014
23015				while ( elem.firstElementChild ) {
23016					elem = elem.firstElementChild;
23017				}
23018
23019				return elem;
23020			} ).append( this );
23021		}
23022
23023		return this;
23024	},
23025
23026	wrapInner: function( html ) {
23027		if ( isFunction( html ) ) {
23028			return this.each( function( i ) {
23029				jQuery( this ).wrapInner( html.call( this, i ) );
23030			} );
23031		}
23032
23033		return this.each( function() {
23034			var self = jQuery( this ),
23035				contents = self.contents();
23036
23037			if ( contents.length ) {
23038				contents.wrapAll( html );
23039
23040			} else {
23041				self.append( html );
23042			}
23043		} );
23044	},
23045
23046	wrap: function( html ) {
23047		var htmlIsFunction = isFunction( html );
23048
23049		return this.each( function( i ) {
23050			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
23051		} );
23052	},
23053
23054	unwrap: function( selector ) {
23055		this.parent( selector ).not( "body" ).each( function() {
23056			jQuery( this ).replaceWith( this.childNodes );
23057		} );
23058		return this;
23059	}
23060} );
23061
23062
23063jQuery.expr.pseudos.hidden = function( elem ) {
23064	return !jQuery.expr.pseudos.visible( elem );
23065};
23066jQuery.expr.pseudos.visible = function( elem ) {
23067	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
23068};
23069
23070
23071
23072
23073jQuery.ajaxSettings.xhr = function() {
23074	try {
23075		return new window.XMLHttpRequest();
23076	} catch ( e ) {}
23077};
23078
23079var xhrSuccessStatus = {
23080
23081		// File protocol always yields status code 0, assume 200
23082		0: 200,
23083
23084		// Support: IE <=9 only
23085		// trac-1450: sometimes IE returns 1223 when it should be 204
23086		1223: 204
23087	},
23088	xhrSupported = jQuery.ajaxSettings.xhr();
23089
23090support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
23091support.ajax = xhrSupported = !!xhrSupported;
23092
23093jQuery.ajaxTransport( function( options ) {
23094	var callback, errorCallback;
23095
23096	// Cross domain only allowed if supported through XMLHttpRequest
23097	if ( support.cors || xhrSupported && !options.crossDomain ) {
23098		return {
23099			send: function( headers, complete ) {
23100				var i,
23101					xhr = options.xhr();
23102
23103				xhr.open(
23104					options.type,
23105					options.url,
23106					options.async,
23107					options.username,
23108					options.password
23109				);
23110
23111				// Apply custom fields if provided
23112				if ( options.xhrFields ) {
23113					for ( i in options.xhrFields ) {
23114						xhr[ i ] = options.xhrFields[ i ];
23115					}
23116				}
23117
23118				// Override mime type if needed
23119				if ( options.mimeType && xhr.overrideMimeType ) {
23120					xhr.overrideMimeType( options.mimeType );
23121				}
23122
23123				// X-Requested-With header
23124				// For cross-domain requests, seeing as conditions for a preflight are
23125				// akin to a jigsaw puzzle, we simply never set it to be sure.
23126				// (it can always be set on a per-request basis or even using ajaxSetup)
23127				// For same-domain requests, won't change header if already provided.
23128				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
23129					headers[ "X-Requested-With" ] = "XMLHttpRequest";
23130				}
23131
23132				// Set headers
23133				for ( i in headers ) {
23134					xhr.setRequestHeader( i, headers[ i ] );
23135				}
23136
23137				// Callback
23138				callback = function( type ) {
23139					return function() {
23140						if ( callback ) {
23141							callback = errorCallback = xhr.onload =
23142								xhr.onerror = xhr.onabort = xhr.ontimeout =
23143									xhr.onreadystatechange = null;
23144
23145							if ( type === "abort" ) {
23146								xhr.abort();
23147							} else if ( type === "error" ) {
23148
23149								// Support: IE <=9 only
23150								// On a manual native abort, IE9 throws
23151								// errors on any property access that is not readyState
23152								if ( typeof xhr.status !== "number" ) {
23153									complete( 0, "error" );
23154								} else {
23155									complete(
23156
23157										// File: protocol always yields status 0; see trac-8605, trac-14207
23158										xhr.status,
23159										xhr.statusText
23160									);
23161								}
23162							} else {
23163								complete(
23164									xhrSuccessStatus[ xhr.status ] || xhr.status,
23165									xhr.statusText,
23166
23167									// Support: IE <=9 only
23168									// IE9 has no XHR2 but throws on binary (trac-11426)
23169									// For XHR2 non-text, let the caller handle it (gh-2498)
23170									( xhr.responseType || "text" ) !== "text"  ||
23171									typeof xhr.responseText !== "string" ?
23172										{ binary: xhr.response } :
23173										{ text: xhr.responseText },
23174									xhr.getAllResponseHeaders()
23175								);
23176							}
23177						}
23178					};
23179				};
23180
23181				// Listen to events
23182				xhr.onload = callback();
23183				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
23184
23185				// Support: IE 9 only
23186				// Use onreadystatechange to replace onabort
23187				// to handle uncaught aborts
23188				if ( xhr.onabort !== undefined ) {
23189					xhr.onabort = errorCallback;
23190				} else {
23191					xhr.onreadystatechange = function() {
23192
23193						// Check readyState before timeout as it changes
23194						if ( xhr.readyState === 4 ) {
23195
23196							// Allow onerror to be called first,
23197							// but that will not handle a native abort
23198							// Also, save errorCallback to a variable
23199							// as xhr.onerror cannot be accessed
23200							window.setTimeout( function() {
23201								if ( callback ) {
23202									errorCallback();
23203								}
23204							} );
23205						}
23206					};
23207				}
23208
23209				// Create the abort callback
23210				callback = callback( "abort" );
23211
23212				try {
23213
23214					// Do send the request (this may raise an exception)
23215					xhr.send( options.hasContent && options.data || null );
23216				} catch ( e ) {
23217
23218					// trac-14683: Only rethrow if this hasn't been notified as an error yet
23219					if ( callback ) {
23220						throw e;
23221					}
23222				}
23223			},
23224
23225			abort: function() {
23226				if ( callback ) {
23227					callback();
23228				}
23229			}
23230		};
23231	}
23232} );
23233
23234
23235
23236
23237// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
23238jQuery.ajaxPrefilter( function( s ) {
23239	if ( s.crossDomain ) {
23240		s.contents.script = false;
23241	}
23242} );
23243
23244// Install script dataType
23245jQuery.ajaxSetup( {
23246	accepts: {
23247		script: "text/javascript, application/javascript, " +
23248			"application/ecmascript, application/x-ecmascript"
23249	},
23250	contents: {
23251		script: /\b(?:java|ecma)script\b/
23252	},
23253	converters: {
23254		"text script": function( text ) {
23255			jQuery.globalEval( text );
23256			return text;
23257		}
23258	}
23259} );
23260
23261// Handle cache's special case and crossDomain
23262jQuery.ajaxPrefilter( "script", function( s ) {
23263	if ( s.cache === undefined ) {
23264		s.cache = false;
23265	}
23266	if ( s.crossDomain ) {
23267		s.type = "GET";
23268	}
23269} );
23270
23271// Bind script tag hack transport
23272jQuery.ajaxTransport( "script", function( s ) {
23273
23274	// This transport only deals with cross domain or forced-by-attrs requests
23275	if ( s.crossDomain || s.scriptAttrs ) {
23276		var script, callback;
23277		return {
23278			send: function( _, complete ) {
23279				script = jQuery( "<script>" )
23280					.attr( s.scriptAttrs || {} )
23281					.prop( { charset: s.scriptCharset, src: s.url } )
23282					.on( "load error", callback = function( evt ) {
23283						script.remove();
23284						callback = null;
23285						if ( evt ) {
23286							complete( evt.type === "error" ? 404 : 200, evt.type );
23287						}
23288					} );
23289
23290				// Use native DOM manipulation to avoid our domManip AJAX trickery
23291				document.head.appendChild( script[ 0 ] );
23292			},
23293			abort: function() {
23294				if ( callback ) {
23295					callback();
23296				}
23297			}
23298		};
23299	}
23300} );
23301
23302
23303
23304
23305var oldCallbacks = [],
23306	rjsonp = /(=)\?(?=&|$)|\?\?/;
23307
23308// Default jsonp settings
23309jQuery.ajaxSetup( {
23310	jsonp: "callback",
23311	jsonpCallback: function() {
23312		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
23313		this[ callback ] = true;
23314		return callback;
23315	}
23316} );
23317
23318// Detect, normalize options and install callbacks for jsonp requests
23319jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
23320
23321	var callbackName, overwritten, responseContainer,
23322		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
23323			"url" :
23324			typeof s.data === "string" &&
23325				( s.contentType || "" )
23326					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
23327				rjsonp.test( s.data ) && "data"
23328		);
23329
23330	// Handle iff the expected data type is "jsonp" or we have a parameter to set
23331	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
23332
23333		// Get callback name, remembering preexisting value associated with it
23334		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
23335			s.jsonpCallback() :
23336			s.jsonpCallback;
23337
23338		// Insert callback into url or form data
23339		if ( jsonProp ) {
23340			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
23341		} else if ( s.jsonp !== false ) {
23342			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
23343		}
23344
23345		// Use data converter to retrieve json after script execution
23346		s.converters[ "script json" ] = function() {
23347			if ( !responseContainer ) {
23348				jQuery.error( callbackName + " was not called" );
23349			}
23350			return responseContainer[ 0 ];
23351		};
23352
23353		// Force json dataType
23354		s.dataTypes[ 0 ] = "json";
23355
23356		// Install callback
23357		overwritten = window[ callbackName ];
23358		window[ callbackName ] = function() {
23359			responseContainer = arguments;
23360		};
23361
23362		// Clean-up function (fires after converters)
23363		jqXHR.always( function() {
23364
23365			// If previous value didn't exist - remove it
23366			if ( overwritten === undefined ) {
23367				jQuery( window ).removeProp( callbackName );
23368
23369			// Otherwise restore preexisting value
23370			} else {
23371				window[ callbackName ] = overwritten;
23372			}
23373
23374			// Save back as free
23375			if ( s[ callbackName ] ) {
23376
23377				// Make sure that re-using the options doesn't screw things around
23378				s.jsonpCallback = originalSettings.jsonpCallback;
23379
23380				// Save the callback name for future use
23381				oldCallbacks.push( callbackName );
23382			}
23383
23384			// Call if it was a function and we have a response
23385			if ( responseContainer && isFunction( overwritten ) ) {
23386				overwritten( responseContainer[ 0 ] );
23387			}
23388
23389			responseContainer = overwritten = undefined;
23390		} );
23391
23392		// Delegate to script
23393		return "script";
23394	}
23395} );
23396
23397
23398
23399
23400// Support: Safari 8 only
23401// In Safari 8 documents created via document.implementation.createHTMLDocument
23402// collapse sibling forms: the second one becomes a child of the first one.
23403// Because of that, this security measure has to be disabled in Safari 8.
23404// https://bugs.webkit.org/show_bug.cgi?id=137337
23405support.createHTMLDocument = ( function() {
23406	var body = document.implementation.createHTMLDocument( "" ).body;
23407	body.innerHTML = "<form></form><form></form>";
23408	return body.childNodes.length === 2;
23409} )();
23410
23411
23412// Argument "data" should be string of html
23413// context (optional): If specified, the fragment will be created in this context,
23414// defaults to document
23415// keepScripts (optional): If true, will include scripts passed in the html string
23416jQuery.parseHTML = function( data, context, keepScripts ) {
23417	if ( typeof data !== "string" ) {
23418		return [];
23419	}
23420	if ( typeof context === "boolean" ) {
23421		keepScripts = context;
23422		context = false;
23423	}
23424
23425	var base, parsed, scripts;
23426
23427	if ( !context ) {
23428
23429		// Stop scripts or inline event handlers from being executed immediately
23430		// by using document.implementation
23431		if ( support.createHTMLDocument ) {
23432			context = document.implementation.createHTMLDocument( "" );
23433
23434			// Set the base href for the created document
23435			// so any parsed elements with URLs
23436			// are based on the document's URL (gh-2965)
23437			base = context.createElement( "base" );
23438			base.href = document.location.href;
23439			context.head.appendChild( base );
23440		} else {
23441			context = document;
23442		}
23443	}
23444
23445	parsed = rsingleTag.exec( data );
23446	scripts = !keepScripts && [];
23447
23448	// Single tag
23449	if ( parsed ) {
23450		return [ context.createElement( parsed[ 1 ] ) ];
23451	}
23452
23453	parsed = buildFragment( [ data ], context, scripts );
23454
23455	if ( scripts && scripts.length ) {
23456		jQuery( scripts ).remove();
23457	}
23458
23459	return jQuery.merge( [], parsed.childNodes );
23460};
23461
23462
23463/**
23464 * Load a url into a page
23465 */
23466jQuery.fn.load = function( url, params, callback ) {
23467	var selector, type, response,
23468		self = this,
23469		off = url.indexOf( " " );
23470
23471	if ( off > -1 ) {
23472		selector = stripAndCollapse( url.slice( off ) );
23473		url = url.slice( 0, off );
23474	}
23475
23476	// If it's a function
23477	if ( isFunction( params ) ) {
23478
23479		// We assume that it's the callback
23480		callback = params;
23481		params = undefined;
23482
23483	// Otherwise, build a param string
23484	} else if ( params && typeof params === "object" ) {
23485		type = "POST";
23486	}
23487
23488	// If we have elements to modify, make the request
23489	if ( self.length > 0 ) {
23490		jQuery.ajax( {
23491			url: url,
23492
23493			// If "type" variable is undefined, then "GET" method will be used.
23494			// Make value of this field explicit since
23495			// user can override it through ajaxSetup method
23496			type: type || "GET",
23497			dataType: "html",
23498			data: params
23499		} ).done( function( responseText ) {
23500
23501			// Save response for use in complete callback
23502			response = arguments;
23503
23504			self.html( selector ?
23505
23506				// If a selector was specified, locate the right elements in a dummy div
23507				// Exclude scripts to avoid IE 'Permission Denied' errors
23508				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
23509
23510				// Otherwise use the full result
23511				responseText );
23512
23513		// If the request succeeds, this function gets "data", "status", "jqXHR"
23514		// but they are ignored because response was set above.
23515		// If it fails, this function gets "jqXHR", "status", "error"
23516		} ).always( callback && function( jqXHR, status ) {
23517			self.each( function() {
23518				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
23519			} );
23520		} );
23521	}
23522
23523	return this;
23524};
23525
23526
23527
23528
23529jQuery.expr.pseudos.animated = function( elem ) {
23530	return jQuery.grep( jQuery.timers, function( fn ) {
23531		return elem === fn.elem;
23532	} ).length;
23533};
23534
23535
23536
23537
23538jQuery.offset = {
23539	setOffset: function( elem, options, i ) {
23540		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
23541			position = jQuery.css( elem, "position" ),
23542			curElem = jQuery( elem ),
23543			props = {};
23544
23545		// Set position first, in-case top/left are set even on static elem
23546		if ( position === "static" ) {
23547			elem.style.position = "relative";
23548		}
23549
23550		curOffset = curElem.offset();
23551		curCSSTop = jQuery.css( elem, "top" );
23552		curCSSLeft = jQuery.css( elem, "left" );
23553		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
23554			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
23555
23556		// Need to be able to calculate position if either
23557		// top or left is auto and position is either absolute or fixed
23558		if ( calculatePosition ) {
23559			curPosition = curElem.position();
23560			curTop = curPosition.top;
23561			curLeft = curPosition.left;
23562
23563		} else {
23564			curTop = parseFloat( curCSSTop ) || 0;
23565			curLeft = parseFloat( curCSSLeft ) || 0;
23566		}
23567
23568		if ( isFunction( options ) ) {
23569
23570			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
23571			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
23572		}
23573
23574		if ( options.top != null ) {
23575			props.top = ( options.top - curOffset.top ) + curTop;
23576		}
23577		if ( options.left != null ) {
23578			props.left = ( options.left - curOffset.left ) + curLeft;
23579		}
23580
23581		if ( "using" in options ) {
23582			options.using.call( elem, props );
23583
23584		} else {
23585			curElem.css( props );
23586		}
23587	}
23588};
23589
23590jQuery.fn.extend( {
23591
23592	// offset() relates an element's border box to the document origin
23593	offset: function( options ) {
23594
23595		// Preserve chaining for setter
23596		if ( arguments.length ) {
23597			return options === undefined ?
23598				this :
23599				this.each( function( i ) {
23600					jQuery.offset.setOffset( this, options, i );
23601				} );
23602		}
23603
23604		var rect, win,
23605			elem = this[ 0 ];
23606
23607		if ( !elem ) {
23608			return;
23609		}
23610
23611		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
23612		// Support: IE <=11 only
23613		// Running getBoundingClientRect on a
23614		// disconnected node in IE throws an error
23615		if ( !elem.getClientRects().length ) {
23616			return { top: 0, left: 0 };
23617		}
23618
23619		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
23620		rect = elem.getBoundingClientRect();
23621		win = elem.ownerDocument.defaultView;
23622		return {
23623			top: rect.top + win.pageYOffset,
23624			left: rect.left + win.pageXOffset
23625		};
23626	},
23627
23628	// position() relates an element's margin box to its offset parent's padding box
23629	// This corresponds to the behavior of CSS absolute positioning
23630	position: function() {
23631		if ( !this[ 0 ] ) {
23632			return;
23633		}
23634
23635		var offsetParent, offset, doc,
23636			elem = this[ 0 ],
23637			parentOffset = { top: 0, left: 0 };
23638
23639		// position:fixed elements are offset from the viewport, which itself always has zero offset
23640		if ( jQuery.css( elem, "position" ) === "fixed" ) {
23641
23642			// Assume position:fixed implies availability of getBoundingClientRect
23643			offset = elem.getBoundingClientRect();
23644
23645		} else {
23646			offset = this.offset();
23647
23648			// Account for the *real* offset parent, which can be the document or its root element
23649			// when a statically positioned element is identified
23650			doc = elem.ownerDocument;
23651			offsetParent = elem.offsetParent || doc.documentElement;
23652			while ( offsetParent &&
23653				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
23654				jQuery.css( offsetParent, "position" ) === "static" ) {
23655
23656				offsetParent = offsetParent.parentNode;
23657			}
23658			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
23659
23660				// Incorporate borders into its offset, since they are outside its content origin
23661				parentOffset = jQuery( offsetParent ).offset();
23662				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
23663				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
23664			}
23665		}
23666
23667		// Subtract parent offsets and element margins
23668		return {
23669			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
23670			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
23671		};
23672	},
23673
23674	// This method will return documentElement in the following cases:
23675	// 1) For the element inside the iframe without offsetParent, this method will return
23676	//    documentElement of the parent window
23677	// 2) For the hidden or detached element
23678	// 3) For body or html element, i.e. in case of the html node - it will return itself
23679	//
23680	// but those exceptions were never presented as a real life use-cases
23681	// and might be considered as more preferable results.
23682	//
23683	// This logic, however, is not guaranteed and can change at any point in the future
23684	offsetParent: function() {
23685		return this.map( function() {
23686			var offsetParent = this.offsetParent;
23687
23688			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
23689				offsetParent = offsetParent.offsetParent;
23690			}
23691
23692			return offsetParent || documentElement;
23693		} );
23694	}
23695} );
23696
23697// Create scrollLeft and scrollTop methods
23698jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
23699	var top = "pageYOffset" === prop;
23700
23701	jQuery.fn[ method ] = function( val ) {
23702		return access( this, function( elem, method, val ) {
23703
23704			// Coalesce documents and windows
23705			var win;
23706			if ( isWindow( elem ) ) {
23707				win = elem;
23708			} else if ( elem.nodeType === 9 ) {
23709				win = elem.defaultView;
23710			}
23711
23712			if ( val === undefined ) {
23713				return win ? win[ prop ] : elem[ method ];
23714			}
23715
23716			if ( win ) {
23717				win.scrollTo(
23718					!top ? val : win.pageXOffset,
23719					top ? val : win.pageYOffset
23720				);
23721
23722			} else {
23723				elem[ method ] = val;
23724			}
23725		}, method, val, arguments.length );
23726	};
23727} );
23728
23729// Support: Safari <=7 - 9.1, Chrome <=37 - 49
23730// Add the top/left cssHooks using jQuery.fn.position
23731// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
23732// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
23733// getComputedStyle returns percent when specified for top/left/bottom/right;
23734// rather than make the css module depend on the offset module, just check for it here
23735jQuery.each( [ "top", "left" ], function( _i, prop ) {
23736	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
23737		function( elem, computed ) {
23738			if ( computed ) {
23739				computed = curCSS( elem, prop );
23740
23741				// If curCSS returns percentage, fallback to offset
23742				return rnumnonpx.test( computed ) ?
23743					jQuery( elem ).position()[ prop ] + "px" :
23744					computed;
23745			}
23746		}
23747	);
23748} );
23749
23750
23751// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
23752jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
23753	jQuery.each( {
23754		padding: "inner" + name,
23755		content: type,
23756		"": "outer" + name
23757	}, function( defaultExtra, funcName ) {
23758
23759		// Margin is only for outerHeight, outerWidth
23760		jQuery.fn[ funcName ] = function( margin, value ) {
23761			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
23762				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
23763
23764			return access( this, function( elem, type, value ) {
23765				var doc;
23766
23767				if ( isWindow( elem ) ) {
23768
23769					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
23770					return funcName.indexOf( "outer" ) === 0 ?
23771						elem[ "inner" + name ] :
23772						elem.document.documentElement[ "client" + name ];
23773				}
23774
23775				// Get document width or height
23776				if ( elem.nodeType === 9 ) {
23777					doc = elem.documentElement;
23778
23779					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
23780					// whichever is greatest
23781					return Math.max(
23782						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
23783						elem.body[ "offset" + name ], doc[ "offset" + name ],
23784						doc[ "client" + name ]
23785					);
23786				}
23787
23788				return value === undefined ?
23789
23790					// Get width or height on the element, requesting but not forcing parseFloat
23791					jQuery.css( elem, type, extra ) :
23792
23793					// Set width or height on the element
23794					jQuery.style( elem, type, value, extra );
23795			}, type, chainable ? margin : undefined, chainable );
23796		};
23797	} );
23798} );
23799
23800
23801jQuery.each( [
23802	"ajaxStart",
23803	"ajaxStop",
23804	"ajaxComplete",
23805	"ajaxError",
23806	"ajaxSuccess",
23807	"ajaxSend"
23808], function( _i, type ) {
23809	jQuery.fn[ type ] = function( fn ) {
23810		return this.on( type, fn );
23811	};
23812} );
23813
23814
23815
23816
23817jQuery.fn.extend( {
23818
23819	bind: function( types, data, fn ) {
23820		return this.on( types, null, data, fn );
23821	},
23822	unbind: function( types, fn ) {
23823		return this.off( types, null, fn );
23824	},
23825
23826	delegate: function( selector, types, data, fn ) {
23827		return this.on( types, selector, data, fn );
23828	},
23829	undelegate: function( selector, types, fn ) {
23830
23831		// ( namespace ) or ( selector, types [, fn] )
23832		return arguments.length === 1 ?
23833			this.off( selector, "**" ) :
23834			this.off( types, selector || "**", fn );
23835	},
23836
23837	hover: function( fnOver, fnOut ) {
23838		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
23839	}
23840} );
23841
23842jQuery.each(
23843	( "blur focus focusin focusout resize scroll click dblclick " +
23844	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
23845	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
23846	function( _i, name ) {
23847
23848		// Handle event binding
23849		jQuery.fn[ name ] = function( data, fn ) {
23850			return arguments.length > 0 ?
23851				this.on( name, null, data, fn ) :
23852				this.trigger( name );
23853		};
23854	}
23855);
23856
23857
23858
23859
23860// Support: Android <=4.0 only
23861// Make sure we trim BOM and NBSP
23862// Require that the "whitespace run" starts from a non-whitespace
23863// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
23864var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
23865
23866// Bind a function to a context, optionally partially applying any
23867// arguments.
23868// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
23869// However, it is not slated for removal any time soon
23870jQuery.proxy = function( fn, context ) {
23871	var tmp, args, proxy;
23872
23873	if ( typeof context === "string" ) {
23874		tmp = fn[ context ];
23875		context = fn;
23876		fn = tmp;
23877	}
23878
23879	// Quick check to determine if target is callable, in the spec
23880	// this throws a TypeError, but we will just return undefined.
23881	if ( !isFunction( fn ) ) {
23882		return undefined;
23883	}
23884
23885	// Simulated bind
23886	args = slice.call( arguments, 2 );
23887	proxy = function() {
23888		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
23889	};
23890
23891	// Set the guid of unique handler to the same of original handler, so it can be removed
23892	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
23893
23894	return proxy;
23895};
23896
23897jQuery.holdReady = function( hold ) {
23898	if ( hold ) {
23899		jQuery.readyWait++;
23900	} else {
23901		jQuery.ready( true );
23902	}
23903};
23904jQuery.isArray = Array.isArray;
23905jQuery.parseJSON = JSON.parse;
23906jQuery.nodeName = nodeName;
23907jQuery.isFunction = isFunction;
23908jQuery.isWindow = isWindow;
23909jQuery.camelCase = camelCase;
23910jQuery.type = toType;
23911
23912jQuery.now = Date.now;
23913
23914jQuery.isNumeric = function( obj ) {
23915
23916	// As of jQuery 3.0, isNumeric is limited to
23917	// strings and numbers (primitives or objects)
23918	// that can be coerced to finite numbers (gh-2662)
23919	var type = jQuery.type( obj );
23920	return ( type === "number" || type === "string" ) &&
23921
23922		// parseFloat NaNs numeric-cast false positives ("")
23923		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
23924		// subtraction forces infinities to NaN
23925		!isNaN( obj - parseFloat( obj ) );
23926};
23927
23928jQuery.trim = function( text ) {
23929	return text == null ?
23930		"" :
23931		( text + "" ).replace( rtrim, "$1" );
23932};
23933
23934
23935
23936// Register as a named AMD module, since jQuery can be concatenated with other
23937// files that may use define, but not via a proper concatenation script that
23938// understands anonymous AMD modules. A named AMD is safest and most robust
23939// way to register. Lowercase jquery is used because AMD module names are
23940// derived from file names, and jQuery is normally delivered in a lowercase
23941// file name. Do this after creating the global so that if an AMD module wants
23942// to call noConflict to hide this version of jQuery, it will work.
23943
23944// Note that for maximum portability, libraries that are not jQuery should
23945// declare themselves as anonymous modules, and avoid setting a global if an
23946// AMD loader is present. jQuery is a special case. For more information, see
23947// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
23948
23949if ( true ) {
23950	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
23951		return jQuery;
23952	}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
23953				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
23954}
23955
23956
23957
23958
23959var
23960
23961	// Map over jQuery in case of overwrite
23962	_jQuery = window.jQuery,
23963
23964	// Map over the $ in case of overwrite
23965	_$ = window.$;
23966
23967jQuery.noConflict = function( deep ) {
23968	if ( window.$ === jQuery ) {
23969		window.$ = _$;
23970	}
23971
23972	if ( deep && window.jQuery === jQuery ) {
23973		window.jQuery = _jQuery;
23974	}
23975
23976	return jQuery;
23977};
23978
23979// Expose jQuery and $ identifiers, even in AMD
23980// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
23981// and CommonJS for browser emulators (trac-13566)
23982if ( typeof noGlobal === "undefined" ) {
23983	window.jQuery = window.$ = jQuery;
23984}
23985
23986
23987
23988
23989return jQuery;
23990} );
23991
23992
23993/***/ }),
23994
vendor: 89,123 bytes, lines 23995-26624
23995/***/ "./node_modules/popper.js/dist/esm/popper.js":
23996/*!***************************************************!*\
23997  !*** ./node_modules/popper.js/dist/esm/popper.js ***!
23998  \***************************************************/
23999/*! exports provided: default */
24000/***/ (function(module, __webpack_exports__, __webpack_require__) {
24001
24002"use strict";
24003__webpack_require__.r(__webpack_exports__);
24004/* WEBPACK VAR INJECTION */(function(global) {/**!
24005 * @fileOverview Kickass library to create and place poppers near their reference elements.
24006 * @version 1.16.1
24007 * @license
24008 * Copyright (c) 2016 Federico Zivolo and contributors
24009 *
24010 * Permission is hereby granted, free of charge, to any person obtaining a copy
24011 * of this software and associated documentation files (the "Software"), to deal
24012 * in the Software without restriction, including without limitation the rights
24013 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
24014 * copies of the Software, and to permit persons to whom the Software is
24015 * furnished to do so, subject to the following conditions:
24016 *
24017 * The above copyright notice and this permission notice shall be included in all
24018 * copies or substantial portions of the Software.
24019 *
24020 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24021 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24022 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24023 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24024 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24025 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24026 * SOFTWARE.
24027 */
24028var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
24029
24030var timeoutDuration = function () {
24031  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
24032  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
24033    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
24034      return 1;
24035    }
24036  }
24037  return 0;
24038}();
24039
24040function microtaskDebounce(fn) {
24041  var called = false;
24042  return function () {
24043    if (called) {
24044      return;
24045    }
24046    called = true;
24047    window.Promise.resolve().then(function () {
24048      called = false;
24049      fn();
24050    });
24051  };
24052}
24053
24054function taskDebounce(fn) {
24055  var scheduled = false;
24056  return function () {
24057    if (!scheduled) {
24058      scheduled = true;
24059      setTimeout(function () {
24060        scheduled = false;
24061        fn();
24062      }, timeoutDuration);
24063    }
24064  };
24065}
24066
24067var supportsMicroTasks = isBrowser && window.Promise;
24068
24069/**
24070* Create a debounced version of a method, that's asynchronously deferred
24071* but called in the minimum time possible.
24072*
24073* @method
24074* @memberof Popper.Utils
24075* @argument {Function} fn
24076* @returns {Function}
24077*/
24078var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
24079
24080/**
24081 * Check if the given variable is a function
24082 * @method
24083 * @memberof Popper.Utils
24084 * @argument {Any} functionToCheck - variable to check
24085 * @returns {Boolean} answer to: is a function?
24086 */
24087function isFunction(functionToCheck) {
24088  var getType = {};
24089  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
24090}
24091
24092/**
24093 * Get CSS computed property of the given element
24094 * @method
24095 * @memberof Popper.Utils
24096 * @argument {Eement} element
24097 * @argument {String} property
24098 */
24099function getStyleComputedProperty(element, property) {
24100  if (element.nodeType !== 1) {
24101    return [];
24102  }
24103  // NOTE: 1 DOM access here
24104  var window = element.ownerDocument.defaultView;
24105  var css = window.getComputedStyle(element, null);
24106  return property ? css[property] : css;
24107}
24108
24109/**
24110 * Returns the parentNode or the host of the element
24111 * @method
24112 * @memberof Popper.Utils
24113 * @argument {Element} element
24114 * @returns {Element} parent
24115 */
24116function getParentNode(element) {
24117  if (element.nodeName === 'HTML') {
24118    return element;
24119  }
24120  return element.parentNode || element.host;
24121}
24122
24123/**
24124 * Returns the scrolling parent of the given element
24125 * @method
24126 * @memberof Popper.Utils
24127 * @argument {Element} element
24128 * @returns {Element} scroll parent
24129 */
24130function getScrollParent(element) {
24131  // Return body, `getScroll` will take care to get the correct `scrollTop` from it
24132  if (!element) {
24133    return document.body;
24134  }
24135
24136  switch (element.nodeName) {
24137    case 'HTML':
24138    case 'BODY':
24139      return element.ownerDocument.body;
24140    case '#document':
24141      return element.body;
24142  }
24143
24144  // Firefox want us to check `-x` and `-y` variations as well
24145
24146  var _getStyleComputedProp = getStyleComputedProperty(element),
24147      overflow = _getStyleComputedProp.overflow,
24148      overflowX = _getStyleComputedProp.overflowX,
24149      overflowY = _getStyleComputedProp.overflowY;
24150
24151  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
24152    return element;
24153  }
24154
24155  return getScrollParent(getParentNode(element));
24156}
24157
24158/**
24159 * Returns the reference node of the reference object, or the reference object itself.
24160 * @method
24161 * @memberof Popper.Utils
24162 * @param {Element|Object} reference - the reference element (the popper will be relative to this)
24163 * @returns {Element} parent
24164 */
24165function getReferenceNode(reference) {
24166  return reference && reference.referenceNode ? reference.referenceNode : reference;
24167}
24168
24169var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
24170var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
24171
24172/**
24173 * Determines if the browser is Internet Explorer
24174 * @method
24175 * @memberof Popper.Utils
24176 * @param {Number} version to check
24177 * @returns {Boolean} isIE
24178 */
24179function isIE(version) {
24180  if (version === 11) {
24181    return isIE11;
24182  }
24183  if (version === 10) {
24184    return isIE10;
24185  }
24186  return isIE11 || isIE10;
24187}
24188
24189/**
24190 * Returns the offset parent of the given element
24191 * @method
24192 * @memberof Popper.Utils
24193 * @argument {Element} element
24194 * @returns {Element} offset parent
24195 */
24196function getOffsetParent(element) {
24197  if (!element) {
24198    return document.documentElement;
24199  }
24200
24201  var noOffsetParent = isIE(10) ? document.body : null;
24202
24203  // NOTE: 1 DOM access here
24204  var offsetParent = element.offsetParent || null;
24205  // Skip hidden elements which don't have an offsetParent
24206  while (offsetParent === noOffsetParent && element.nextElementSibling) {
24207    offsetParent = (element = element.nextElementSibling).offsetParent;
24208  }
24209
24210  var nodeName = offsetParent && offsetParent.nodeName;
24211
24212  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
24213    return element ? element.ownerDocument.documentElement : document.documentElement;
24214  }
24215
24216  // .offsetParent will return the closest TH, TD or TABLE in case
24217  // no offsetParent is present, I hate this job...
24218  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
24219    return getOffsetParent(offsetParent);
24220  }
24221
24222  return offsetParent;
24223}
24224
24225function isOffsetContainer(element) {
24226  var nodeName = element.nodeName;
24227
24228  if (nodeName === 'BODY') {
24229    return false;
24230  }
24231  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
24232}
24233
24234/**
24235 * Finds the root node (document, shadowDOM root) of the given element
24236 * @method
24237 * @memberof Popper.Utils
24238 * @argument {Element} node
24239 * @returns {Element} root node
24240 */
24241function getRoot(node) {
24242  if (node.parentNode !== null) {
24243    return getRoot(node.parentNode);
24244  }
24245
24246  return node;
24247}
24248
24249/**
24250 * Finds the offset parent common to the two provided nodes
24251 * @method
24252 * @memberof Popper.Utils
24253 * @argument {Element} element1
24254 * @argument {Element} element2
24255 * @returns {Element} common offset parent
24256 */
24257function findCommonOffsetParent(element1, element2) {
24258  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
24259  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
24260    return document.documentElement;
24261  }
24262
24263  // Here we make sure to give as "start" the element that comes first in the DOM
24264  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
24265  var start = order ? element1 : element2;
24266  var end = order ? element2 : element1;
24267
24268  // Get common ancestor container
24269  var range = document.createRange();
24270  range.setStart(start, 0);
24271  range.setEnd(end, 0);
24272  var commonAncestorContainer = range.commonAncestorContainer;
24273
24274  // Both nodes are inside #document
24275
24276  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
24277    if (isOffsetContainer(commonAncestorContainer)) {
24278      return commonAncestorContainer;
24279    }
24280
24281    return getOffsetParent(commonAncestorContainer);
24282  }
24283
24284  // one of the nodes is inside shadowDOM, find which one
24285  var element1root = getRoot(element1);
24286  if (element1root.host) {
24287    return findCommonOffsetParent(element1root.host, element2);
24288  } else {
24289    return findCommonOffsetParent(element1, getRoot(element2).host);
24290  }
24291}
24292
24293/**
24294 * Gets the scroll value of the given element in the given side (top and left)
24295 * @method
24296 * @memberof Popper.Utils
24297 * @argument {Element} element
24298 * @argument {String} side `top` or `left`
24299 * @returns {number} amount of scrolled pixels
24300 */
24301function getScroll(element) {
24302  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
24303
24304  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
24305  var nodeName = element.nodeName;
24306
24307  if (nodeName === 'BODY' || nodeName === 'HTML') {
24308    var html = element.ownerDocument.documentElement;
24309    var scrollingElement = element.ownerDocument.scrollingElement || html;
24310    return scrollingElement[upperSide];
24311  }
24312
24313  return element[upperSide];
24314}
24315
24316/*
24317 * Sum or subtract the element scroll values (left and top) from a given rect object
24318 * @method
24319 * @memberof Popper.Utils
24320 * @param {Object} rect - Rect object you want to change
24321 * @param {HTMLElement} element - The element from the function reads the scroll values
24322 * @param {Boolean} subtract - set to true if you want to subtract the scroll values
24323 * @return {Object} rect - The modifier rect object
24324 */
24325function includeScroll(rect, element) {
24326  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
24327
24328  var scrollTop = getScroll(element, 'top');
24329  var scrollLeft = getScroll(element, 'left');
24330  var modifier = subtract ? -1 : 1;
24331  rect.top += scrollTop * modifier;
24332  rect.bottom += scrollTop * modifier;
24333  rect.left += scrollLeft * modifier;
24334  rect.right += scrollLeft * modifier;
24335  return rect;
24336}
24337
24338/*
24339 * Helper to detect borders of a given element
24340 * @method
24341 * @memberof Popper.Utils
24342 * @param {CSSStyleDeclaration} styles
24343 * Result of `getStyleComputedProperty` on the given element
24344 * @param {String} axis - `x` or `y`
24345 * @return {number} borders - The borders size of the given axis
24346 */
24347
24348function getBordersSize(styles, axis) {
24349  var sideA = axis === 'x' ? 'Left' : 'Top';
24350  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
24351
24352  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);
24353}
24354
24355function getSize(axis, body, html, computedStyle) {
24356  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);
24357}
24358
24359function getWindowSizes(document) {
24360  var body = document.body;
24361  var html = document.documentElement;
24362  var computedStyle = isIE(10) && getComputedStyle(html);
24363
24364  return {
24365    height: getSize('Height', body, html, computedStyle),
24366    width: getSize('Width', body, html, computedStyle)
24367  };
24368}
24369
24370var classCallCheck = function (instance, Constructor) {
24371  if (!(instance instanceof Constructor)) {
24372    throw new TypeError("Cannot call a class as a function");
24373  }
24374};
24375
24376var createClass = function () {
24377  function defineProperties(target, props) {
24378    for (var i = 0; i < props.length; i++) {
24379      var descriptor = props[i];
24380      descriptor.enumerable = descriptor.enumerable || false;
24381      descriptor.configurable = true;
24382      if ("value" in descriptor) descriptor.writable = true;
24383      Object.defineProperty(target, descriptor.key, descriptor);
24384    }
24385  }
24386
24387  return function (Constructor, protoProps, staticProps) {
24388    if (protoProps) defineProperties(Constructor.prototype, protoProps);
24389    if (staticProps) defineProperties(Constructor, staticProps);
24390    return Constructor;
24391  };
24392}();
24393
24394
24395
24396
24397
24398var defineProperty = function (obj, key, value) {
24399  if (key in obj) {
24400    Object.defineProperty(obj, key, {
24401      value: value,
24402      enumerable: true,
24403      configurable: true,
24404      writable: true
24405    });
24406  } else {
24407    obj[key] = value;
24408  }
24409
24410  return obj;
24411};
24412
24413var _extends = Object.assign || function (target) {
24414  for (var i = 1; i < arguments.length; i++) {
24415    var source = arguments[i];
24416
24417    for (var key in source) {
24418      if (Object.prototype.hasOwnProperty.call(source, key)) {
24419        target[key] = source[key];
24420      }
24421    }
24422  }
24423
24424  return target;
24425};
24426
24427/**
24428 * Given element offsets, generate an output similar to getBoundingClientRect
24429 * @method
24430 * @memberof Popper.Utils
24431 * @argument {Object} offsets
24432 * @returns {Object} ClientRect like output
24433 */
24434function getClientRect(offsets) {
24435  return _extends({}, offsets, {
24436    right: offsets.left + offsets.width,
24437    bottom: offsets.top + offsets.height
24438  });
24439}
24440
24441/**
24442 * Get bounding client rect of given element
24443 * @method
24444 * @memberof Popper.Utils
24445 * @param {HTMLElement} element
24446 * @return {Object} client rect
24447 */
24448function getBoundingClientRect(element) {
24449  var rect = {};
24450
24451  // IE10 10 FIX: Please, don't ask, the element isn't
24452  // considered in DOM in some circumstances...
24453  // This isn't reproducible in IE10 compatibility mode of IE11
24454  try {
24455    if (isIE(10)) {
24456      rect = element.getBoundingClientRect();
24457      var scrollTop = getScroll(element, 'top');
24458      var scrollLeft = getScroll(element, 'left');
24459      rect.top += scrollTop;
24460      rect.left += scrollLeft;
24461      rect.bottom += scrollTop;
24462      rect.right += scrollLeft;
24463    } else {
24464      rect = element.getBoundingClientRect();
24465    }
24466  } catch (e) {}
24467
24468  var result = {
24469    left: rect.left,
24470    top: rect.top,
24471    width: rect.right - rect.left,
24472    height: rect.bottom - rect.top
24473  };
24474
24475  // subtract scrollbar size from sizes
24476  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
24477  var width = sizes.width || element.clientWidth || result.width;
24478  var height = sizes.height || element.clientHeight || result.height;
24479
24480  var horizScrollbar = element.offsetWidth - width;
24481  var vertScrollbar = element.offsetHeight - height;
24482
24483  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
24484  // we make this check conditional for performance reasons
24485  if (horizScrollbar || vertScrollbar) {
24486    var styles = getStyleComputedProperty(element);
24487    horizScrollbar -= getBordersSize(styles, 'x');
24488    vertScrollbar -= getBordersSize(styles, 'y');
24489
24490    result.width -= horizScrollbar;
24491    result.height -= vertScrollbar;
24492  }
24493
24494  return getClientRect(result);
24495}
24496
24497function getOffsetRectRelativeToArbitraryNode(children, parent) {
24498  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
24499
24500  var isIE10 = isIE(10);
24501  var isHTML = parent.nodeName === 'HTML';
24502  var childrenRect = getBoundingClientRect(children);
24503  var parentRect = getBoundingClientRect(parent);
24504  var scrollParent = getScrollParent(children);
24505
24506  var styles = getStyleComputedProperty(parent);
24507  var borderTopWidth = parseFloat(styles.borderTopWidth);
24508  var borderLeftWidth = parseFloat(styles.borderLeftWidth);
24509
24510  // In cases where the parent is fixed, we must ignore negative scroll in offset calc
24511  if (fixedPosition && isHTML) {
24512    parentRect.top = Math.max(parentRect.top, 0);
24513    parentRect.left = Math.max(parentRect.left, 0);
24514  }
24515  var offsets = getClientRect({
24516    top: childrenRect.top - parentRect.top - borderTopWidth,
24517    left: childrenRect.left - parentRect.left - borderLeftWidth,
24518    width: childrenRect.width,
24519    height: childrenRect.height
24520  });
24521  offsets.marginTop = 0;
24522  offsets.marginLeft = 0;
24523
24524  // Subtract margins of documentElement in case it's being used as parent
24525  // we do this only on HTML because it's the only element that behaves
24526  // differently when margins are applied to it. The margins are included in
24527  // the box of the documentElement, in the other cases not.
24528  if (!isIE10 && isHTML) {
24529    var marginTop = parseFloat(styles.marginTop);
24530    var marginLeft = parseFloat(styles.marginLeft);
24531
24532    offsets.top -= borderTopWidth - marginTop;
24533    offsets.bottom -= borderTopWidth - marginTop;
24534    offsets.left -= borderLeftWidth - marginLeft;
24535    offsets.right -= borderLeftWidth - marginLeft;
24536
24537    // Attach marginTop and marginLeft because in some circumstances we may need them
24538    offsets.marginTop = marginTop;
24539    offsets.marginLeft = marginLeft;
24540  }
24541
24542  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
24543    offsets = includeScroll(offsets, parent);
24544  }
24545
24546  return offsets;
24547}
24548
24549function getViewportOffsetRectRelativeToArtbitraryNode(element) {
24550  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
24551
24552  var html = element.ownerDocument.documentElement;
24553  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
24554  var width = Math.max(html.clientWidth, window.innerWidth || 0);
24555  var height = Math.max(html.clientHeight, window.innerHeight || 0);
24556
24557  var scrollTop = !excludeScroll ? getScroll(html) : 0;
24558  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;
24559
24560  var offset = {
24561    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
24562    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
24563    width: width,
24564    height: height
24565  };
24566
24567  return getClientRect(offset);
24568}
24569
24570/**
24571 * Check if the given element is fixed or is inside a fixed parent
24572 * @method
24573 * @memberof Popper.Utils
24574 * @argument {Element} element
24575 * @argument {Element} customContainer
24576 * @returns {Boolean} answer to "isFixed?"
24577 */
24578function isFixed(element) {
24579  var nodeName = element.nodeName;
24580  if (nodeName === 'BODY' || nodeName === 'HTML') {
24581    return false;
24582  }
24583  if (getStyleComputedProperty(element, 'position') === 'fixed') {
24584    return true;
24585  }
24586  var parentNode = getParentNode(element);
24587  if (!parentNode) {
24588    return false;
24589  }
24590  return isFixed(parentNode);
24591}
24592
24593/**
24594 * Finds the first parent of an element that has a transformed property defined
24595 * @method
24596 * @memberof Popper.Utils
24597 * @argument {Element} element
24598 * @returns {Element} first transformed parent or documentElement
24599 */
24600
24601function getFixedPositionOffsetParent(element) {
24602  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
24603  if (!element || !element.parentElement || isIE()) {
24604    return document.documentElement;
24605  }
24606  var el = element.parentElement;
24607  while (el && getStyleComputedProperty(el, 'transform') === 'none') {
24608    el = el.parentElement;
24609  }
24610  return el || document.documentElement;
24611}
24612
24613/**
24614 * Computed the boundaries limits and return them
24615 * @method
24616 * @memberof Popper.Utils
24617 * @param {HTMLElement} popper
24618 * @param {HTMLElement} reference
24619 * @param {number} padding
24620 * @param {HTMLElement} boundariesElement - Element used to define the boundaries
24621 * @param {Boolean} fixedPosition - Is in fixed position mode
24622 * @returns {Object} Coordinates of the boundaries
24623 */
24624function getBoundaries(popper, reference, padding, boundariesElement) {
24625  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
24626
24627  // NOTE: 1 DOM access here
24628
24629  var boundaries = { top: 0, left: 0 };
24630  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
24631
24632  // Handle viewport case
24633  if (boundariesElement === 'viewport') {
24634    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
24635  } else {
24636    // Handle other cases based on DOM element used as boundaries
24637    var boundariesNode = void 0;
24638    if (boundariesElement === 'scrollParent') {
24639      boundariesNode = getScrollParent(getParentNode(reference));
24640      if (boundariesNode.nodeName === 'BODY') {
24641        boundariesNode = popper.ownerDocument.documentElement;
24642      }
24643    } else if (boundariesElement === 'window') {
24644      boundariesNode = popper.ownerDocument.documentElement;
24645    } else {
24646      boundariesNode = boundariesElement;
24647    }
24648
24649    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);
24650
24651    // In case of HTML, we need a different computation
24652    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
24653      var _getWindowSizes = getWindowSizes(popper.ownerDocument),
24654          height = _getWindowSizes.height,
24655          width = _getWindowSizes.width;
24656
24657      boundaries.top += offsets.top - offsets.marginTop;
24658      boundaries.bottom = height + offsets.top;
24659      boundaries.left += offsets.left - offsets.marginLeft;
24660      boundaries.right = width + offsets.left;
24661    } else {
24662      // for all the other DOM elements, this one is good
24663      boundaries = offsets;
24664    }
24665  }
24666
24667  // Add paddings
24668  padding = padding || 0;
24669  var isPaddingNumber = typeof padding === 'number';
24670  boundaries.left += isPaddingNumber ? padding : padding.left || 0;
24671  boundaries.top += isPaddingNumber ? padding : padding.top || 0;
24672  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
24673  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
24674
24675  return boundaries;
24676}
24677
24678function getArea(_ref) {
24679  var width = _ref.width,
24680      height = _ref.height;
24681
24682  return width * height;
24683}
24684
24685/**
24686 * Utility used to transform the `auto` placement to the placement with more
24687 * available space.
24688 * @method
24689 * @memberof Popper.Utils
24690 * @argument {Object} data - The data object generated by update method
24691 * @argument {Object} options - Modifiers configuration and options
24692 * @returns {Object} The data object, properly modified
24693 */
24694function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
24695  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
24696
24697  if (placement.indexOf('auto') === -1) {
24698    return placement;
24699  }
24700
24701  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
24702
24703  var rects = {
24704    top: {
24705      width: boundaries.width,
24706      height: refRect.top - boundaries.top
24707    },
24708    right: {
24709      width: boundaries.right - refRect.right,
24710      height: boundaries.height
24711    },
24712    bottom: {
24713      width: boundaries.width,
24714      height: boundaries.bottom - refRect.bottom
24715    },
24716    left: {
24717      width: refRect.left - boundaries.left,
24718      height: boundaries.height
24719    }
24720  };
24721
24722  var sortedAreas = Object.keys(rects).map(function (key) {
24723    return _extends({
24724      key: key
24725    }, rects[key], {
24726      area: getArea(rects[key])
24727    });
24728  }).sort(function (a, b) {
24729    return b.area - a.area;
24730  });
24731
24732  var filteredAreas = sortedAreas.filter(function (_ref2) {
24733    var width = _ref2.width,
24734        height = _ref2.height;
24735    return width >= popper.clientWidth && height >= popper.clientHeight;
24736  });
24737
24738  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
24739
24740  var variation = placement.split('-')[1];
24741
24742  return computedPlacement + (variation ? '-' + variation : '');
24743}
24744
24745/**
24746 * Get offsets to the reference element
24747 * @method
24748 * @memberof Popper.Utils
24749 * @param {Object} state
24750 * @param {Element} popper - the popper element
24751 * @param {Element} reference - the reference element (the popper will be relative to this)
24752 * @param {Element} fixedPosition - is in fixed position mode
24753 * @returns {Object} An object containing the offsets which will be applied to the popper
24754 */
24755function getReferenceOffsets(state, popper, reference) {
24756  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
24757
24758  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
24759  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
24760}
24761
24762/**
24763 * Get the outer sizes of the given element (offset size + margins)
24764 * @method
24765 * @memberof Popper.Utils
24766 * @argument {Element} element
24767 * @returns {Object} object containing width and height properties
24768 */
24769function getOuterSizes(element) {
24770  var window = element.ownerDocument.defaultView;
24771  var styles = window.getComputedStyle(element);
24772  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
24773  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
24774  var result = {
24775    width: element.offsetWidth + y,
24776    height: element.offsetHeight + x
24777  };
24778  return result;
24779}
24780
24781/**
24782 * Get the opposite placement of the given one
24783 * @method
24784 * @memberof Popper.Utils
24785 * @argument {String} placement
24786 * @returns {String} flipped placement
24787 */
24788function getOppositePlacement(placement) {
24789  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
24790  return placement.replace(/left|right|bottom|top/g, function (matched) {
24791    return hash[matched];
24792  });
24793}
24794
24795/**
24796 * Get offsets to the popper
24797 * @method
24798 * @memberof Popper.Utils
24799 * @param {Object} position - CSS position the Popper will get applied
24800 * @param {HTMLElement} popper - the popper element
24801 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
24802 * @param {String} placement - one of the valid placement options
24803 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
24804 */
24805function getPopperOffsets(popper, referenceOffsets, placement) {
24806  placement = placement.split('-')[0];
24807
24808  // Get popper node sizes
24809  var popperRect = getOuterSizes(popper);
24810
24811  // Add position, width and height to our offsets object
24812  var popperOffsets = {
24813    width: popperRect.width,
24814    height: popperRect.height
24815  };
24816
24817  // depending by the popper placement we have to compute its offsets slightly differently
24818  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
24819  var mainSide = isHoriz ? 'top' : 'left';
24820  var secondarySide = isHoriz ? 'left' : 'top';
24821  var measurement = isHoriz ? 'height' : 'width';
24822  var secondaryMeasurement = !isHoriz ? 'height' : 'width';
24823
24824  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
24825  if (placement === secondarySide) {
24826    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
24827  } else {
24828    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
24829  }
24830
24831  return popperOffsets;
24832}
24833
24834/**
24835 * Mimics the `find` method of Array
24836 * @method
24837 * @memberof Popper.Utils
24838 * @argument {Array} arr
24839 * @argument prop
24840 * @argument value
24841 * @returns index or -1
24842 */
24843function find(arr, check) {
24844  // use native find if supported
24845  if (Array.prototype.find) {
24846    return arr.find(check);
24847  }
24848
24849  // use `filter` to obtain the same behavior of `find`
24850  return arr.filter(check)[0];
24851}
24852
24853/**
24854 * Return the index of the matching object
24855 * @method
24856 * @memberof Popper.Utils
24857 * @argument {Array} arr
24858 * @argument prop
24859 * @argument value
24860 * @returns index or -1
24861 */
24862function findIndex(arr, prop, value) {
24863  // use native findIndex if supported
24864  if (Array.prototype.findIndex) {
24865    return arr.findIndex(function (cur) {
24866      return cur[prop] === value;
24867    });
24868  }
24869
24870  // use `find` + `indexOf` if `findIndex` isn't supported
24871  var match = find(arr, function (obj) {
24872    return obj[prop] === value;
24873  });
24874  return arr.indexOf(match);
24875}
24876
24877/**
24878 * Loop trough the list of modifiers and run them in order,
24879 * each of them will then edit the data object.
24880 * @method
24881 * @memberof Popper.Utils
24882 * @param {dataObject} data
24883 * @param {Array} modifiers
24884 * @param {String} ends - Optional modifier name used as stopper
24885 * @returns {dataObject}
24886 */
24887function runModifiers(modifiers, data, ends) {
24888  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
24889
24890  modifiersToRun.forEach(function (modifier) {
24891    if (modifier['function']) {
24892      // eslint-disable-line dot-notation
24893      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
24894    }
24895    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation
24896    if (modifier.enabled && isFunction(fn)) {
24897      // Add properties to offsets to make them a complete clientRect object
24898      // we do this before each modifier to make sure the previous one doesn't
24899      // mess with these values
24900      data.offsets.popper = getClientRect(data.offsets.popper);
24901      data.offsets.reference = getClientRect(data.offsets.reference);
24902
24903      data = fn(data, modifier);
24904    }
24905  });
24906
24907  return data;
24908}
24909
24910/**
24911 * Updates the position of the popper, computing the new offsets and applying
24912 * the new style.<br />
24913 * Prefer `scheduleUpdate` over `update` because of performance reasons.
24914 * @method
24915 * @memberof Popper
24916 */
24917function update() {
24918  // if popper is destroyed, don't perform any further update
24919  if (this.state.isDestroyed) {
24920    return;
24921  }
24922
24923  var data = {
24924    instance: this,
24925    styles: {},
24926    arrowStyles: {},
24927    attributes: {},
24928    flipped: false,
24929    offsets: {}
24930  };
24931
24932  // compute reference element offsets
24933  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);
24934
24935  // compute auto placement, store placement inside the data object,
24936  // modifiers will be able to edit `placement` if needed
24937  // and refer to originalPlacement to know the original value
24938  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
24939
24940  // store the computed placement inside `originalPlacement`
24941  data.originalPlacement = data.placement;
24942
24943  data.positionFixed = this.options.positionFixed;
24944
24945  // compute the popper offsets
24946  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
24947
24948  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';
24949
24950  // run the modifiers
24951  data = runModifiers(this.modifiers, data);
24952
24953  // the first `update` will call `onCreate` callback
24954  // the other ones will call `onUpdate` callback
24955  if (!this.state.isCreated) {
24956    this.state.isCreated = true;
24957    this.options.onCreate(data);
24958  } else {
24959    this.options.onUpdate(data);
24960  }
24961}
24962
24963/**
24964 * Helper used to know if the given modifier is enabled.
24965 * @method
24966 * @memberof Popper.Utils
24967 * @returns {Boolean}
24968 */
24969function isModifierEnabled(modifiers, modifierName) {
24970  return modifiers.some(function (_ref) {
24971    var name = _ref.name,
24972        enabled = _ref.enabled;
24973    return enabled && name === modifierName;
24974  });
24975}
24976
24977/**
24978 * Get the prefixed supported property name
24979 * @method
24980 * @memberof Popper.Utils
24981 * @argument {String} property (camelCase)
24982 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
24983 */
24984function getSupportedPropertyName(property) {
24985  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
24986  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
24987
24988  for (var i = 0; i < prefixes.length; i++) {
24989    var prefix = prefixes[i];
24990    var toCheck = prefix ? '' + prefix + upperProp : property;
24991    if (typeof document.body.style[toCheck] !== 'undefined') {
24992      return toCheck;
24993    }
24994  }
24995  return null;
24996}
24997
24998/**
24999 * Destroys the popper.
25000 * @method
25001 * @memberof Popper
25002 */
25003function destroy() {
25004  this.state.isDestroyed = true;
25005
25006  // touch DOM only if `applyStyle` modifier is enabled
25007  if (isModifierEnabled(this.modifiers, 'applyStyle')) {
25008    this.popper.removeAttribute('x-placement');
25009    this.popper.style.position = '';
25010    this.popper.style.top = '';
25011    this.popper.style.left = '';
25012    this.popper.style.right = '';
25013    this.popper.style.bottom = '';
25014    this.popper.style.willChange = '';
25015    this.popper.style[getSupportedPropertyName('transform')] = '';
25016  }
25017
25018  this.disableEventListeners();
25019
25020  // remove the popper if user explicitly asked for the deletion on destroy
25021  // do not use `remove` because IE11 doesn't support it
25022  if (this.options.removeOnDestroy) {
25023    this.popper.parentNode.removeChild(this.popper);
25024  }
25025  return this;
25026}
25027
25028/**
25029 * Get the window associated with the element
25030 * @argument {Element} element
25031 * @returns {Window}
25032 */
25033function getWindow(element) {
25034  var ownerDocument = element.ownerDocument;
25035  return ownerDocument ? ownerDocument.defaultView : window;
25036}
25037
25038function attachToScrollParents(scrollParent, event, callback, scrollParents) {
25039  var isBody = scrollParent.nodeName === 'BODY';
25040  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
25041  target.addEventListener(event, callback, { passive: true });
25042
25043  if (!isBody) {
25044    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
25045  }
25046  scrollParents.push(target);
25047}
25048
25049/**
25050 * Setup needed event listeners used to update the popper position
25051 * @method
25052 * @memberof Popper.Utils
25053 * @private
25054 */
25055function setupEventListeners(reference, options, state, updateBound) {
25056  // Resize event listener on window
25057  state.updateBound = updateBound;
25058  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });
25059
25060  // Scroll event listener on scroll parents
25061  var scrollElement = getScrollParent(reference);
25062  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
25063  state.scrollElement = scrollElement;
25064  state.eventsEnabled = true;
25065
25066  return state;
25067}
25068
25069/**
25070 * It will add resize/scroll events and start recalculating
25071 * position of the popper element when they are triggered.
25072 * @method
25073 * @memberof Popper
25074 */
25075function enableEventListeners() {
25076  if (!this.state.eventsEnabled) {
25077    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
25078  }
25079}
25080
25081/**
25082 * Remove event listeners used to update the popper position
25083 * @method
25084 * @memberof Popper.Utils
25085 * @private
25086 */
25087function removeEventListeners(reference, state) {
25088  // Remove resize event listener on window
25089  getWindow(reference).removeEventListener('resize', state.updateBound);
25090
25091  // Remove scroll event listener on scroll parents
25092  state.scrollParents.forEach(function (target) {
25093    target.removeEventListener('scroll', state.updateBound);
25094  });
25095
25096  // Reset state
25097  state.updateBound = null;
25098  state.scrollParents = [];
25099  state.scrollElement = null;
25100  state.eventsEnabled = false;
25101  return state;
25102}
25103
25104/**
25105 * It will remove resize/scroll events and won't recalculate popper position
25106 * when they are triggered. It also won't trigger `onUpdate` callback anymore,
25107 * unless you call `update` method manually.
25108 * @method
25109 * @memberof Popper
25110 */
25111function disableEventListeners() {
25112  if (this.state.eventsEnabled) {
25113    cancelAnimationFrame(this.scheduleUpdate);
25114    this.state = removeEventListeners(this.reference, this.state);
25115  }
25116}
25117
25118/**
25119 * Tells if a given input is a number
25120 * @method
25121 * @memberof Popper.Utils
25122 * @param {*} input to check
25123 * @return {Boolean}
25124 */
25125function isNumeric(n) {
25126  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
25127}
25128
25129/**
25130 * Set the style to the given popper
25131 * @method
25132 * @memberof Popper.Utils
25133 * @argument {Element} element - Element to apply the style to
25134 * @argument {Object} styles
25135 * Object with a list of properties and values which will be applied to the element
25136 */
25137function setStyles(element, styles) {
25138  Object.keys(styles).forEach(function (prop) {
25139    var unit = '';
25140    // add unit if the value is numeric and is one of the following
25141    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
25142      unit = 'px';
25143    }
25144    element.style[prop] = styles[prop] + unit;
25145  });
25146}
25147
25148/**
25149 * Set the attributes to the given popper
25150 * @method
25151 * @memberof Popper.Utils
25152 * @argument {Element} element - Element to apply the attributes to
25153 * @argument {Object} styles
25154 * Object with a list of properties and values which will be applied to the element
25155 */
25156function setAttributes(element, attributes) {
25157  Object.keys(attributes).forEach(function (prop) {
25158    var value = attributes[prop];
25159    if (value !== false) {
25160      element.setAttribute(prop, attributes[prop]);
25161    } else {
25162      element.removeAttribute(prop);
25163    }
25164  });
25165}
25166
25167/**
25168 * @function
25169 * @memberof Modifiers
25170 * @argument {Object} data - The data object generated by `update` method
25171 * @argument {Object} data.styles - List of style properties - values to apply to popper element
25172 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
25173 * @argument {Object} options - Modifiers configuration and options
25174 * @returns {Object} The same data object
25175 */
25176function applyStyle(data) {
25177  // any property present in `data.styles` will be applied to the popper,
25178  // in this way we can make the 3rd party modifiers add custom styles to it
25179  // Be aware, modifiers could override the properties defined in the previous
25180  // lines of this modifier!
25181  setStyles(data.instance.popper, data.styles);
25182
25183  // any property present in `data.attributes` will be applied to the popper,
25184  // they will be set as HTML attributes of the element
25185  setAttributes(data.instance.popper, data.attributes);
25186
25187  // if arrowElement is defined and arrowStyles has some properties
25188  if (data.arrowElement && Object.keys(data.arrowStyles).length) {
25189    setStyles(data.arrowElement, data.arrowStyles);
25190  }
25191
25192  return data;
25193}
25194
25195/**
25196 * Set the x-placement attribute before everything else because it could be used
25197 * to add margins to the popper margins needs to be calculated to get the
25198 * correct popper offsets.
25199 * @method
25200 * @memberof Popper.modifiers
25201 * @param {HTMLElement} reference - The reference element used to position the popper
25202 * @param {HTMLElement} popper - The HTML element used as popper
25203 * @param {Object} options - Popper.js options
25204 */
25205function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
25206  // compute reference element offsets
25207  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);
25208
25209  // compute auto placement, store placement inside the data object,
25210  // modifiers will be able to edit `placement` if needed
25211  // and refer to originalPlacement to know the original value
25212  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
25213
25214  popper.setAttribute('x-placement', placement);
25215
25216  // Apply `position` to popper before anything else because
25217  // without the position applied we can't guarantee correct computations
25218  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });
25219
25220  return options;
25221}
25222
25223/**
25224 * @function
25225 * @memberof Popper.Utils
25226 * @argument {Object} data - The data object generated by `update` method
25227 * @argument {Boolean} shouldRound - If the offsets should be rounded at all
25228 * @returns {Object} The popper's position offsets rounded
25229 *
25230 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as
25231 * good as it can be within reason.
25232 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715
25233 *
25234 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari
25235 * as well on High DPI screens).
25236 *
25237 * Firefox prefers no rounding for positioning and does not have blurriness on
25238 * high DPI screens.
25239 *
25240 * Only horizontal placement and left/right values need to be considered.
25241 */
25242function getRoundedOffsets(data, shouldRound) {
25243  var _data$offsets = data.offsets,
25244      popper = _data$offsets.popper,
25245      reference = _data$offsets.reference;
25246  var round = Math.round,
25247      floor = Math.floor;
25248
25249  var noRound = function noRound(v) {
25250    return v;
25251  };
25252
25253  var referenceWidth = round(reference.width);
25254  var popperWidth = round(popper.width);
25255
25256  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
25257  var isVariation = data.placement.indexOf('-') !== -1;
25258  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
25259  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
25260
25261  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
25262  var verticalToInteger = !shouldRound ? noRound : round;
25263
25264  return {
25265    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
25266    top: verticalToInteger(popper.top),
25267    bottom: verticalToInteger(popper.bottom),
25268    right: horizontalToInteger(popper.right)
25269  };
25270}
25271
25272var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
25273
25274/**
25275 * @function
25276 * @memberof Modifiers
25277 * @argument {Object} data - The data object generated by `update` method
25278 * @argument {Object} options - Modifiers configuration and options
25279 * @returns {Object} The data object, properly modified
25280 */
25281function computeStyle(data, options) {
25282  var x = options.x,
25283      y = options.y;
25284  var popper = data.offsets.popper;
25285
25286  // Remove this legacy support in Popper.js v2
25287
25288  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
25289    return modifier.name === 'applyStyle';
25290  }).gpuAcceleration;
25291  if (legacyGpuAccelerationOption !== undefined) {
25292    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
25293  }
25294  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;
25295
25296  var offsetParent = getOffsetParent(data.instance.popper);
25297  var offsetParentRect = getBoundingClientRect(offsetParent);
25298
25299  // Styles
25300  var styles = {
25301    position: popper.position
25302  };
25303
25304  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);
25305
25306  var sideA = x === 'bottom' ? 'top' : 'bottom';
25307  var sideB = y === 'right' ? 'left' : 'right';
25308
25309  // if gpuAcceleration is set to `true` and transform is supported,
25310  //  we use `translate3d` to apply the position to the popper we
25311  // automatically use the supported prefixed version if needed
25312  var prefixedProperty = getSupportedPropertyName('transform');
25313
25314  // now, let's make a step back and look at this code closely (wtf?)
25315  // If the content of the popper grows once it's been positioned, it
25316  // may happen that the popper gets misplaced because of the new content
25317  // overflowing its reference element
25318  // To avoid this problem, we provide two options (x and y), which allow
25319  // the consumer to define the offset origin.
25320  // If we position a popper on top of a reference element, we can set
25321  // `x` to `top` to make the popper grow towards its top instead of
25322  // its bottom.
25323  var left = void 0,
25324      top = void 0;
25325  if (sideA === 'bottom') {
25326    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)
25327    // and not the bottom of the html element
25328    if (offsetParent.nodeName === 'HTML') {
25329      top = -offsetParent.clientHeight + offsets.bottom;
25330    } else {
25331      top = -offsetParentRect.height + offsets.bottom;
25332    }
25333  } else {
25334    top = offsets.top;
25335  }
25336  if (sideB === 'right') {
25337    if (offsetParent.nodeName === 'HTML') {
25338      left = -offsetParent.clientWidth + offsets.right;
25339    } else {
25340      left = -offsetParentRect.width + offsets.right;
25341    }
25342  } else {
25343    left = offsets.left;
25344  }
25345  if (gpuAcceleration && prefixedProperty) {
25346    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
25347    styles[sideA] = 0;
25348    styles[sideB] = 0;
25349    styles.willChange = 'transform';
25350  } else {
25351    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
25352    var invertTop = sideA === 'bottom' ? -1 : 1;
25353    var invertLeft = sideB === 'right' ? -1 : 1;
25354    styles[sideA] = top * invertTop;
25355    styles[sideB] = left * invertLeft;
25356    styles.willChange = sideA + ', ' + sideB;
25357  }
25358
25359  // Attributes
25360  var attributes = {
25361    'x-placement': data.placement
25362  };
25363
25364  // Update `data` attributes, styles and arrowStyles
25365  data.attributes = _extends({}, attributes, data.attributes);
25366  data.styles = _extends({}, styles, data.styles);
25367  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
25368
25369  return data;
25370}
25371
25372/**
25373 * Helper used to know if the given modifier depends from another one.<br />
25374 * It checks if the needed modifier is listed and enabled.
25375 * @method
25376 * @memberof Popper.Utils
25377 * @param {Array} modifiers - list of modifiers
25378 * @param {String} requestingName - name of requesting modifier
25379 * @param {String} requestedName - name of requested modifier
25380 * @returns {Boolean}
25381 */
25382function isModifierRequired(modifiers, requestingName, requestedName) {
25383  var requesting = find(modifiers, function (_ref) {
25384    var name = _ref.name;
25385    return name === requestingName;
25386  });
25387
25388  var isRequired = !!requesting && modifiers.some(function (modifier) {
25389    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
25390  });
25391
25392  if (!isRequired) {
25393    var _requesting = '`' + requestingName + '`';
25394    var requested = '`' + requestedName + '`';
25395    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
25396  }
25397  return isRequired;
25398}
25399
25400/**
25401 * @function
25402 * @memberof Modifiers
25403 * @argument {Object} data - The data object generated by update method
25404 * @argument {Object} options - Modifiers configuration and options
25405 * @returns {Object} The data object, properly modified
25406 */
25407function arrow(data, options) {
25408  var _data$offsets$arrow;
25409
25410  // arrow depends on keepTogether in order to work
25411  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
25412    return data;
25413  }
25414
25415  var arrowElement = options.element;
25416
25417  // if arrowElement is a string, suppose it's a CSS selector
25418  if (typeof arrowElement === 'string') {
25419    arrowElement = data.instance.popper.querySelector(arrowElement);
25420
25421    // if arrowElement is not found, don't run the modifier
25422    if (!arrowElement) {
25423      return data;
25424    }
25425  } else {
25426    // if the arrowElement isn't a query selector we must check that the
25427    // provided DOM node is child of its popper node
25428    if (!data.instance.popper.contains(arrowElement)) {
25429      console.warn('WARNING: `arrow.element` must be child of its popper element!');
25430      return data;
25431    }
25432  }
25433
25434  var placement = data.placement.split('-')[0];
25435  var _data$offsets = data.offsets,
25436      popper = _data$offsets.popper,
25437      reference = _data$offsets.reference;
25438
25439  var isVertical = ['left', 'right'].indexOf(placement) !== -1;
25440
25441  var len = isVertical ? 'height' : 'width';
25442  var sideCapitalized = isVertical ? 'Top' : 'Left';
25443  var side = sideCapitalized.toLowerCase();
25444  var altSide = isVertical ? 'left' : 'top';
25445  var opSide = isVertical ? 'bottom' : 'right';
25446  var arrowElementSize = getOuterSizes(arrowElement)[len];
25447
25448  //
25449  // extends keepTogether behavior making sure the popper and its
25450  // reference have enough pixels in conjunction
25451  //
25452
25453  // top/left side
25454  if (reference[opSide] - arrowElementSize < popper[side]) {
25455    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
25456  }
25457  // bottom/right side
25458  if (reference[side] + arrowElementSize > popper[opSide]) {
25459    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
25460  }
25461  data.offsets.popper = getClientRect(data.offsets.popper);
25462
25463  // compute center of the popper
25464  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
25465
25466  // Compute the sideValue using the updated popper offsets
25467  // take popper margin in account because we don't have this info available
25468  var css = getStyleComputedProperty(data.instance.popper);
25469  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);
25470  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);
25471  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
25472
25473  // prevent arrowElement from being placed not contiguously to its popper
25474  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
25475
25476  data.arrowElement = arrowElement;
25477  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);
25478
25479  return data;
25480}
25481
25482/**
25483 * Get the opposite placement variation of the given one
25484 * @method
25485 * @memberof Popper.Utils
25486 * @argument {String} placement variation
25487 * @returns {String} flipped placement variation
25488 */
25489function getOppositeVariation(variation) {
25490  if (variation === 'end') {
25491    return 'start';
25492  } else if (variation === 'start') {
25493    return 'end';
25494  }
25495  return variation;
25496}
25497
25498/**
25499 * List of accepted placements to use as values of the `placement` option.<br />
25500 * Valid placements are:
25501 * - `auto`
25502 * - `top`
25503 * - `right`
25504 * - `bottom`
25505 * - `left`
25506 *
25507 * Each placement can have a variation from this list:
25508 * - `-start`
25509 * - `-end`
25510 *
25511 * Variations are interpreted easily if you think of them as the left to right
25512 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
25513 * is right.<br />
25514 * Vertically (`left` and `right`), `start` is top and `end` is bottom.
25515 *
25516 * Some valid examples are:
25517 * - `top-end` (on top of reference, right aligned)
25518 * - `right-start` (on right of reference, top aligned)
25519 * - `bottom` (on bottom, centered)
25520 * - `auto-end` (on the side with more space available, alignment depends by placement)
25521 *
25522 * @static
25523 * @type {Array}
25524 * @enum {String}
25525 * @readonly
25526 * @method placements
25527 * @memberof Popper
25528 */
25529var 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'];
25530
25531// Get rid of `auto` `auto-start` and `auto-end`
25532var validPlacements = placements.slice(3);
25533
25534/**
25535 * Given an initial placement, returns all the subsequent placements
25536 * clockwise (or counter-clockwise).
25537 *
25538 * @method
25539 * @memberof Popper.Utils
25540 * @argument {String} placement - A valid placement (it accepts variations)
25541 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
25542 * @returns {Array} placements including their variations
25543 */
25544function clockwise(placement) {
25545  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
25546
25547  var index = validPlacements.indexOf(placement);
25548  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
25549  return counter ? arr.reverse() : arr;
25550}
25551
25552var BEHAVIORS = {
25553  FLIP: 'flip',
25554  CLOCKWISE: 'clockwise',
25555  COUNTERCLOCKWISE: 'counterclockwise'
25556};
25557
25558/**
25559 * @function
25560 * @memberof Modifiers
25561 * @argument {Object} data - The data object generated by update method
25562 * @argument {Object} options - Modifiers configuration and options
25563 * @returns {Object} The data object, properly modified
25564 */
25565function flip(data, options) {
25566  // if `inner` modifier is enabled, we can't use the `flip` modifier
25567  if (isModifierEnabled(data.instance.modifiers, 'inner')) {
25568    return data;
25569  }
25570
25571  if (data.flipped && data.placement === data.originalPlacement) {
25572    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
25573    return data;
25574  }
25575
25576  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);
25577
25578  var placement = data.placement.split('-')[0];
25579  var placementOpposite = getOppositePlacement(placement);
25580  var variation = data.placement.split('-')[1] || '';
25581
25582  var flipOrder = [];
25583
25584  switch (options.behavior) {
25585    case BEHAVIORS.FLIP:
25586      flipOrder = [placement, placementOpposite];
25587      break;
25588    case BEHAVIORS.CLOCKWISE:
25589      flipOrder = clockwise(placement);
25590      break;
25591    case BEHAVIORS.COUNTERCLOCKWISE:
25592      flipOrder = clockwise(placement, true);
25593      break;
25594    default:
25595      flipOrder = options.behavior;
25596  }
25597
25598  flipOrder.forEach(function (step, index) {
25599    if (placement !== step || flipOrder.length === index + 1) {
25600      return data;
25601    }
25602
25603    placement = data.placement.split('-')[0];
25604    placementOpposite = getOppositePlacement(placement);
25605
25606    var popperOffsets = data.offsets.popper;
25607    var refOffsets = data.offsets.reference;
25608
25609    // using floor because the reference offsets may contain decimals we are not going to consider here
25610    var floor = Math.floor;
25611    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);
25612
25613    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
25614    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
25615    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
25616    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
25617
25618    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;
25619
25620    // flip the variation if required
25621    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
25622
25623    // flips variation if reference element overflows boundaries
25624    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);
25625
25626    // flips variation if popper content overflows boundaries
25627    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);
25628
25629    var flippedVariation = flippedVariationByRef || flippedVariationByContent;
25630
25631    if (overlapsRef || overflowsBoundaries || flippedVariation) {
25632      // this boolean to detect any flip loop
25633      data.flipped = true;
25634
25635      if (overlapsRef || overflowsBoundaries) {
25636        placement = flipOrder[index + 1];
25637      }
25638
25639      if (flippedVariation) {
25640        variation = getOppositeVariation(variation);
25641      }
25642
25643      data.placement = placement + (variation ? '-' + variation : '');
25644
25645      // this object contains `position`, we want to preserve it along with
25646      // any additional property we may add in the future
25647      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
25648
25649      data = runModifiers(data.instance.modifiers, data, 'flip');
25650    }
25651  });
25652  return data;
25653}
25654
25655/**
25656 * @function
25657 * @memberof Modifiers
25658 * @argument {Object} data - The data object generated by update method
25659 * @argument {Object} options - Modifiers configuration and options
25660 * @returns {Object} The data object, properly modified
25661 */
25662function keepTogether(data) {
25663  var _data$offsets = data.offsets,
25664      popper = _data$offsets.popper,
25665      reference = _data$offsets.reference;
25666
25667  var placement = data.placement.split('-')[0];
25668  var floor = Math.floor;
25669  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
25670  var side = isVertical ? 'right' : 'bottom';
25671  var opSide = isVertical ? 'left' : 'top';
25672  var measurement = isVertical ? 'width' : 'height';
25673
25674  if (popper[side] < floor(reference[opSide])) {
25675    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
25676  }
25677  if (popper[opSide] > floor(reference[side])) {
25678    data.offsets.popper[opSide] = floor(reference[side]);
25679  }
25680
25681  return data;
25682}
25683
25684/**
25685 * Converts a string containing value + unit into a px value number
25686 * @function
25687 * @memberof {modifiers~offset}
25688 * @private
25689 * @argument {String} str - Value + unit string
25690 * @argument {String} measurement - `height` or `width`
25691 * @argument {Object} popperOffsets
25692 * @argument {Object} referenceOffsets
25693 * @returns {Number|String}
25694 * Value in pixels, or original string if no values were extracted
25695 */
25696function toValue(str, measurement, popperOffsets, referenceOffsets) {
25697  // separate value from unit
25698  var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
25699  var value = +split[1];
25700  var unit = split[2];
25701
25702  // If it's not a number it's an operator, I guess
25703  if (!value) {
25704    return str;
25705  }
25706
25707  if (unit.indexOf('%') === 0) {
25708    var element = void 0;
25709    switch (unit) {
25710      case '%p':
25711        element = popperOffsets;
25712        break;
25713      case '%':
25714      case '%r':
25715      default:
25716        element = referenceOffsets;
25717    }
25718
25719    var rect = getClientRect(element);
25720    return rect[measurement] / 100 * value;
25721  } else if (unit === 'vh' || unit === 'vw') {
25722    // if is a vh or vw, we calculate the size based on the viewport
25723    var size = void 0;
25724    if (unit === 'vh') {
25725      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
25726    } else {
25727      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
25728    }
25729    return size / 100 * value;
25730  } else {
25731    // if is an explicit pixel unit, we get rid of the unit and keep the value
25732    // if is an implicit unit, it's px, and we return just the value
25733    return value;
25734  }
25735}
25736
25737/**
25738 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
25739 * @function
25740 * @memberof {modifiers~offset}
25741 * @private
25742 * @argument {String} offset
25743 * @argument {Object} popperOffsets
25744 * @argument {Object} referenceOffsets
25745 * @argument {String} basePlacement
25746 * @returns {Array} a two cells array with x and y offsets in numbers
25747 */
25748function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
25749  var offsets = [0, 0];
25750
25751  // Use height if placement is left or right and index is 0 otherwise use width
25752  // in this way the first offset will use an axis and the second one
25753  // will use the other one
25754  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;
25755
25756  // Split the offset string to obtain a list of values and operands
25757  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
25758  var fragments = offset.split(/(\+|\-)/).map(function (frag) {
25759    return frag.trim();
25760  });
25761
25762  // Detect if the offset string contains a pair of values or a single one
25763  // they could be separated by comma or space
25764  var divider = fragments.indexOf(find(fragments, function (frag) {
25765    return frag.search(/,|\s/) !== -1;
25766  }));
25767
25768  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
25769    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
25770  }
25771
25772  // If divider is found, we divide the list of values and operands to divide
25773  // them by ofset X and Y.
25774  var splitRegex = /\s*,\s*|\s+/;
25775  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];
25776
25777  // Convert the values with units to absolute pixels to allow our computations
25778  ops = ops.map(function (op, index) {
25779    // Most of the units rely on the orientation of the popper
25780    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
25781    var mergeWithPrevious = false;
25782    return op
25783    // This aggregates any `+` or `-` sign that aren't considered operators
25784    // e.g.: 10 + +5 => [10, +, +5]
25785    .reduce(function (a, b) {
25786      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
25787        a[a.length - 1] = b;
25788        mergeWithPrevious = true;
25789        return a;
25790      } else if (mergeWithPrevious) {
25791        a[a.length - 1] += b;
25792        mergeWithPrevious = false;
25793        return a;
25794      } else {
25795        return a.concat(b);
25796      }
25797    }, [])
25798    // Here we convert the string values into number values (in px)
25799    .map(function (str) {
25800      return toValue(str, measurement, popperOffsets, referenceOffsets);
25801    });
25802  });
25803
25804  // Loop trough the offsets arrays and execute the operations
25805  ops.forEach(function (op, index) {
25806    op.forEach(function (frag, index2) {
25807      if (isNumeric(frag)) {
25808        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
25809      }
25810    });
25811  });
25812  return offsets;
25813}
25814
25815/**
25816 * @function
25817 * @memberof Modifiers
25818 * @argument {Object} data - The data object generated by update method
25819 * @argument {Object} options - Modifiers configuration and options
25820 * @argument {Number|String} options.offset=0
25821 * The offset value as described in the modifier description
25822 * @returns {Object} The data object, properly modified
25823 */
25824function offset(data, _ref) {
25825  var offset = _ref.offset;
25826  var placement = data.placement,
25827      _data$offsets = data.offsets,
25828      popper = _data$offsets.popper,
25829      reference = _data$offsets.reference;
25830
25831  var basePlacement = placement.split('-')[0];
25832
25833  var offsets = void 0;
25834  if (isNumeric(+offset)) {
25835    offsets = [+offset, 0];
25836  } else {
25837    offsets = parseOffset(offset, popper, reference, basePlacement);
25838  }
25839
25840  if (basePlacement === 'left') {
25841    popper.top += offsets[0];
25842    popper.left -= offsets[1];
25843  } else if (basePlacement === 'right') {
25844    popper.top += offsets[0];
25845    popper.left += offsets[1];
25846  } else if (basePlacement === 'top') {
25847    popper.left += offsets[0];
25848    popper.top -= offsets[1];
25849  } else if (basePlacement === 'bottom') {
25850    popper.left += offsets[0];
25851    popper.top += offsets[1];
25852  }
25853
25854  data.popper = popper;
25855  return data;
25856}
25857
25858/**
25859 * @function
25860 * @memberof Modifiers
25861 * @argument {Object} data - The data object generated by `update` method
25862 * @argument {Object} options - Modifiers configuration and options
25863 * @returns {Object} The data object, properly modified
25864 */
25865function preventOverflow(data, options) {
25866  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
25867
25868  // If offsetParent is the reference element, we really want to
25869  // go one step up and use the next offsetParent as reference to
25870  // avoid to make this modifier completely useless and look like broken
25871  if (data.instance.reference === boundariesElement) {
25872    boundariesElement = getOffsetParent(boundariesElement);
25873  }
25874
25875  // NOTE: DOM access here
25876  // resets the popper's position so that the document size can be calculated excluding
25877  // the size of the popper element itself
25878  var transformProp = getSupportedPropertyName('transform');
25879  var popperStyles = data.instance.popper.style; // assignment to help minification
25880  var top = popperStyles.top,
25881      left = popperStyles.left,
25882      transform = popperStyles[transformProp];
25883
25884  popperStyles.top = '';
25885  popperStyles.left = '';
25886  popperStyles[transformProp] = '';
25887
25888  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);
25889
25890  // NOTE: DOM access here
25891  // restores the original style properties after the offsets have been computed
25892  popperStyles.top = top;
25893  popperStyles.left = left;
25894  popperStyles[transformProp] = transform;
25895
25896  options.boundaries = boundaries;
25897
25898  var order = options.priority;
25899  var popper = data.offsets.popper;
25900
25901  var check = {
25902    primary: function primary(placement) {
25903      var value = popper[placement];
25904      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
25905        value = Math.max(popper[placement], boundaries[placement]);
25906      }
25907      return defineProperty({}, placement, value);
25908    },
25909    secondary: function secondary(placement) {
25910      var mainSide = placement === 'right' ? 'left' : 'top';
25911      var value = popper[mainSide];
25912      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
25913        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
25914      }
25915      return defineProperty({}, mainSide, value);
25916    }
25917  };
25918
25919  order.forEach(function (placement) {
25920    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
25921    popper = _extends({}, popper, check[side](placement));
25922  });
25923
25924  data.offsets.popper = popper;
25925
25926  return data;
25927}
25928
25929/**
25930 * @function
25931 * @memberof Modifiers
25932 * @argument {Object} data - The data object generated by `update` method
25933 * @argument {Object} options - Modifiers configuration and options
25934 * @returns {Object} The data object, properly modified
25935 */
25936function shift(data) {
25937  var placement = data.placement;
25938  var basePlacement = placement.split('-')[0];
25939  var shiftvariation = placement.split('-')[1];
25940
25941  // if shift shiftvariation is specified, run the modifier
25942  if (shiftvariation) {
25943    var _data$offsets = data.offsets,
25944        reference = _data$offsets.reference,
25945        popper = _data$offsets.popper;
25946
25947    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
25948    var side = isVertical ? 'left' : 'top';
25949    var measurement = isVertical ? 'width' : 'height';
25950
25951    var shiftOffsets = {
25952      start: defineProperty({}, side, reference[side]),
25953      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
25954    };
25955
25956    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
25957  }
25958
25959  return data;
25960}
25961
25962/**
25963 * @function
25964 * @memberof Modifiers
25965 * @argument {Object} data - The data object generated by update method
25966 * @argument {Object} options - Modifiers configuration and options
25967 * @returns {Object} The data object, properly modified
25968 */
25969function hide(data) {
25970  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
25971    return data;
25972  }
25973
25974  var refRect = data.offsets.reference;
25975  var bound = find(data.instance.modifiers, function (modifier) {
25976    return modifier.name === 'preventOverflow';
25977  }).boundaries;
25978
25979  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
25980    // Avoid unnecessary DOM access if visibility hasn't changed
25981    if (data.hide === true) {
25982      return data;
25983    }
25984
25985    data.hide = true;
25986    data.attributes['x-out-of-boundaries'] = '';
25987  } else {
25988    // Avoid unnecessary DOM access if visibility hasn't changed
25989    if (data.hide === false) {
25990      return data;
25991    }
25992
25993    data.hide = false;
25994    data.attributes['x-out-of-boundaries'] = false;
25995  }
25996
25997  return data;
25998}
25999
26000/**
26001 * @function
26002 * @memberof Modifiers
26003 * @argument {Object} data - The data object generated by `update` method
26004 * @argument {Object} options - Modifiers configuration and options
26005 * @returns {Object} The data object, properly modified
26006 */
26007function inner(data) {
26008  var placement = data.placement;
26009  var basePlacement = placement.split('-')[0];
26010  var _data$offsets = data.offsets,
26011      popper = _data$offsets.popper,
26012      reference = _data$offsets.reference;
26013
26014  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
26015
26016  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
26017
26018  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
26019
26020  data.placement = getOppositePlacement(placement);
26021  data.offsets.popper = getClientRect(popper);
26022
26023  return data;
26024}
26025
26026/**
26027 * Modifier function, each modifier can have a function of this type assigned
26028 * to its `fn` property.<br />
26029 * These functions will be called on each update, this means that you must
26030 * make sure they are performant enough to avoid performance bottlenecks.
26031 *
26032 * @function ModifierFn
26033 * @argument {dataObject} data - The data object generated by `update` method
26034 * @argument {Object} options - Modifiers configuration and options
26035 * @returns {dataObject} The data object, properly modified
26036 */
26037
26038/**
26039 * Modifiers are plugins used to alter the behavior of your poppers.<br />
26040 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
26041 * needed by the library.
26042 *
26043 * Usually you don't want to override the `order`, `fn` and `onLoad` props.
26044 * All the other properties are configurations that could be tweaked.
26045 * @namespace modifiers
26046 */
26047var modifiers = {
26048  /**
26049   * Modifier used to shift the popper on the start or end of its reference
26050   * element.<br />
26051   * It will read the variation of the `placement` property.<br />
26052   * It can be one either `-end` or `-start`.
26053   * @memberof modifiers
26054   * @inner
26055   */
26056  shift: {
26057    /** @prop {number} order=100 - Index used to define the order of execution */
26058    order: 100,
26059    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26060    enabled: true,
26061    /** @prop {ModifierFn} */
26062    fn: shift
26063  },
26064
26065  /**
26066   * The `offset` modifier can shift your popper on both its axis.
26067   *
26068   * It accepts the following units:
26069   * - `px` or unit-less, interpreted as pixels
26070   * - `%` or `%r`, percentage relative to the length of the reference element
26071   * - `%p`, percentage relative to the length of the popper element
26072   * - `vw`, CSS viewport width unit
26073   * - `vh`, CSS viewport height unit
26074   *
26075   * For length is intended the main axis relative to the placement of the popper.<br />
26076   * This means that if the placement is `top` or `bottom`, the length will be the
26077   * `width`. In case of `left` or `right`, it will be the `height`.
26078   *
26079   * You can provide a single value (as `Number` or `String`), or a pair of values
26080   * as `String` divided by a comma or one (or more) white spaces.<br />
26081   * The latter is a deprecated method because it leads to confusion and will be
26082   * removed in v2.<br />
26083   * Additionally, it accepts additions and subtractions between different units.
26084   * Note that multiplications and divisions aren't supported.
26085   *
26086   * Valid examples are:
26087   * ```
26088   * 10
26089   * '10%'
26090   * '10, 10'
26091   * '10%, 10'
26092   * '10 + 10%'
26093   * '10 - 5vh + 3%'
26094   * '-10px + 5vh, 5px - 6%'
26095   * ```
26096   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
26097   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
26098   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).
26099   *
26100   * @memberof modifiers
26101   * @inner
26102   */
26103  offset: {
26104    /** @prop {number} order=200 - Index used to define the order of execution */
26105    order: 200,
26106    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26107    enabled: true,
26108    /** @prop {ModifierFn} */
26109    fn: offset,
26110    /** @prop {Number|String} offset=0
26111     * The offset value as described in the modifier description
26112     */
26113    offset: 0
26114  },
26115
26116  /**
26117   * Modifier used to prevent the popper from being positioned outside the boundary.
26118   *
26119   * A scenario exists where the reference itself is not within the boundaries.<br />
26120   * We can say it has "escaped the boundaries" — or just "escaped".<br />
26121   * In this case we need to decide whether the popper should either:
26122   *
26123   * - detach from the reference and remain "trapped" in the boundaries, or
26124   * - if it should ignore the boundary and "escape with its reference"
26125   *
26126   * When `escapeWithReference` is set to`true` and reference is completely
26127   * outside its boundaries, the popper will overflow (or completely leave)
26128   * the boundaries in order to remain attached to the edge of the reference.
26129   *
26130   * @memberof modifiers
26131   * @inner
26132   */
26133  preventOverflow: {
26134    /** @prop {number} order=300 - Index used to define the order of execution */
26135    order: 300,
26136    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26137    enabled: true,
26138    /** @prop {ModifierFn} */
26139    fn: preventOverflow,
26140    /**
26141     * @prop {Array} [priority=['left','right','top','bottom']]
26142     * Popper will try to prevent overflow following these priorities by default,
26143     * then, it could overflow on the left and on top of the `boundariesElement`
26144     */
26145    priority: ['left', 'right', 'top', 'bottom'],
26146    /**
26147     * @prop {number} padding=5
26148     * Amount of pixel used to define a minimum distance between the boundaries
26149     * and the popper. This makes sure the popper always has a little padding
26150     * between the edges of its container
26151     */
26152    padding: 5,
26153    /**
26154     * @prop {String|HTMLElement} boundariesElement='scrollParent'
26155     * Boundaries used by the modifier. Can be `scrollParent`, `window`,
26156     * `viewport` or any DOM element.
26157     */
26158    boundariesElement: 'scrollParent'
26159  },
26160
26161  /**
26162   * Modifier used to make sure the reference and its popper stay near each other
26163   * without leaving any gap between the two. Especially useful when the arrow is
26164   * enabled and you want to ensure that it points to its reference element.
26165   * It cares only about the first axis. You can still have poppers with margin
26166   * between the popper and its reference element.
26167   * @memberof modifiers
26168   * @inner
26169   */
26170  keepTogether: {
26171    /** @prop {number} order=400 - Index used to define the order of execution */
26172    order: 400,
26173    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26174    enabled: true,
26175    /** @prop {ModifierFn} */
26176    fn: keepTogether
26177  },
26178
26179  /**
26180   * This modifier is used to move the `arrowElement` of the popper to make
26181   * sure it is positioned between the reference element and its popper element.
26182   * It will read the outer size of the `arrowElement` node to detect how many
26183   * pixels of conjunction are needed.
26184   *
26185   * It has no effect if no `arrowElement` is provided.
26186   * @memberof modifiers
26187   * @inner
26188   */
26189  arrow: {
26190    /** @prop {number} order=500 - Index used to define the order of execution */
26191    order: 500,
26192    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26193    enabled: true,
26194    /** @prop {ModifierFn} */
26195    fn: arrow,
26196    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
26197    element: '[x-arrow]'
26198  },
26199
26200  /**
26201   * Modifier used to flip the popper's placement when it starts to overlap its
26202   * reference element.
26203   *
26204   * Requires the `preventOverflow` modifier before it in order to work.
26205   *
26206   * **NOTE:** this modifier will interrupt the current update cycle and will
26207   * restart it if it detects the need to flip the placement.
26208   * @memberof modifiers
26209   * @inner
26210   */
26211  flip: {
26212    /** @prop {number} order=600 - Index used to define the order of execution */
26213    order: 600,
26214    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26215    enabled: true,
26216    /** @prop {ModifierFn} */
26217    fn: flip,
26218    /**
26219     * @prop {String|Array} behavior='flip'
26220     * The behavior used to change the popper's placement. It can be one of
26221     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
26222     * placements (with optional variations)
26223     */
26224    behavior: 'flip',
26225    /**
26226     * @prop {number} padding=5
26227     * The popper will flip if it hits the edges of the `boundariesElement`
26228     */
26229    padding: 5,
26230    /**
26231     * @prop {String|HTMLElement} boundariesElement='viewport'
26232     * The element which will define the boundaries of the popper position.
26233     * The popper will never be placed outside of the defined boundaries
26234     * (except if `keepTogether` is enabled)
26235     */
26236    boundariesElement: 'viewport',
26237    /**
26238     * @prop {Boolean} flipVariations=false
26239     * The popper will switch placement variation between `-start` and `-end` when
26240     * the reference element overlaps its boundaries.
26241     *
26242     * The original placement should have a set variation.
26243     */
26244    flipVariations: false,
26245    /**
26246     * @prop {Boolean} flipVariationsByContent=false
26247     * The popper will switch placement variation between `-start` and `-end` when
26248     * the popper element overlaps its reference boundaries.
26249     *
26250     * The original placement should have a set variation.
26251     */
26252    flipVariationsByContent: false
26253  },
26254
26255  /**
26256   * Modifier used to make the popper flow toward the inner of the reference element.
26257   * By default, when this modifier is disabled, the popper will be placed outside
26258   * the reference element.
26259   * @memberof modifiers
26260   * @inner
26261   */
26262  inner: {
26263    /** @prop {number} order=700 - Index used to define the order of execution */
26264    order: 700,
26265    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
26266    enabled: false,
26267    /** @prop {ModifierFn} */
26268    fn: inner
26269  },
26270
26271  /**
26272   * Modifier used to hide the popper when its reference element is outside of the
26273   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
26274   * be used to hide with a CSS selector the popper when its reference is
26275   * out of boundaries.
26276   *
26277   * Requires the `preventOverflow` modifier before it in order to work.
26278   * @memberof modifiers
26279   * @inner
26280   */
26281  hide: {
26282    /** @prop {number} order=800 - Index used to define the order of execution */
26283    order: 800,
26284    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26285    enabled: true,
26286    /** @prop {ModifierFn} */
26287    fn: hide
26288  },
26289
26290  /**
26291   * Computes the style that will be applied to the popper element to gets
26292   * properly positioned.
26293   *
26294   * Note that this modifier will not touch the DOM, it just prepares the styles
26295   * so that `applyStyle` modifier can apply it. This separation is useful
26296   * in case you need to replace `applyStyle` with a custom implementation.
26297   *
26298   * This modifier has `850` as `order` value to maintain backward compatibility
26299   * with previous versions of Popper.js. Expect the modifiers ordering method
26300   * to change in future major versions of the library.
26301   *
26302   * @memberof modifiers
26303   * @inner
26304   */
26305  computeStyle: {
26306    /** @prop {number} order=850 - Index used to define the order of execution */
26307    order: 850,
26308    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26309    enabled: true,
26310    /** @prop {ModifierFn} */
26311    fn: computeStyle,
26312    /**
26313     * @prop {Boolean} gpuAcceleration=true
26314     * If true, it uses the CSS 3D transformation to position the popper.
26315     * Otherwise, it will use the `top` and `left` properties
26316     */
26317    gpuAcceleration: true,
26318    /**
26319     * @prop {string} [x='bottom']
26320     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
26321     * Change this if your popper should grow in a direction different from `bottom`
26322     */
26323    x: 'bottom',
26324    /**
26325     * @prop {string} [x='left']
26326     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
26327     * Change this if your popper should grow in a direction different from `right`
26328     */
26329    y: 'right'
26330  },
26331
26332  /**
26333   * Applies the computed styles to the popper element.
26334   *
26335   * All the DOM manipulations are limited to this modifier. This is useful in case
26336   * you want to integrate Popper.js inside a framework or view library and you
26337   * want to delegate all the DOM manipulations to it.
26338   *
26339   * Note that if you disable this modifier, you must make sure the popper element
26340   * has its position set to `absolute` before Popper.js can do its work!
26341   *
26342   * Just disable this modifier and define your own to achieve the desired effect.
26343   *
26344   * @memberof modifiers
26345   * @inner
26346   */
26347  applyStyle: {
26348    /** @prop {number} order=900 - Index used to define the order of execution */
26349    order: 900,
26350    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
26351    enabled: true,
26352    /** @prop {ModifierFn} */
26353    fn: applyStyle,
26354    /** @prop {Function} */
26355    onLoad: applyStyleOnLoad,
26356    /**
26357     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
26358     * @prop {Boolean} gpuAcceleration=true
26359     * If true, it uses the CSS 3D transformation to position the popper.
26360     * Otherwise, it will use the `top` and `left` properties
26361     */
26362    gpuAcceleration: undefined
26363  }
26364};
26365
26366/**
26367 * The `dataObject` is an object containing all the information used by Popper.js.
26368 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
26369 * @name dataObject
26370 * @property {Object} data.instance The Popper.js instance
26371 * @property {String} data.placement Placement applied to popper
26372 * @property {String} data.originalPlacement Placement originally defined on init
26373 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
26374 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper
26375 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
26376 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)
26377 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)
26378 * @property {Object} data.boundaries Offsets of the popper boundaries
26379 * @property {Object} data.offsets The measurements of popper, reference and arrow elements
26380 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
26381 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
26382 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
26383 */
26384
26385/**
26386 * Default options provided to Popper.js constructor.<br />
26387 * These can be overridden using the `options` argument of Popper.js.<br />
26388 * To override an option, simply pass an object with the same
26389 * structure of the `options` object, as the 3rd argument. For example:
26390 * ```
26391 * new Popper(ref, pop, {
26392 *   modifiers: {
26393 *     preventOverflow: { enabled: false }
26394 *   }
26395 * })
26396 * ```
26397 * @type {Object}
26398 * @static
26399 * @memberof Popper
26400 */
26401var Defaults = {
26402  /**
26403   * Popper's placement.
26404   * @prop {Popper.placements} placement='bottom'
26405   */
26406  placement: 'bottom',
26407
26408  /**
26409   * Set this to true if you want popper to position it self in 'fixed' mode
26410   * @prop {Boolean} positionFixed=false
26411   */
26412  positionFixed: false,
26413
26414  /**
26415   * Whether events (resize, scroll) are initially enabled.
26416   * @prop {Boolean} eventsEnabled=true
26417   */
26418  eventsEnabled: true,
26419
26420  /**
26421   * Set to true if you want to automatically remove the popper when
26422   * you call the `destroy` method.
26423   * @prop {Boolean} removeOnDestroy=false
26424   */
26425  removeOnDestroy: false,
26426
26427  /**
26428   * Callback called when the popper is created.<br />
26429   * By default, it is set to no-op.<br />
26430   * Access Popper.js instance with `data.instance`.
26431   * @prop {onCreate}
26432   */
26433  onCreate: function onCreate() {},
26434
26435  /**
26436   * Callback called when the popper is updated. This callback is not called
26437   * on the initialization/creation of the popper, but only on subsequent
26438   * updates.<br />
26439   * By default, it is set to no-op.<br />
26440   * Access Popper.js instance with `data.instance`.
26441   * @prop {onUpdate}
26442   */
26443  onUpdate: function onUpdate() {},
26444
26445  /**
26446   * List of modifiers used to modify the offsets before they are applied to the popper.
26447   * They provide most of the functionalities of Popper.js.
26448   * @prop {modifiers}
26449   */
26450  modifiers: modifiers
26451};
26452
26453/**
26454 * @callback onCreate
26455 * @param {dataObject} data
26456 */
26457
26458/**
26459 * @callback onUpdate
26460 * @param {dataObject} data
26461 */
26462
26463// Utils
26464// Methods
26465var Popper = function () {
26466  /**
26467   * Creates a new Popper.js instance.
26468   * @class Popper
26469   * @param {Element|referenceObject} reference - The reference element used to position the popper
26470   * @param {Element} popper - The HTML / XML element used as the popper
26471   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
26472   * @return {Object} instance - The generated Popper.js instance
26473   */
26474  function Popper(reference, popper) {
26475    var _this = this;
26476
26477    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
26478    classCallCheck(this, Popper);
26479
26480    this.scheduleUpdate = function () {
26481      return requestAnimationFrame(_this.update);
26482    };
26483
26484    // make update() debounced, so that it only runs at most once-per-tick
26485    this.update = debounce(this.update.bind(this));
26486
26487    // with {} we create a new object with the options inside it
26488    this.options = _extends({}, Popper.Defaults, options);
26489
26490    // init state
26491    this.state = {
26492      isDestroyed: false,
26493      isCreated: false,
26494      scrollParents: []
26495    };
26496
26497    // get reference and popper elements (allow jQuery wrappers)
26498    this.reference = reference && reference.jquery ? reference[0] : reference;
26499    this.popper = popper && popper.jquery ? popper[0] : popper;
26500
26501    // Deep merge modifiers options
26502    this.options.modifiers = {};
26503    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
26504      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
26505    });
26506
26507    // Refactoring modifiers' list (Object => Array)
26508    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
26509      return _extends({
26510        name: name
26511      }, _this.options.modifiers[name]);
26512    })
26513    // sort the modifiers by order
26514    .sort(function (a, b) {
26515      return a.order - b.order;
26516    });
26517
26518    // modifiers have the ability to execute arbitrary code when Popper.js get inited
26519    // such code is executed in the same order of its modifier
26520    // they could add new properties to their options configuration
26521    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
26522    this.modifiers.forEach(function (modifierOptions) {
26523      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
26524        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
26525      }
26526    });
26527
26528    // fire the first update to position the popper in the right place
26529    this.update();
26530
26531    var eventsEnabled = this.options.eventsEnabled;
26532    if (eventsEnabled) {
26533      // setup event listeners, they will take care of update the position in specific situations
26534      this.enableEventListeners();
26535    }
26536
26537    this.state.eventsEnabled = eventsEnabled;
26538  }
26539
26540  // We can't use class properties because they don't get listed in the
26541  // class prototype and break stuff like Sinon stubs
26542
26543
26544  createClass(Popper, [{
26545    key: 'update',
26546    value: function update$$1() {
26547      return update.call(this);
26548    }
26549  }, {
26550    key: 'destroy',
26551    value: function destroy$$1() {
26552      return destroy.call(this);
26553    }
26554  }, {
26555    key: 'enableEventListeners',
26556    value: function enableEventListeners$$1() {
26557      return enableEventListeners.call(this);
26558    }
26559  }, {
26560    key: 'disableEventListeners',
26561    value: function disableEventListeners$$1() {
26562      return disableEventListeners.call(this);
26563    }
26564
26565    /**
26566     * Schedules an update. It will run on the next UI update available.
26567     * @method scheduleUpdate
26568     * @memberof Popper
26569     */
26570
26571
26572    /**
26573     * Collection of utilities useful when writing custom modifiers.
26574     * Starting from version 1.7, this method is available only if you
26575     * include `popper-utils.js` before `popper.js`.
26576     *
26577     * **DEPRECATION**: This way to access PopperUtils is deprecated
26578     * and will be removed in v2! Use the PopperUtils module directly instead.
26579     * Due to the high instability of the methods contained in Utils, we can't
26580     * guarantee them to follow semver. Use them at your own risk!
26581     * @static
26582     * @private
26583     * @type {Object}
26584     * @deprecated since version 1.8
26585     * @member Utils
26586     * @memberof Popper
26587     */
26588
26589  }]);
26590  return Popper;
26591}();
26592
26593/**
26594 * The `referenceObject` is an object that provides an interface compatible with Popper.js
26595 * and lets you use it as replacement of a real DOM node.<br />
26596 * You can use this method to position a popper relatively to a set of coordinates
26597 * in case you don't have a DOM node to use as reference.
26598 *
26599 * ```
26600 * new Popper(referenceObject, popperNode);
26601 * ```
26602 *
26603 * NB: This feature isn't supported in Internet Explorer 10.
26604 * @name referenceObject
26605 * @property {Function} data.getBoundingClientRect
26606 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
26607 * @property {number} data.clientWidth
26608 * An ES6 getter that will return the width of the virtual reference element.
26609 * @property {number} data.clientHeight
26610 * An ES6 getter that will return the height of the virtual reference element.
26611 */
26612
26613
26614Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
26615Popper.placements = placements;
26616Popper.Defaults = Defaults;
26617
26618/* harmony default export */ __webpack_exports__["default"] = (Popper);
26619//# sourceMappingURL=popper.js.map
26620
26621/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
26622
26623/***/ }),
26624
vendor: 4,174 bytes, lines 26625-26790
26625/***/ "./node_modules/ssr-window/ssr-window.esm.js":
26626/*!***************************************************!*\
26627  !*** ./node_modules/ssr-window/ssr-window.esm.js ***!
26628  \***************************************************/
26629/*! exports provided: extend, getDocument, getWindow, ssrDocument, ssrWindow */
26630/***/ (function(module, __webpack_exports__, __webpack_require__) {
26631
26632"use strict";
26633__webpack_require__.r(__webpack_exports__);
26634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; });
26635/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDocument", function() { return getDocument; });
26636/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getWindow", function() { return getWindow; });
26637/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ssrDocument", function() { return ssrDocument; });
26638/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ssrWindow", function() { return ssrWindow; });
26639/**
26640 * SSR Window 4.0.2
26641 * Better handling for window object in SSR environment
26642 * https://github.com/nolimits4web/ssr-window
26643 *
26644 * Copyright 2021, Vladimir Kharlampidi
26645 *
26646 * Licensed under MIT
26647 *
26648 * Released on: December 13, 2021
26649 */
26650/* eslint-disable no-param-reassign */
26651function isObject(obj) {
26652    return (obj !== null &&
26653        typeof obj === 'object' &&
26654        'constructor' in obj &&
26655        obj.constructor === Object);
26656}
26657function extend(target = {}, src = {}) {
26658    Object.keys(src).forEach((key) => {
26659        if (typeof target[key] === 'undefined')
26660            target[key] = src[key];
26661        else if (isObject(src[key]) &&
26662            isObject(target[key]) &&
26663            Object.keys(src[key]).length > 0) {
26664            extend(target[key], src[key]);
26665        }
26666    });
26667}
26668
26669const ssrDocument = {
26670    body: {},
26671    addEventListener() { },
26672    removeEventListener() { },
26673    activeElement: {
26674        blur() { },
26675        nodeName: '',
26676    },
26677    querySelector() {
26678        return null;
26679    },
26680    querySelectorAll() {
26681        return [];
26682    },
26683    getElementById() {
26684        return null;
26685    },
26686    createEvent() {
26687        return {
26688            initEvent() { },
26689        };
26690    },
26691    createElement() {
26692        return {
26693            children: [],
26694            childNodes: [],
26695            style: {},
26696            setAttribute() { },
26697            getElementsByTagName() {
26698                return [];
26699            },
26700        };
26701    },
26702    createElementNS() {
26703        return {};
26704    },
26705    importNode() {
26706        return null;
26707    },
26708    location: {
26709        hash: '',
26710        host: '',
26711        hostname: '',
26712        href: '',
26713        origin: '',
26714        pathname: '',
26715        protocol: '',
26716        search: '',
26717    },
26718};
26719function getDocument() {
26720    const doc = typeof document !== 'undefined' ? document : {};
26721    extend(doc, ssrDocument);
26722    return doc;
26723}
26724
26725const ssrWindow = {
26726    document: ssrDocument,
26727    navigator: {
26728        userAgent: '',
26729    },
26730    location: {
26731        hash: '',
26732        host: '',
26733        hostname: '',
26734        href: '',
26735        origin: '',
26736        pathname: '',
26737        protocol: '',
26738        search: '',
26739    },
26740    history: {
26741        replaceState() { },
26742        pushState() { },
26743        go() { },
26744        back() { },
26745    },
26746    CustomEvent: function CustomEvent() {
26747        return this;
26748    },
26749    addEventListener() { },
26750    removeEventListener() { },
26751    getComputedStyle() {
26752        return {
26753            getPropertyValue() {
26754                return '';
26755            },
26756        };
26757    },
26758    Image() { },
26759    Date() { },
26760    screen: {},
26761    setTimeout() { },
26762    clearTimeout() { },
26763    matchMedia() {
26764        return {};
26765    },
26766    requestAnimationFrame(callback) {
26767        if (typeof setTimeout === 'undefined') {
26768            callback();
26769            return null;
26770        }
26771        return setTimeout(callback, 0);
26772    },
26773    cancelAnimationFrame(id) {
26774        if (typeof setTimeout === 'undefined') {
26775            return;
26776        }
26777        clearTimeout(id);
26778    },
26779};
26780function getWindow() {
26781    const win = typeof window !== 'undefined' ? window : {};
26782    extend(win, ssrWindow);
26783    return win;
26784}
26785
26786
26787
26788
26789/***/ }),
26790
vendor: 1,831 bytes, lines 26791-26844
26791/***/ "./node_modules/swiper/core/breakpoints/getBreakpoint.js":
26792/*!***************************************************************!*\
26793  !*** ./node_modules/swiper/core/breakpoints/getBreakpoint.js ***!
26794  \***************************************************************/
26795/*! exports provided: default */
26796/***/ (function(module, __webpack_exports__, __webpack_require__) {
26797
26798"use strict";
26799__webpack_require__.r(__webpack_exports__);
26800/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getBreakpoint; });
26801/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
26802
26803function getBreakpoint(breakpoints, base = 'window', containerEl) {
26804  if (!breakpoints || base === 'container' && !containerEl) return undefined;
26805  let breakpoint = false;
26806  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
26807  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
26808  const points = Object.keys(breakpoints).map(point => {
26809    if (typeof point === 'string' && point.indexOf('@') === 0) {
26810      const minRatio = parseFloat(point.substr(1));
26811      const value = currentHeight * minRatio;
26812      return {
26813        value,
26814        point
26815      };
26816    }
26817
26818    return {
26819      value: point,
26820      point
26821    };
26822  });
26823  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
26824
26825  for (let i = 0; i < points.length; i += 1) {
26826    const {
26827      point,
26828      value
26829    } = points[i];
26830
26831    if (base === 'window') {
26832      if (window.matchMedia(`(min-width: ${value}px)`).matches) {
26833        breakpoint = point;
26834      }
26835    } else if (value <= containerEl.clientWidth) {
26836      breakpoint = point;
26837    }
26838  }
26839
26840  return breakpoint || 'max';
26841}
26842
26843/***/ }),
26844
vendor: 993 bytes, lines 26845-26864
26845/***/ "./node_modules/swiper/core/breakpoints/index.js":
26846/*!*******************************************************!*\
26847  !*** ./node_modules/swiper/core/breakpoints/index.js ***!
26848  \*******************************************************/
26849/*! exports provided: default */
26850/***/ (function(module, __webpack_exports__, __webpack_require__) {
26851
26852"use strict";
26853__webpack_require__.r(__webpack_exports__);
26854/* harmony import */ var _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBreakpoint.js */ "./node_modules/swiper/core/breakpoints/setBreakpoint.js");
26855/* harmony import */ var _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBreakpoint.js */ "./node_modules/swiper/core/breakpoints/getBreakpoint.js");
26856
26857
26858/* harmony default export */ __webpack_exports__["default"] = ({
26859  setBreakpoint: _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__["default"],
26860  getBreakpoint: _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__["default"]
26861});
26862
26863/***/ }),
26864
vendor: 3,730 bytes, lines 26865-26963
26865/***/ "./node_modules/swiper/core/breakpoints/setBreakpoint.js":
26866/*!***************************************************************!*\
26867  !*** ./node_modules/swiper/core/breakpoints/setBreakpoint.js ***!
26868  \***************************************************************/
26869/*! exports provided: default */
26870/***/ (function(module, __webpack_exports__, __webpack_require__) {
26871
26872"use strict";
26873__webpack_require__.r(__webpack_exports__);
26874/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setBreakpoint; });
26875/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
26876
26877
26878const isGridEnabled = (swiper, params) => {
26879  return swiper.grid && params.grid && params.grid.rows > 1;
26880};
26881
26882function setBreakpoint() {
26883  const swiper = this;
26884  const {
26885    activeIndex,
26886    initialized,
26887    loopedSlides = 0,
26888    params,
26889    $el
26890  } = swiper;
26891  const breakpoints = params.breakpoints;
26892  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters
26893
26894  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
26895  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
26896  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
26897  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
26898  const wasMultiRow = isGridEnabled(swiper, params);
26899  const isMultiRow = isGridEnabled(swiper, breakpointParams);
26900  const wasEnabled = params.enabled;
26901
26902  if (wasMultiRow && !isMultiRow) {
26903    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);
26904    swiper.emitContainerClasses();
26905  } else if (!wasMultiRow && isMultiRow) {
26906    $el.addClass(`${params.containerModifierClass}grid`);
26907
26908    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {
26909      $el.addClass(`${params.containerModifierClass}grid-column`);
26910    }
26911
26912    swiper.emitContainerClasses();
26913  } // Toggle navigation, pagination, scrollbar
26914
26915
26916  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
26917    const wasModuleEnabled = params[prop] && params[prop].enabled;
26918    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
26919
26920    if (wasModuleEnabled && !isModuleEnabled) {
26921      swiper[prop].disable();
26922    }
26923
26924    if (!wasModuleEnabled && isModuleEnabled) {
26925      swiper[prop].enable();
26926    }
26927  });
26928  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
26929  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
26930
26931  if (directionChanged && initialized) {
26932    swiper.changeDirection();
26933  }
26934
26935  Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(swiper.params, breakpointParams);
26936  const isEnabled = swiper.params.enabled;
26937  Object.assign(swiper, {
26938    allowTouchMove: swiper.params.allowTouchMove,
26939    allowSlideNext: swiper.params.allowSlideNext,
26940    allowSlidePrev: swiper.params.allowSlidePrev
26941  });
26942
26943  if (wasEnabled && !isEnabled) {
26944    swiper.disable();
26945  } else if (!wasEnabled && isEnabled) {
26946    swiper.enable();
26947  }
26948
26949  swiper.currentBreakpoint = breakpoint;
26950  swiper.emit('_beforeBreakpoint', breakpointParams);
26951
26952  if (needsReLoop && initialized) {
26953    swiper.loopDestroy();
26954    swiper.loopCreate();
26955    swiper.updateSlides();
26956    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
26957  }
26958
26959  swiper.emit('breakpoint', breakpointParams);
26960}
26961
26962/***/ }),
26963
vendor: 1,368 bytes, lines 26964-27013
26964/***/ "./node_modules/swiper/core/check-overflow/index.js":
26965/*!**********************************************************!*\
26966  !*** ./node_modules/swiper/core/check-overflow/index.js ***!
26967  \**********************************************************/
26968/*! exports provided: default */
26969/***/ (function(module, __webpack_exports__, __webpack_require__) {
26970
26971"use strict";
26972__webpack_require__.r(__webpack_exports__);
26973function checkOverflow() {
26974  const swiper = this;
26975  const {
26976    isLocked: wasLocked,
26977    params
26978  } = swiper;
26979  const {
26980    slidesOffsetBefore
26981  } = params;
26982
26983  if (slidesOffsetBefore) {
26984    const lastSlideIndex = swiper.slides.length - 1;
26985    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
26986    swiper.isLocked = swiper.size > lastSlideRightEdge;
26987  } else {
26988    swiper.isLocked = swiper.snapGrid.length === 1;
26989  }
26990
26991  if (params.allowSlideNext === true) {
26992    swiper.allowSlideNext = !swiper.isLocked;
26993  }
26994
26995  if (params.allowSlidePrev === true) {
26996    swiper.allowSlidePrev = !swiper.isLocked;
26997  }
26998
26999  if (wasLocked && wasLocked !== swiper.isLocked) {
27000    swiper.isEnd = false;
27001  }
27002
27003  if (wasLocked !== swiper.isLocked) {
27004    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
27005  }
27006}
27007
27008/* harmony default export */ __webpack_exports__["default"] = ({
27009  checkOverflow
27010});
27011
27012/***/ }),
27013
vendor: 1,873 bytes, lines 27014-27080
27014/***/ "./node_modules/swiper/core/classes/addClasses.js":
27015/*!********************************************************!*\
27016  !*** ./node_modules/swiper/core/classes/addClasses.js ***!
27017  \********************************************************/
27018/*! exports provided: default */
27019/***/ (function(module, __webpack_exports__, __webpack_require__) {
27020
27021"use strict";
27022__webpack_require__.r(__webpack_exports__);
27023/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addClasses; });
27024function prepareClasses(entries, prefix) {
27025  const resultClasses = [];
27026  entries.forEach(item => {
27027    if (typeof item === 'object') {
27028      Object.keys(item).forEach(classNames => {
27029        if (item[classNames]) {
27030          resultClasses.push(prefix + classNames);
27031        }
27032      });
27033    } else if (typeof item === 'string') {
27034      resultClasses.push(prefix + item);
27035    }
27036  });
27037  return resultClasses;
27038}
27039
27040function addClasses() {
27041  const swiper = this;
27042  const {
27043    classNames,
27044    params,
27045    rtl,
27046    $el,
27047    device,
27048    support
27049  } = swiper; // prettier-ignore
27050
27051  const suffixes = prepareClasses(['initialized', params.direction, {
27052    'pointer-events': !support.touch
27053  }, {
27054    'free-mode': swiper.params.freeMode && params.freeMode.enabled
27055  }, {
27056    'autoheight': params.autoHeight
27057  }, {
27058    'rtl': rtl
27059  }, {
27060    'grid': params.grid && params.grid.rows > 1
27061  }, {
27062    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'
27063  }, {
27064    'android': device.android
27065  }, {
27066    'ios': device.ios
27067  }, {
27068    'css-mode': params.cssMode
27069  }, {
27070    'centered': params.cssMode && params.centeredSlides
27071  }, {
27072    'watch-progress': params.watchSlidesProgress
27073  }], params.containerModifierClass);
27074  classNames.push(...suffixes);
27075  $el.addClass([...classNames].join(' '));
27076  swiper.emitContainerClasses();
27077}
27078
27079/***/ }),
27080
vendor: 954 bytes, lines 27081-27100
27081/***/ "./node_modules/swiper/core/classes/index.js":
27082/*!***************************************************!*\
27083  !*** ./node_modules/swiper/core/classes/index.js ***!
27084  \***************************************************/
27085/*! exports provided: default */
27086/***/ (function(module, __webpack_exports__, __webpack_require__) {
27087
27088"use strict";
27089__webpack_require__.r(__webpack_exports__);
27090/* harmony import */ var _addClasses_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addClasses.js */ "./node_modules/swiper/core/classes/addClasses.js");
27091/* harmony import */ var _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeClasses.js */ "./node_modules/swiper/core/classes/removeClasses.js");
27092
27093
27094/* harmony default export */ __webpack_exports__["default"] = ({
27095  addClasses: _addClasses_js__WEBPACK_IMPORTED_MODULE_0__["default"],
27096  removeClasses: _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__["default"]
27097});
27098
27099/***/ }),
27100
vendor: 725 bytes, lines 27101-27122
27101/***/ "./node_modules/swiper/core/classes/removeClasses.js":
27102/*!***********************************************************!*\
27103  !*** ./node_modules/swiper/core/classes/removeClasses.js ***!
27104  \***********************************************************/
27105/*! exports provided: default */
27106/***/ (function(module, __webpack_exports__, __webpack_require__) {
27107
27108"use strict";
27109__webpack_require__.r(__webpack_exports__);
27110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return removeClasses; });
27111function removeClasses() {
27112  const swiper = this;
27113  const {
27114    $el,
27115    classNames
27116  } = swiper;
27117  $el.removeClass(classNames.join(' '));
27118  swiper.emitContainerClasses();
27119}
27120
27121/***/ }),
27122
vendor: 22,617 bytes, lines 27123-27790
27123/***/ "./node_modules/swiper/core/core.js":
27124/*!******************************************!*\
27125  !*** ./node_modules/swiper/core/core.js ***!
27126  \******************************************/
27127/*! exports provided: default */
27128/***/ (function(module, __webpack_exports__, __webpack_require__) {
27129
27130"use strict";
27131__webpack_require__.r(__webpack_exports__);
27132/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
27133/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
27134/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
27135/* harmony import */ var _shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/get-support.js */ "./node_modules/swiper/shared/get-support.js");
27136/* harmony import */ var _shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/get-device.js */ "./node_modules/swiper/shared/get-device.js");
27137/* harmony import */ var _shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shared/get-browser.js */ "./node_modules/swiper/shared/get-browser.js");
27138/* harmony import */ var _modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/resize/resize.js */ "./node_modules/swiper/core/modules/resize/resize.js");
27139/* harmony import */ var _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/observer/observer.js */ "./node_modules/swiper/core/modules/observer/observer.js");
27140/* harmony import */ var _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./events-emitter.js */ "./node_modules/swiper/core/events-emitter.js");
27141/* harmony import */ var _update_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./update/index.js */ "./node_modules/swiper/core/update/index.js");
27142/* harmony import */ var _translate_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./translate/index.js */ "./node_modules/swiper/core/translate/index.js");
27143/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/swiper/core/transition/index.js");
27144/* harmony import */ var _slide_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./slide/index.js */ "./node_modules/swiper/core/slide/index.js");
27145/* harmony import */ var _loop_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./loop/index.js */ "./node_modules/swiper/core/loop/index.js");
27146/* harmony import */ var _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./grab-cursor/index.js */ "./node_modules/swiper/core/grab-cursor/index.js");
27147/* harmony import */ var _events_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./events/index.js */ "./node_modules/swiper/core/events/index.js");
27148/* harmony import */ var _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./breakpoints/index.js */ "./node_modules/swiper/core/breakpoints/index.js");
27149/* harmony import */ var _classes_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./classes/index.js */ "./node_modules/swiper/core/classes/index.js");
27150/* harmony import */ var _images_index_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./images/index.js */ "./node_modules/swiper/core/images/index.js");
27151/* harmony import */ var _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./check-overflow/index.js */ "./node_modules/swiper/core/check-overflow/index.js");
27152/* harmony import */ var _defaults_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./defaults.js */ "./node_modules/swiper/core/defaults.js");
27153/* harmony import */ var _moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./moduleExtendParams.js */ "./node_modules/swiper/core/moduleExtendParams.js");
27154/* eslint no-param-reassign: "off" */
27155
27156
27157
27158
27159
27160
27161
27162
27163
27164
27165
27166
27167
27168
27169
27170
27171
27172
27173
27174
27175
27176
27177const prototypes = {
27178  eventsEmitter: _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__["default"],
27179  update: _update_index_js__WEBPACK_IMPORTED_MODULE_9__["default"],
27180  translate: _translate_index_js__WEBPACK_IMPORTED_MODULE_10__["default"],
27181  transition: _transition_index_js__WEBPACK_IMPORTED_MODULE_11__["default"],
27182  slide: _slide_index_js__WEBPACK_IMPORTED_MODULE_12__["default"],
27183  loop: _loop_index_js__WEBPACK_IMPORTED_MODULE_13__["default"],
27184  grabCursor: _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__["default"],
27185  events: _events_index_js__WEBPACK_IMPORTED_MODULE_15__["default"],
27186  breakpoints: _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__["default"],
27187  checkOverflow: _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__["default"],
27188  classes: _classes_index_js__WEBPACK_IMPORTED_MODULE_17__["default"],
27189  images: _images_index_js__WEBPACK_IMPORTED_MODULE_18__["default"]
27190};
27191const extendedDefaults = {};
27192
27193class Swiper {
27194  constructor(...args) {
27195    let el;
27196    let params;
27197
27198    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
27199      params = args[0];
27200    } else {
27201      [el, params] = args;
27202    }
27203
27204    if (!params) params = {};
27205    params = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, params);
27206    if (el && !params.el) params.el = el;
27207
27208    if (params.el && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).length > 1) {
27209      const swipers = [];
27210      Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).each(containerEl => {
27211        const newParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, params, {
27212          el: containerEl
27213        });
27214        swipers.push(new Swiper(newParams));
27215      }); // eslint-disable-next-line no-constructor-return
27216
27217      return swipers;
27218    } // Swiper Instance
27219
27220
27221    const swiper = this;
27222    swiper.__swiper__ = true;
27223    swiper.support = Object(_shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__["getSupport"])();
27224    swiper.device = Object(_shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__["getDevice"])({
27225      userAgent: params.userAgent
27226    });
27227    swiper.browser = Object(_shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__["getBrowser"])();
27228    swiper.eventsListeners = {};
27229    swiper.eventsAnyListeners = [];
27230    swiper.modules = [...swiper.__modules__];
27231
27232    if (params.modules && Array.isArray(params.modules)) {
27233      swiper.modules.push(...params.modules);
27234    }
27235
27236    const allModulesParams = {};
27237    swiper.modules.forEach(mod => {
27238      mod({
27239        swiper,
27240        extendParams: Object(_moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__["default"])(params, allModulesParams),
27241        on: swiper.on.bind(swiper),
27242        once: swiper.once.bind(swiper),
27243        off: swiper.off.bind(swiper),
27244        emit: swiper.emit.bind(swiper)
27245      });
27246    }); // Extend defaults with modules params
27247
27248    const swiperParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"], allModulesParams); // Extend defaults with passed params
27249
27250    swiper.params = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, swiperParams, extendedDefaults, params);
27251    swiper.originalParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, swiper.params);
27252    swiper.passedParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, params); // add event listeners
27253
27254    if (swiper.params && swiper.params.on) {
27255      Object.keys(swiper.params.on).forEach(eventName => {
27256        swiper.on(eventName, swiper.params.on[eventName]);
27257      });
27258    }
27259
27260    if (swiper.params && swiper.params.onAny) {
27261      swiper.onAny(swiper.params.onAny);
27262    } // Save Dom lib
27263
27264
27265    swiper.$ = _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"]; // Extend Swiper
27266
27267    Object.assign(swiper, {
27268      enabled: swiper.params.enabled,
27269      el,
27270      // Classes
27271      classNames: [],
27272      // Slides
27273      slides: Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(),
27274      slidesGrid: [],
27275      snapGrid: [],
27276      slidesSizesGrid: [],
27277
27278      // isDirection
27279      isHorizontal() {
27280        return swiper.params.direction === 'horizontal';
27281      },
27282
27283      isVertical() {
27284        return swiper.params.direction === 'vertical';
27285      },
27286
27287      // Indexes
27288      activeIndex: 0,
27289      realIndex: 0,
27290      //
27291      isBeginning: true,
27292      isEnd: false,
27293      // Props
27294      translate: 0,
27295      previousTranslate: 0,
27296      progress: 0,
27297      velocity: 0,
27298      animating: false,
27299      // Locks
27300      allowSlideNext: swiper.params.allowSlideNext,
27301      allowSlidePrev: swiper.params.allowSlidePrev,
27302      // Touch Events
27303      touchEvents: function touchEvents() {
27304        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
27305        const desktop = ['pointerdown', 'pointermove', 'pointerup'];
27306        swiper.touchEventsTouch = {
27307          start: touch[0],
27308          move: touch[1],
27309          end: touch[2],
27310          cancel: touch[3]
27311        };
27312        swiper.touchEventsDesktop = {
27313          start: desktop[0],
27314          move: desktop[1],
27315          end: desktop[2]
27316        };
27317        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
27318      }(),
27319      touchEventsData: {
27320        isTouched: undefined,
27321        isMoved: undefined,
27322        allowTouchCallbacks: undefined,
27323        touchStartTime: undefined,
27324        isScrolling: undefined,
27325        currentTranslate: undefined,
27326        startTranslate: undefined,
27327        allowThresholdMove: undefined,
27328        // Form elements to match
27329        focusableElements: swiper.params.focusableElements,
27330        // Last click time
27331        lastClickTime: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(),
27332        clickTimeout: undefined,
27333        // Velocities
27334        velocities: [],
27335        allowMomentumBounce: undefined,
27336        isTouchEvent: undefined,
27337        startMoving: undefined
27338      },
27339      // Clicks
27340      allowClick: true,
27341      // Touches
27342      allowTouchMove: swiper.params.allowTouchMove,
27343      touches: {
27344        startX: 0,
27345        startY: 0,
27346        currentX: 0,
27347        currentY: 0,
27348        diff: 0
27349      },
27350      // Images
27351      imagesToLoad: [],
27352      imagesLoaded: 0
27353    });
27354    swiper.emit('_swiper'); // Init
27355
27356    if (swiper.params.init) {
27357      swiper.init();
27358    } // Return app instance
27359    // eslint-disable-next-line no-constructor-return
27360
27361
27362    return swiper;
27363  }
27364
27365  enable() {
27366    const swiper = this;
27367    if (swiper.enabled) return;
27368    swiper.enabled = true;
27369
27370    if (swiper.params.grabCursor) {
27371      swiper.setGrabCursor();
27372    }
27373
27374    swiper.emit('enable');
27375  }
27376
27377  disable() {
27378    const swiper = this;
27379    if (!swiper.enabled) return;
27380    swiper.enabled = false;
27381
27382    if (swiper.params.grabCursor) {
27383      swiper.unsetGrabCursor();
27384    }
27385
27386    swiper.emit('disable');
27387  }
27388
27389  setProgress(progress, speed) {
27390    const swiper = this;
27391    progress = Math.min(Math.max(progress, 0), 1);
27392    const min = swiper.minTranslate();
27393    const max = swiper.maxTranslate();
27394    const current = (max - min) * progress + min;
27395    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
27396    swiper.updateActiveIndex();
27397    swiper.updateSlidesClasses();
27398  }
27399
27400  emitContainerClasses() {
27401    const swiper = this;
27402    if (!swiper.params._emitClasses || !swiper.el) return;
27403    const cls = swiper.el.className.split(' ').filter(className => {
27404      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
27405    });
27406    swiper.emit('_containerClasses', cls.join(' '));
27407  }
27408
27409  getSlideClasses(slideEl) {
27410    const swiper = this;
27411    if (swiper.destroyed) return '';
27412    return slideEl.className.split(' ').filter(className => {
27413      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
27414    }).join(' ');
27415  }
27416
27417  emitSlidesClasses() {
27418    const swiper = this;
27419    if (!swiper.params._emitClasses || !swiper.el) return;
27420    const updates = [];
27421    swiper.slides.each(slideEl => {
27422      const classNames = swiper.getSlideClasses(slideEl);
27423      updates.push({
27424        slideEl,
27425        classNames
27426      });
27427      swiper.emit('_slideClass', slideEl, classNames);
27428    });
27429    swiper.emit('_slideClasses', updates);
27430  }
27431
27432  slidesPerViewDynamic(view = 'current', exact = false) {
27433    const swiper = this;
27434    const {
27435      params,
27436      slides,
27437      slidesGrid,
27438      slidesSizesGrid,
27439      size: swiperSize,
27440      activeIndex
27441    } = swiper;
27442    let spv = 1;
27443
27444    if (params.centeredSlides) {
27445      let slideSize = slides[activeIndex].swiperSlideSize;
27446      let breakLoop;
27447
27448      for (let i = activeIndex + 1; i < slides.length; i += 1) {
27449        if (slides[i] && !breakLoop) {
27450          slideSize += slides[i].swiperSlideSize;
27451          spv += 1;
27452          if (slideSize > swiperSize) breakLoop = true;
27453        }
27454      }
27455
27456      for (let i = activeIndex - 1; i >= 0; i -= 1) {
27457        if (slides[i] && !breakLoop) {
27458          slideSize += slides[i].swiperSlideSize;
27459          spv += 1;
27460          if (slideSize > swiperSize) breakLoop = true;
27461        }
27462      }
27463    } else {
27464      // eslint-disable-next-line
27465      if (view === 'current') {
27466        for (let i = activeIndex + 1; i < slides.length; i += 1) {
27467          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
27468
27469          if (slideInView) {
27470            spv += 1;
27471          }
27472        }
27473      } else {
27474        // previous
27475        for (let i = activeIndex - 1; i >= 0; i -= 1) {
27476          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
27477
27478          if (slideInView) {
27479            spv += 1;
27480          }
27481        }
27482      }
27483    }
27484
27485    return spv;
27486  }
27487
27488  update() {
27489    const swiper = this;
27490    if (!swiper || swiper.destroyed) return;
27491    const {
27492      snapGrid,
27493      params
27494    } = swiper; // Breakpoints
27495
27496    if (params.breakpoints) {
27497      swiper.setBreakpoint();
27498    }
27499
27500    swiper.updateSize();
27501    swiper.updateSlides();
27502    swiper.updateProgress();
27503    swiper.updateSlidesClasses();
27504
27505    function setTranslate() {
27506      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
27507      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
27508      swiper.setTranslate(newTranslate);
27509      swiper.updateActiveIndex();
27510      swiper.updateSlidesClasses();
27511    }
27512
27513    let translated;
27514
27515    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {
27516      setTranslate();
27517
27518      if (swiper.params.autoHeight) {
27519        swiper.updateAutoHeight();
27520      }
27521    } else {
27522      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
27523        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
27524      } else {
27525        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
27526      }
27527
27528      if (!translated) {
27529        setTranslate();
27530      }
27531    }
27532
27533    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
27534      swiper.checkOverflow();
27535    }
27536
27537    swiper.emit('update');
27538  }
27539
27540  changeDirection(newDirection, needUpdate = true) {
27541    const swiper = this;
27542    const currentDirection = swiper.params.direction;
27543
27544    if (!newDirection) {
27545      // eslint-disable-next-line
27546      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
27547    }
27548
27549    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
27550      return swiper;
27551    }
27552
27553    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);
27554    swiper.emitContainerClasses();
27555    swiper.params.direction = newDirection;
27556    swiper.slides.each(slideEl => {
27557      if (newDirection === 'vertical') {
27558        slideEl.style.width = '';
27559      } else {
27560        slideEl.style.height = '';
27561      }
27562    });
27563    swiper.emit('changeDirection');
27564    if (needUpdate) swiper.update();
27565    return swiper;
27566  }
27567
27568  changeLanguageDirection(direction) {
27569    const swiper = this;
27570    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
27571    swiper.rtl = direction === 'rtl';
27572    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
27573
27574    if (swiper.rtl) {
27575      swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);
27576      swiper.el.dir = 'rtl';
27577    } else {
27578      swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);
27579      swiper.el.dir = 'ltr';
27580    }
27581
27582    swiper.update();
27583  }
27584
27585  mount(el) {
27586    const swiper = this;
27587    if (swiper.mounted) return true; // Find el
27588
27589    const $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el || swiper.params.el);
27590    el = $el[0];
27591
27592    if (!el) {
27593      return false;
27594    }
27595
27596    el.swiper = swiper;
27597
27598    const getWrapperSelector = () => {
27599      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;
27600    };
27601
27602    const getWrapper = () => {
27603      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
27604        const res = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items
27605
27606        res.children = options => $el.children(options);
27607
27608        return res;
27609      }
27610
27611      if (!$el.children) {
27612        return Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($el).children(getWrapperSelector());
27613      }
27614
27615      return $el.children(getWrapperSelector());
27616    }; // Find Wrapper
27617
27618
27619    let $wrapperEl = getWrapper();
27620
27621    if ($wrapperEl.length === 0 && swiper.params.createElements) {
27622      const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
27623      const wrapper = document.createElement('div');
27624      $wrapperEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(wrapper);
27625      wrapper.className = swiper.params.wrapperClass;
27626      $el.append(wrapper);
27627      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {
27628        $wrapperEl.append(slideEl);
27629      });
27630    }
27631
27632    Object.assign(swiper, {
27633      $el,
27634      el,
27635      $wrapperEl,
27636      wrapperEl: $wrapperEl[0],
27637      mounted: true,
27638      // RTL
27639      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
27640      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
27641      wrongRTL: $wrapperEl.css('display') === '-webkit-box'
27642    });
27643    return true;
27644  }
27645
27646  init(el) {
27647    const swiper = this;
27648    if (swiper.initialized) return swiper;
27649    const mounted = swiper.mount(el);
27650    if (mounted === false) return swiper;
27651    swiper.emit('beforeInit'); // Set breakpoint
27652
27653    if (swiper.params.breakpoints) {
27654      swiper.setBreakpoint();
27655    } // Add Classes
27656
27657
27658    swiper.addClasses(); // Create loop
27659
27660    if (swiper.params.loop) {
27661      swiper.loopCreate();
27662    } // Update size
27663
27664
27665    swiper.updateSize(); // Update slides
27666
27667    swiper.updateSlides();
27668
27669    if (swiper.params.watchOverflow) {
27670      swiper.checkOverflow();
27671    } // Set Grab Cursor
27672
27673
27674    if (swiper.params.grabCursor && swiper.enabled) {
27675      swiper.setGrabCursor();
27676    }
27677
27678    if (swiper.params.preloadImages) {
27679      swiper.preloadImages();
27680    } // Slide To Initial Slide
27681
27682
27683    if (swiper.params.loop) {
27684      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
27685    } else {
27686      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
27687    } // Attach events
27688
27689
27690    swiper.attachEvents(); // Init Flag
27691
27692    swiper.initialized = true; // Emit
27693
27694    swiper.emit('init');
27695    swiper.emit('afterInit');
27696    return swiper;
27697  }
27698
27699  destroy(deleteInstance = true, cleanStyles = true) {
27700    const swiper = this;
27701    const {
27702      params,
27703      $el,
27704      $wrapperEl,
27705      slides
27706    } = swiper;
27707
27708    if (typeof swiper.params === 'undefined' || swiper.destroyed) {
27709      return null;
27710    }
27711
27712    swiper.emit('beforeDestroy'); // Init Flag
27713
27714    swiper.initialized = false; // Detach events
27715
27716    swiper.detachEvents(); // Destroy loop
27717
27718    if (params.loop) {
27719      swiper.loopDestroy();
27720    } // Cleanup styles
27721
27722
27723    if (cleanStyles) {
27724      swiper.removeClasses();
27725      $el.removeAttr('style');
27726      $wrapperEl.removeAttr('style');
27727
27728      if (slides && slides.length) {
27729        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
27730      }
27731    }
27732
27733    swiper.emit('destroy'); // Detach emitter events
27734
27735    Object.keys(swiper.eventsListeners).forEach(eventName => {
27736      swiper.off(eventName);
27737    });
27738
27739    if (deleteInstance !== false) {
27740      swiper.$el[0].swiper = null;
27741      Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["deleteProps"])(swiper);
27742    }
27743
27744    swiper.destroyed = true;
27745    return null;
27746  }
27747
27748  static extendDefaults(newDefaults) {
27749    Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])(extendedDefaults, newDefaults);
27750  }
27751
27752  static get extendedDefaults() {
27753    return extendedDefaults;
27754  }
27755
27756  static get defaults() {
27757    return _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"];
27758  }
27759
27760  static installModule(mod) {
27761    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
27762    const modules = Swiper.prototype.__modules__;
27763
27764    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
27765      modules.push(mod);
27766    }
27767  }
27768
27769  static use(module) {
27770    if (Array.isArray(module)) {
27771      module.forEach(m => Swiper.installModule(m));
27772      return Swiper;
27773    }
27774
27775    Swiper.installModule(module);
27776    return Swiper;
27777  }
27778
27779}
27780
27781Object.keys(prototypes).forEach(prototypeGroup => {
27782  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {
27783    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
27784  });
27785});
27786Swiper.use([_modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__["default"]]);
27787/* harmony default export */ __webpack_exports__["default"] = (Swiper);
27788
27789/***/ }),
27790
vendor: 3,603 bytes, lines 27791-27926
27791/***/ "./node_modules/swiper/core/defaults.js":
27792/*!**********************************************!*\
27793  !*** ./node_modules/swiper/core/defaults.js ***!
27794  \**********************************************/
27795/*! exports provided: default */
27796/***/ (function(module, __webpack_exports__, __webpack_require__) {
27797
27798"use strict";
27799__webpack_require__.r(__webpack_exports__);
27800/* harmony default export */ __webpack_exports__["default"] = ({
27801  init: true,
27802  direction: 'horizontal',
27803  touchEventsTarget: 'wrapper',
27804  initialSlide: 0,
27805  speed: 300,
27806  cssMode: false,
27807  updateOnWindowResize: true,
27808  resizeObserver: true,
27809  nested: false,
27810  createElements: false,
27811  enabled: true,
27812  focusableElements: 'input, select, option, textarea, button, video, label',
27813  // Overrides
27814  width: null,
27815  height: null,
27816  //
27817  preventInteractionOnTransition: false,
27818  // ssr
27819  userAgent: null,
27820  url: null,
27821  // To support iOS's swipe-to-go-back gesture (when being used in-app).
27822  edgeSwipeDetection: false,
27823  edgeSwipeThreshold: 20,
27824  // Autoheight
27825  autoHeight: false,
27826  // Set wrapper width
27827  setWrapperSize: false,
27828  // Virtual Translate
27829  virtualTranslate: false,
27830  // Effects
27831  effect: 'slide',
27832  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
27833  // Breakpoints
27834  breakpoints: undefined,
27835  breakpointsBase: 'window',
27836  // Slides grid
27837  spaceBetween: 0,
27838  slidesPerView: 1,
27839  slidesPerGroup: 1,
27840  slidesPerGroupSkip: 0,
27841  slidesPerGroupAuto: false,
27842  centeredSlides: false,
27843  centeredSlidesBounds: false,
27844  slidesOffsetBefore: 0,
27845  // in px
27846  slidesOffsetAfter: 0,
27847  // in px
27848  normalizeSlideIndex: true,
27849  centerInsufficientSlides: false,
27850  // Disable swiper and hide navigation when container not overflow
27851  watchOverflow: true,
27852  // Round length
27853  roundLengths: false,
27854  // Touches
27855  touchRatio: 1,
27856  touchAngle: 45,
27857  simulateTouch: true,
27858  shortSwipes: true,
27859  longSwipes: true,
27860  longSwipesRatio: 0.5,
27861  longSwipesMs: 300,
27862  followFinger: true,
27863  allowTouchMove: true,
27864  threshold: 0,
27865  touchMoveStopPropagation: false,
27866  touchStartPreventDefault: true,
27867  touchStartForcePreventDefault: false,
27868  touchReleaseOnEdges: false,
27869  // Unique Navigation Elements
27870  uniqueNavElements: true,
27871  // Resistance
27872  resistance: true,
27873  resistanceRatio: 0.85,
27874  // Progress
27875  watchSlidesProgress: false,
27876  // Cursor
27877  grabCursor: false,
27878  // Clicks
27879  preventClicks: true,
27880  preventClicksPropagation: true,
27881  slideToClickedSlide: false,
27882  // Images
27883  preloadImages: true,
27884  updateOnImagesReady: true,
27885  // loop
27886  loop: false,
27887  loopAdditionalSlides: 0,
27888  loopedSlides: null,
27889  loopedSlidesLimit: true,
27890  loopFillGroupWithBlank: false,
27891  loopPreventsSlide: true,
27892  // rewind
27893  rewind: false,
27894  // Swiping/no swiping
27895  allowSlidePrev: true,
27896  allowSlideNext: true,
27897  swipeHandler: null,
27898  // '.swipe-handler',
27899  noSwiping: true,
27900  noSwipingClass: 'swiper-no-swiping',
27901  noSwipingSelector: null,
27902  // Passive Listeners
27903  passiveListeners: true,
27904  maxBackfaceHiddenSlides: 10,
27905  // NS
27906  containerModifierClass: 'swiper-',
27907  // NEW
27908  slideClass: 'swiper-slide',
27909  slideBlankClass: 'swiper-slide-invisible-blank',
27910  slideActiveClass: 'swiper-slide-active',
27911  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
27912  slideVisibleClass: 'swiper-slide-visible',
27913  slideDuplicateClass: 'swiper-slide-duplicate',
27914  slideNextClass: 'swiper-slide-next',
27915  slideDuplicateNextClass: 'swiper-slide-duplicate-next',
27916  slidePrevClass: 'swiper-slide-prev',
27917  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
27918  wrapperClass: 'swiper-wrapper',
27919  // Callbacks
27920  runCallbacksOnInit: true,
27921  // Internals
27922  _emitClasses: false
27923});
27924
27925/***/ }),
27926
vendor: 3,742 bytes, lines 27927-28052
27927/***/ "./node_modules/swiper/core/events-emitter.js":
27928/*!****************************************************!*\
27929  !*** ./node_modules/swiper/core/events-emitter.js ***!
27930  \****************************************************/
27931/*! exports provided: default */
27932/***/ (function(module, __webpack_exports__, __webpack_require__) {
27933
27934"use strict";
27935__webpack_require__.r(__webpack_exports__);
27936/* eslint-disable no-underscore-dangle */
27937/* harmony default export */ __webpack_exports__["default"] = ({
27938  on(events, handler, priority) {
27939    const self = this;
27940    if (!self.eventsListeners || self.destroyed) return self;
27941    if (typeof handler !== 'function') return self;
27942    const method = priority ? 'unshift' : 'push';
27943    events.split(' ').forEach(event => {
27944      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
27945      self.eventsListeners[event][method](handler);
27946    });
27947    return self;
27948  },
27949
27950  once(events, handler, priority) {
27951    const self = this;
27952    if (!self.eventsListeners || self.destroyed) return self;
27953    if (typeof handler !== 'function') return self;
27954
27955    function onceHandler(...args) {
27956      self.off(events, onceHandler);
27957
27958      if (onceHandler.__emitterProxy) {
27959        delete onceHandler.__emitterProxy;
27960      }
27961
27962      handler.apply(self, args);
27963    }
27964
27965    onceHandler.__emitterProxy = handler;
27966    return self.on(events, onceHandler, priority);
27967  },
27968
27969  onAny(handler, priority) {
27970    const self = this;
27971    if (!self.eventsListeners || self.destroyed) return self;
27972    if (typeof handler !== 'function') return self;
27973    const method = priority ? 'unshift' : 'push';
27974
27975    if (self.eventsAnyListeners.indexOf(handler) < 0) {
27976      self.eventsAnyListeners[method](handler);
27977    }
27978
27979    return self;
27980  },
27981
27982  offAny(handler) {
27983    const self = this;
27984    if (!self.eventsListeners || self.destroyed) return self;
27985    if (!self.eventsAnyListeners) return self;
27986    const index = self.eventsAnyListeners.indexOf(handler);
27987
27988    if (index >= 0) {
27989      self.eventsAnyListeners.splice(index, 1);
27990    }
27991
27992    return self;
27993  },
27994
27995  off(events, handler) {
27996    const self = this;
27997    if (!self.eventsListeners || self.destroyed) return self;
27998    if (!self.eventsListeners) return self;
27999    events.split(' ').forEach(event => {
28000      if (typeof handler === 'undefined') {
28001        self.eventsListeners[event] = [];
28002      } else if (self.eventsListeners[event]) {
28003        self.eventsListeners[event].forEach((eventHandler, index) => {
28004          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
28005            self.eventsListeners[event].splice(index, 1);
28006          }
28007        });
28008      }
28009    });
28010    return self;
28011  },
28012
28013  emit(...args) {
28014    const self = this;
28015    if (!self.eventsListeners || self.destroyed) return self;
28016    if (!self.eventsListeners) return self;
28017    let events;
28018    let data;
28019    let context;
28020
28021    if (typeof args[0] === 'string' || Array.isArray(args[0])) {
28022      events = args[0];
28023      data = args.slice(1, args.length);
28024      context = self;
28025    } else {
28026      events = args[0].events;
28027      data = args[0].data;
28028      context = args[0].context || self;
28029    }
28030
28031    data.unshift(context);
28032    const eventsArray = Array.isArray(events) ? events : events.split(' ');
28033    eventsArray.forEach(event => {
28034      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
28035        self.eventsAnyListeners.forEach(eventHandler => {
28036          eventHandler.apply(context, [event, ...data]);
28037        });
28038      }
28039
28040      if (self.eventsListeners && self.eventsListeners[event]) {
28041        self.eventsListeners[event].forEach(eventHandler => {
28042          eventHandler.apply(context, data);
28043        });
28044      }
28045    });
28046    return self;
28047  }
28048
28049});
28050
28051/***/ }),
28052
vendor: 4,422 bytes, lines 28053-28168
28053/***/ "./node_modules/swiper/core/events/index.js":
28054/*!**************************************************!*\
28055  !*** ./node_modules/swiper/core/events/index.js ***!
28056  \**************************************************/
28057/*! exports provided: default */
28058/***/ (function(module, __webpack_exports__, __webpack_require__) {
28059
28060"use strict";
28061__webpack_require__.r(__webpack_exports__);
28062/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
28063/* harmony import */ var _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onTouchStart.js */ "./node_modules/swiper/core/events/onTouchStart.js");
28064/* harmony import */ var _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onTouchMove.js */ "./node_modules/swiper/core/events/onTouchMove.js");
28065/* harmony import */ var _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onTouchEnd.js */ "./node_modules/swiper/core/events/onTouchEnd.js");
28066/* harmony import */ var _onResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onResize.js */ "./node_modules/swiper/core/events/onResize.js");
28067/* harmony import */ var _onClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onClick.js */ "./node_modules/swiper/core/events/onClick.js");
28068/* harmony import */ var _onScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./onScroll.js */ "./node_modules/swiper/core/events/onScroll.js");
28069
28070
28071
28072
28073
28074
28075
28076let dummyEventAttached = false;
28077
28078function dummyEventListener() {}
28079
28080const events = (swiper, method) => {
28081  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
28082  const {
28083    params,
28084    touchEvents,
28085    el,
28086    wrapperEl,
28087    device,
28088    support
28089  } = swiper;
28090  const capture = !!params.nested;
28091  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
28092  const swiperMethod = method; // Touch Events
28093
28094  if (!support.touch) {
28095    el[domMethod](touchEvents.start, swiper.onTouchStart, false);
28096    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);
28097    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);
28098  } else {
28099    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
28100      passive: true,
28101      capture: false
28102    } : false;
28103    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);
28104    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
28105      passive: false,
28106      capture
28107    } : capture);
28108    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);
28109
28110    if (touchEvents.cancel) {
28111      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);
28112    }
28113  } // Prevent Links Clicks
28114
28115
28116  if (params.preventClicks || params.preventClicksPropagation) {
28117    el[domMethod]('click', swiper.onClick, true);
28118  }
28119
28120  if (params.cssMode) {
28121    wrapperEl[domMethod]('scroll', swiper.onScroll);
28122  } // Resize handler
28123
28124
28125  if (params.updateOnWindowResize) {
28126    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
28127  } else {
28128    swiper[swiperMethod]('observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true);
28129  }
28130};
28131
28132function attachEvents() {
28133  const swiper = this;
28134  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
28135  const {
28136    params,
28137    support
28138  } = swiper;
28139  swiper.onTouchStart = _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper);
28140  swiper.onTouchMove = _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper);
28141  swiper.onTouchEnd = _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper);
28142
28143  if (params.cssMode) {
28144    swiper.onScroll = _onScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"].bind(swiper);
28145  }
28146
28147  swiper.onClick = _onClick_js__WEBPACK_IMPORTED_MODULE_5__["default"].bind(swiper);
28148
28149  if (support.touch && !dummyEventAttached) {
28150    document.addEventListener('touchstart', dummyEventListener);
28151    dummyEventAttached = true;
28152  }
28153
28154  events(swiper, 'on');
28155}
28156
28157function detachEvents() {
28158  const swiper = this;
28159  events(swiper, 'off');
28160}
28161
28162/* harmony default export */ __webpack_exports__["default"] = ({
28163  attachEvents,
28164  detachEvents
28165});
28166
28167/***/ }),
28168
vendor: 825 bytes, lines 28169-28194
28169/***/ "./node_modules/swiper/core/events/onClick.js":
28170/*!****************************************************!*\
28171  !*** ./node_modules/swiper/core/events/onClick.js ***!
28172  \****************************************************/
28173/*! exports provided: default */
28174/***/ (function(module, __webpack_exports__, __webpack_require__) {
28175
28176"use strict";
28177__webpack_require__.r(__webpack_exports__);
28178/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onClick; });
28179function onClick(e) {
28180  const swiper = this;
28181  if (!swiper.enabled) return;
28182
28183  if (!swiper.allowClick) {
28184    if (swiper.params.preventClicks) e.preventDefault();
28185
28186    if (swiper.params.preventClicksPropagation && swiper.animating) {
28187      e.stopPropagation();
28188      e.stopImmediatePropagation();
28189    }
28190  }
28191}
28192
28193/***/ }),
28194
vendor: 1,599 bytes, lines 28195-28250
28195/***/ "./node_modules/swiper/core/events/onResize.js":
28196/*!*****************************************************!*\
28197  !*** ./node_modules/swiper/core/events/onResize.js ***!
28198  \*****************************************************/
28199/*! exports provided: default */
28200/***/ (function(module, __webpack_exports__, __webpack_require__) {
28201
28202"use strict";
28203__webpack_require__.r(__webpack_exports__);
28204/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onResize; });
28205function onResize() {
28206  const swiper = this;
28207  const {
28208    params,
28209    el
28210  } = swiper;
28211  if (el && el.offsetWidth === 0) return; // Breakpoints
28212
28213  if (params.breakpoints) {
28214    swiper.setBreakpoint();
28215  } // Save locks
28216
28217
28218  const {
28219    allowSlideNext,
28220    allowSlidePrev,
28221    snapGrid
28222  } = swiper; // Disable locks on resize
28223
28224  swiper.allowSlideNext = true;
28225  swiper.allowSlidePrev = true;
28226  swiper.updateSize();
28227  swiper.updateSlides();
28228  swiper.updateSlidesClasses();
28229
28230  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
28231    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
28232  } else {
28233    swiper.slideTo(swiper.activeIndex, 0, false, true);
28234  }
28235
28236  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
28237    swiper.autoplay.run();
28238  } // Return locks after resize
28239
28240
28241  swiper.allowSlidePrev = allowSlidePrev;
28242  swiper.allowSlideNext = allowSlideNext;
28243
28244  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
28245    swiper.checkOverflow();
28246  }
28247}
28248
28249/***/ }),
28250
vendor: 1,411 bytes, lines 28251-28298
28251/***/ "./node_modules/swiper/core/events/onScroll.js":
28252/*!*****************************************************!*\
28253  !*** ./node_modules/swiper/core/events/onScroll.js ***!
28254  \*****************************************************/
28255/*! exports provided: default */
28256/***/ (function(module, __webpack_exports__, __webpack_require__) {
28257
28258"use strict";
28259__webpack_require__.r(__webpack_exports__);
28260/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onScroll; });
28261function onScroll() {
28262  const swiper = this;
28263  const {
28264    wrapperEl,
28265    rtlTranslate,
28266    enabled
28267  } = swiper;
28268  if (!enabled) return;
28269  swiper.previousTranslate = swiper.translate;
28270
28271  if (swiper.isHorizontal()) {
28272    swiper.translate = -wrapperEl.scrollLeft;
28273  } else {
28274    swiper.translate = -wrapperEl.scrollTop;
28275  } // eslint-disable-next-line
28276
28277
28278  if (swiper.translate === 0) swiper.translate = 0;
28279  swiper.updateActiveIndex();
28280  swiper.updateSlidesClasses();
28281  let newProgress;
28282  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
28283
28284  if (translatesDiff === 0) {
28285    newProgress = 0;
28286  } else {
28287    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
28288  }
28289
28290  if (newProgress !== swiper.progress) {
28291    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
28292  }
28293
28294  swiper.emit('setTranslate', swiper.translate, false);
28295}
28296
28297/***/ }),
28298
vendor: 5,509 bytes, lines 28299-28473
28299/***/ "./node_modules/swiper/core/events/onTouchEnd.js":
28300/*!*******************************************************!*\
28301  !*** ./node_modules/swiper/core/events/onTouchEnd.js ***!
28302  \*******************************************************/
28303/*! exports provided: default */
28304/***/ (function(module, __webpack_exports__, __webpack_require__) {
28305
28306"use strict";
28307__webpack_require__.r(__webpack_exports__);
28308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onTouchEnd; });
28309/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
28310
28311function onTouchEnd(event) {
28312  const swiper = this;
28313  const data = swiper.touchEventsData;
28314  const {
28315    params,
28316    touches,
28317    rtlTranslate: rtl,
28318    slidesGrid,
28319    enabled
28320  } = swiper;
28321  if (!enabled) return;
28322  let e = event;
28323  if (e.originalEvent) e = e.originalEvent;
28324
28325  if (data.allowTouchCallbacks) {
28326    swiper.emit('touchEnd', e);
28327  }
28328
28329  data.allowTouchCallbacks = false;
28330
28331  if (!data.isTouched) {
28332    if (data.isMoved && params.grabCursor) {
28333      swiper.setGrabCursor(false);
28334    }
28335
28336    data.isMoved = false;
28337    data.startMoving = false;
28338    return;
28339  } // Return Grab Cursor
28340
28341
28342  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
28343    swiper.setGrabCursor(false);
28344  } // Time diff
28345
28346
28347  const touchEndTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])();
28348  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click
28349
28350  if (swiper.allowClick) {
28351    const pathTree = e.path || e.composedPath && e.composedPath();
28352    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);
28353    swiper.emit('tap click', e);
28354
28355    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
28356      swiper.emit('doubleTap doubleClick', e);
28357    }
28358  }
28359
28360  data.lastClickTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])();
28361  Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["nextTick"])(() => {
28362    if (!swiper.destroyed) swiper.allowClick = true;
28363  });
28364
28365  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
28366    data.isTouched = false;
28367    data.isMoved = false;
28368    data.startMoving = false;
28369    return;
28370  }
28371
28372  data.isTouched = false;
28373  data.isMoved = false;
28374  data.startMoving = false;
28375  let currentPos;
28376
28377  if (params.followFinger) {
28378    currentPos = rtl ? swiper.translate : -swiper.translate;
28379  } else {
28380    currentPos = -data.currentTranslate;
28381  }
28382
28383  if (params.cssMode) {
28384    return;
28385  }
28386
28387  if (swiper.params.freeMode && params.freeMode.enabled) {
28388    swiper.freeMode.onTouchEnd({
28389      currentPos
28390    });
28391    return;
28392  } // Find current slide
28393
28394
28395  let stopIndex = 0;
28396  let groupSize = swiper.slidesSizesGrid[0];
28397
28398  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
28399    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
28400
28401    if (typeof slidesGrid[i + increment] !== 'undefined') {
28402      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {
28403        stopIndex = i;
28404        groupSize = slidesGrid[i + increment] - slidesGrid[i];
28405      }
28406    } else if (currentPos >= slidesGrid[i]) {
28407      stopIndex = i;
28408      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
28409    }
28410  }
28411
28412  let rewindFirstIndex = null;
28413  let rewindLastIndex = null;
28414
28415  if (params.rewind) {
28416    if (swiper.isBeginning) {
28417      rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
28418    } else if (swiper.isEnd) {
28419      rewindFirstIndex = 0;
28420    }
28421  } // Find current slide size
28422
28423
28424  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
28425  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
28426
28427  if (timeDiff > params.longSwipesMs) {
28428    // Long touches
28429    if (!params.longSwipes) {
28430      swiper.slideTo(swiper.activeIndex);
28431      return;
28432    }
28433
28434    if (swiper.swipeDirection === 'next') {
28435      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);
28436    }
28437
28438    if (swiper.swipeDirection === 'prev') {
28439      if (ratio > 1 - params.longSwipesRatio) {
28440        swiper.slideTo(stopIndex + increment);
28441      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
28442        swiper.slideTo(rewindLastIndex);
28443      } else {
28444        swiper.slideTo(stopIndex);
28445      }
28446    }
28447  } else {
28448    // Short swipes
28449    if (!params.shortSwipes) {
28450      swiper.slideTo(swiper.activeIndex);
28451      return;
28452    }
28453
28454    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
28455
28456    if (!isNavButtonTarget) {
28457      if (swiper.swipeDirection === 'next') {
28458        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
28459      }
28460
28461      if (swiper.swipeDirection === 'prev') {
28462        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
28463      }
28464    } else if (e.target === swiper.navigation.nextEl) {
28465      swiper.slideTo(stopIndex + increment);
28466    } else {
28467      swiper.slideTo(stopIndex);
28468    }
28469  }
28470}
28471
28472/***/ }),
28473
vendor: 7,818 bytes, lines 28474-28712
28474/***/ "./node_modules/swiper/core/events/onTouchMove.js":
28475/*!********************************************************!*\
28476  !*** ./node_modules/swiper/core/events/onTouchMove.js ***!
28477  \********************************************************/
28478/*! exports provided: default */
28479/***/ (function(module, __webpack_exports__, __webpack_require__) {
28480
28481"use strict";
28482__webpack_require__.r(__webpack_exports__);
28483/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onTouchMove; });
28484/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
28485/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
28486/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
28487
28488
28489
28490function onTouchMove(event) {
28491  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
28492  const swiper = this;
28493  const data = swiper.touchEventsData;
28494  const {
28495    params,
28496    touches,
28497    rtlTranslate: rtl,
28498    enabled
28499  } = swiper;
28500  if (!enabled) return;
28501  let e = event;
28502  if (e.originalEvent) e = e.originalEvent;
28503
28504  if (!data.isTouched) {
28505    if (data.startMoving && data.isScrolling) {
28506      swiper.emit('touchMoveOpposite', e);
28507    }
28508
28509    return;
28510  }
28511
28512  if (data.isTouchEvent && e.type !== 'touchmove') return;
28513  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
28514  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
28515  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
28516
28517  if (e.preventedByNestedSwiper) {
28518    touches.startX = pageX;
28519    touches.startY = pageY;
28520    return;
28521  }
28522
28523  if (!swiper.allowTouchMove) {
28524    if (!Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
28525      swiper.allowClick = false;
28526    }
28527
28528    if (data.isTouched) {
28529      Object.assign(touches, {
28530        startX: pageX,
28531        startY: pageY,
28532        currentX: pageX,
28533        currentY: pageY
28534      });
28535      data.touchStartTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])();
28536    }
28537
28538    return;
28539  }
28540
28541  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
28542    if (swiper.isVertical()) {
28543      // Vertical
28544      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
28545        data.isTouched = false;
28546        data.isMoved = false;
28547        return;
28548      }
28549    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
28550      return;
28551    }
28552  }
28553
28554  if (data.isTouchEvent && document.activeElement) {
28555    if (e.target === document.activeElement && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) {
28556      data.isMoved = true;
28557      swiper.allowClick = false;
28558      return;
28559    }
28560  }
28561
28562  if (data.allowTouchCallbacks) {
28563    swiper.emit('touchMove', e);
28564  }
28565
28566  if (e.targetTouches && e.targetTouches.length > 1) return;
28567  touches.currentX = pageX;
28568  touches.currentY = pageY;
28569  const diffX = touches.currentX - touches.startX;
28570  const diffY = touches.currentY - touches.startY;
28571  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
28572
28573  if (typeof data.isScrolling === 'undefined') {
28574    let touchAngle;
28575
28576    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
28577      data.isScrolling = false;
28578    } else {
28579      // eslint-disable-next-line
28580      if (diffX * diffX + diffY * diffY >= 25) {
28581        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
28582        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
28583      }
28584    }
28585  }
28586
28587  if (data.isScrolling) {
28588    swiper.emit('touchMoveOpposite', e);
28589  }
28590
28591  if (typeof data.startMoving === 'undefined') {
28592    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
28593      data.startMoving = true;
28594    }
28595  }
28596
28597  if (data.isScrolling) {
28598    data.isTouched = false;
28599    return;
28600  }
28601
28602  if (!data.startMoving) {
28603    return;
28604  }
28605
28606  swiper.allowClick = false;
28607
28608  if (!params.cssMode && e.cancelable) {
28609    e.preventDefault();
28610  }
28611
28612  if (params.touchMoveStopPropagation && !params.nested) {
28613    e.stopPropagation();
28614  }
28615
28616  if (!data.isMoved) {
28617    if (params.loop && !params.cssMode) {
28618      swiper.loopFix();
28619    }
28620
28621    data.startTranslate = swiper.getTranslate();
28622    swiper.setTransition(0);
28623
28624    if (swiper.animating) {
28625      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
28626    }
28627
28628    data.allowMomentumBounce = false; // Grab Cursor
28629
28630    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
28631      swiper.setGrabCursor(true);
28632    }
28633
28634    swiper.emit('sliderFirstMove', e);
28635  }
28636
28637  swiper.emit('sliderMove', e);
28638  data.isMoved = true;
28639  let diff = swiper.isHorizontal() ? diffX : diffY;
28640  touches.diff = diff;
28641  diff *= params.touchRatio;
28642  if (rtl) diff = -diff;
28643  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
28644  data.currentTranslate = diff + data.startTranslate;
28645  let disableParentSwiper = true;
28646  let resistanceRatio = params.resistanceRatio;
28647
28648  if (params.touchReleaseOnEdges) {
28649    resistanceRatio = 0;
28650  }
28651
28652  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
28653    disableParentSwiper = false;
28654    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
28655  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
28656    disableParentSwiper = false;
28657    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
28658  }
28659
28660  if (disableParentSwiper) {
28661    e.preventedByNestedSwiper = true;
28662  } // Directions locks
28663
28664
28665  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
28666    data.currentTranslate = data.startTranslate;
28667  }
28668
28669  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
28670    data.currentTranslate = data.startTranslate;
28671  }
28672
28673  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
28674    data.currentTranslate = data.startTranslate;
28675  } // Threshold
28676
28677
28678  if (params.threshold > 0) {
28679    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
28680      if (!data.allowThresholdMove) {
28681        data.allowThresholdMove = true;
28682        touches.startX = touches.currentX;
28683        touches.startY = touches.currentY;
28684        data.currentTranslate = data.startTranslate;
28685        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
28686        return;
28687      }
28688    } else {
28689      data.currentTranslate = data.startTranslate;
28690      return;
28691    }
28692  }
28693
28694  if (!params.followFinger || params.cssMode) return; // Update active index in free mode
28695
28696  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
28697    swiper.updateActiveIndex();
28698    swiper.updateSlidesClasses();
28699  }
28700
28701  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {
28702    swiper.freeMode.onTouchMove();
28703  } // Update progress
28704
28705
28706  swiper.updateProgress(data.currentTranslate); // Update translate
28707
28708  swiper.setTranslate(data.currentTranslate);
28709}
28710
28711/***/ }),
28712
vendor: 5,764 bytes, lines 28713-28860
28713/***/ "./node_modules/swiper/core/events/onTouchStart.js":
28714/*!*********************************************************!*\
28715  !*** ./node_modules/swiper/core/events/onTouchStart.js ***!
28716  \*********************************************************/
28717/*! exports provided: default */
28718/***/ (function(module, __webpack_exports__, __webpack_require__) {
28719
28720"use strict";
28721__webpack_require__.r(__webpack_exports__);
28722/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onTouchStart; });
28723/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
28724/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
28725/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
28726
28727
28728 // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd
28729
28730function closestElement(selector, base = this) {
28731  function __closestFrom(el) {
28732    if (!el || el === Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])() || el === Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])()) return null;
28733    if (el.assignedSlot) el = el.assignedSlot;
28734    const found = el.closest(selector);
28735
28736    if (!found && !el.getRootNode) {
28737      return null;
28738    }
28739
28740    return found || __closestFrom(el.getRootNode().host);
28741  }
28742
28743  return __closestFrom(base);
28744}
28745
28746function onTouchStart(event) {
28747  const swiper = this;
28748  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
28749  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
28750  const data = swiper.touchEventsData;
28751  const {
28752    params,
28753    touches,
28754    enabled
28755  } = swiper;
28756  if (!enabled) return;
28757
28758  if (swiper.animating && params.preventInteractionOnTransition) {
28759    return;
28760  }
28761
28762  if (!swiper.animating && params.cssMode && params.loop) {
28763    swiper.loopFix();
28764  }
28765
28766  let e = event;
28767  if (e.originalEvent) e = e.originalEvent;
28768  let $targetEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
28769
28770  if (params.touchEventsTarget === 'wrapper') {
28771    if (!$targetEl.closest(swiper.wrapperEl).length) return;
28772  }
28773
28774  data.isTouchEvent = e.type === 'touchstart';
28775  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
28776  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
28777  if (data.isTouched && data.isMoved) return; // change target el for shadow root component
28778
28779  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line
28780
28781  const eventPath = event.composedPath ? event.composedPath() : event.path;
28782
28783  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
28784    $targetEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eventPath[0]);
28785  }
28786
28787  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
28788  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element
28789
28790  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {
28791    swiper.allowClick = true;
28792    return;
28793  }
28794
28795  if (params.swipeHandler) {
28796    if (!$targetEl.closest(params.swipeHandler)[0]) return;
28797  }
28798
28799  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
28800  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
28801  const startX = touches.currentX;
28802  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore
28803
28804  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
28805  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
28806
28807  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
28808    if (edgeSwipeDetection === 'prevent') {
28809      event.preventDefault();
28810    } else {
28811      return;
28812    }
28813  }
28814
28815  Object.assign(data, {
28816    isTouched: true,
28817    isMoved: false,
28818    allowTouchCallbacks: true,
28819    isScrolling: undefined,
28820    startMoving: undefined
28821  });
28822  touches.startX = startX;
28823  touches.startY = startY;
28824  data.touchStartTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])();
28825  swiper.allowClick = true;
28826  swiper.updateSize();
28827  swiper.swipeDirection = undefined;
28828  if (params.threshold > 0) data.allowThresholdMove = false;
28829
28830  if (e.type !== 'touchstart') {
28831    let preventDefault = true;
28832
28833    if ($targetEl.is(data.focusableElements)) {
28834      preventDefault = false;
28835
28836      if ($targetEl[0].nodeName === 'SELECT') {
28837        data.isTouched = false;
28838      }
28839    }
28840
28841    if (document.activeElement && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {
28842      document.activeElement.blur();
28843    }
28844
28845    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
28846
28847    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
28848      e.preventDefault();
28849    }
28850  }
28851
28852  if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
28853    swiper.freeMode.onTouchStart();
28854  }
28855
28856  swiper.emit('touchStart', e);
28857}
28858
28859/***/ }),
28860
vendor: 1,003 bytes, lines 28861-28880
28861/***/ "./node_modules/swiper/core/grab-cursor/index.js":
28862/*!*******************************************************!*\
28863  !*** ./node_modules/swiper/core/grab-cursor/index.js ***!
28864  \*******************************************************/
28865/*! exports provided: default */
28866/***/ (function(module, __webpack_exports__, __webpack_require__) {
28867
28868"use strict";
28869__webpack_require__.r(__webpack_exports__);
28870/* harmony import */ var _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js");
28871/* harmony import */ var _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsetGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js");
28872
28873
28874/* harmony default export */ __webpack_exports__["default"] = ({
28875  setGrabCursor: _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__["default"],
28876  unsetGrabCursor: _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__["default"]
28877});
28878
28879/***/ }),
28880
vendor: 939 bytes, lines 28881-28900
28881/***/ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js":
28882/*!***************************************************************!*\
28883  !*** ./node_modules/swiper/core/grab-cursor/setGrabCursor.js ***!
28884  \***************************************************************/
28885/*! exports provided: default */
28886/***/ (function(module, __webpack_exports__, __webpack_require__) {
28887
28888"use strict";
28889__webpack_require__.r(__webpack_exports__);
28890/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setGrabCursor; });
28891function setGrabCursor(moving) {
28892  const swiper = this;
28893  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
28894  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;
28895  el.style.cursor = 'move';
28896  el.style.cursor = moving ? 'grabbing' : 'grab';
28897}
28898
28899/***/ }),
28900
vendor: 852 bytes, lines 28901-28922
28901/***/ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js":
28902/*!*****************************************************************!*\
28903  !*** ./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js ***!
28904  \*****************************************************************/
28905/*! exports provided: default */
28906/***/ (function(module, __webpack_exports__, __webpack_require__) {
28907
28908"use strict";
28909__webpack_require__.r(__webpack_exports__);
28910/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return unsetGrabCursor; });
28911function unsetGrabCursor() {
28912  const swiper = this;
28913
28914  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
28915    return;
28916  }
28917
28918  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';
28919}
28920
28921/***/ }),
28922
vendor: 943 bytes, lines 28923-28942
28923/***/ "./node_modules/swiper/core/images/index.js":
28924/*!**************************************************!*\
28925  !*** ./node_modules/swiper/core/images/index.js ***!
28926  \**************************************************/
28927/*! exports provided: default */
28928/***/ (function(module, __webpack_exports__, __webpack_require__) {
28929
28930"use strict";
28931__webpack_require__.r(__webpack_exports__);
28932/* harmony import */ var _loadImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadImage.js */ "./node_modules/swiper/core/images/loadImage.js");
28933/* harmony import */ var _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./preloadImages.js */ "./node_modules/swiper/core/images/preloadImages.js");
28934
28935
28936/* harmony default export */ __webpack_exports__["default"] = ({
28937  loadImage: _loadImage_js__WEBPACK_IMPORTED_MODULE_0__["default"],
28938  preloadImages: _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__["default"]
28939});
28940
28941/***/ }),
28942
vendor: 1,627 bytes, lines 28943-28994
28943/***/ "./node_modules/swiper/core/images/loadImage.js":
28944/*!******************************************************!*\
28945  !*** ./node_modules/swiper/core/images/loadImage.js ***!
28946  \******************************************************/
28947/*! exports provided: default */
28948/***/ (function(module, __webpack_exports__, __webpack_require__) {
28949
28950"use strict";
28951__webpack_require__.r(__webpack_exports__);
28952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loadImage; });
28953/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
28954/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
28955
28956
28957function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
28958  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
28959  let image;
28960
28961  function onReady() {
28962    if (callback) callback();
28963  }
28964
28965  const isPicture = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl).parent('picture')[0];
28966
28967  if (!isPicture && (!imageEl.complete || !checkForComplete)) {
28968    if (src) {
28969      image = new window.Image();
28970      image.onload = onReady;
28971      image.onerror = onReady;
28972
28973      if (sizes) {
28974        image.sizes = sizes;
28975      }
28976
28977      if (srcset) {
28978        image.srcset = srcset;
28979      }
28980
28981      if (src) {
28982        image.src = src;
28983      }
28984    } else {
28985      onReady();
28986    }
28987  } else {
28988    // image already loaded...
28989    onReady();
28990  }
28991}
28992
28993/***/ }),
28994
vendor: 1,310 bytes, lines 28995-29026
28995/***/ "./node_modules/swiper/core/images/preloadImages.js":
28996/*!**********************************************************!*\
28997  !*** ./node_modules/swiper/core/images/preloadImages.js ***!
28998  \**********************************************************/
28999/*! exports provided: default */
29000/***/ (function(module, __webpack_exports__, __webpack_require__) {
29001
29002"use strict";
29003__webpack_require__.r(__webpack_exports__);
29004/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return preloadImages; });
29005function preloadImages() {
29006  const swiper = this;
29007  swiper.imagesToLoad = swiper.$el.find('img');
29008
29009  function onReady() {
29010    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
29011    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
29012
29013    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
29014      if (swiper.params.updateOnImagesReady) swiper.update();
29015      swiper.emit('imagesReady');
29016    }
29017  }
29018
29019  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {
29020    const imageEl = swiper.imagesToLoad[i];
29021    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
29022  }
29023}
29024
29025/***/ }),
29026
vendor: 1,146 bytes, lines 29027-29049
29027/***/ "./node_modules/swiper/core/loop/index.js":
29028/*!************************************************!*\
29029  !*** ./node_modules/swiper/core/loop/index.js ***!
29030  \************************************************/
29031/*! exports provided: default */
29032/***/ (function(module, __webpack_exports__, __webpack_require__) {
29033
29034"use strict";
29035__webpack_require__.r(__webpack_exports__);
29036/* harmony import */ var _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loopCreate.js */ "./node_modules/swiper/core/loop/loopCreate.js");
29037/* harmony import */ var _loopFix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loopFix.js */ "./node_modules/swiper/core/loop/loopFix.js");
29038/* harmony import */ var _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loopDestroy.js */ "./node_modules/swiper/core/loop/loopDestroy.js");
29039
29040
29041
29042/* harmony default export */ __webpack_exports__["default"] = ({
29043  loopCreate: _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
29044  loopFix: _loopFix_js__WEBPACK_IMPORTED_MODULE_1__["default"],
29045  loopDestroy: _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__["default"]
29046});
29047
29048/***/ }),
29049
vendor: 3,178 bytes, lines 29050-29120
29050/***/ "./node_modules/swiper/core/loop/loopCreate.js":
29051/*!*****************************************************!*\
29052  !*** ./node_modules/swiper/core/loop/loopCreate.js ***!
29053  \*****************************************************/
29054/*! exports provided: default */
29055/***/ (function(module, __webpack_exports__, __webpack_require__) {
29056
29057"use strict";
29058__webpack_require__.r(__webpack_exports__);
29059/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loopCreate; });
29060/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
29061/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
29062
29063
29064function loopCreate() {
29065  const swiper = this;
29066  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
29067  const {
29068    params,
29069    $wrapperEl
29070  } = swiper; // Remove duplicated slides
29071
29072  const $selector = $wrapperEl.children().length > 0 ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($wrapperEl.children()[0].parentNode) : $wrapperEl;
29073  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
29074  let slides = $selector.children(`.${params.slideClass}`);
29075
29076  if (params.loopFillGroupWithBlank) {
29077    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
29078
29079    if (blankSlidesNum !== params.slidesPerGroup) {
29080      for (let i = 0; i < blankSlidesNum; i += 1) {
29081        const blankNode = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
29082        $selector.append(blankNode);
29083      }
29084
29085      slides = $selector.children(`.${params.slideClass}`);
29086    }
29087  }
29088
29089  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
29090  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
29091  swiper.loopedSlides += params.loopAdditionalSlides;
29092
29093  if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {
29094    swiper.loopedSlides = slides.length;
29095  }
29096
29097  const prependSlides = [];
29098  const appendSlides = [];
29099  slides.each((el, index) => {
29100    const slide = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
29101    slide.attr('data-swiper-slide-index', index);
29102  });
29103
29104  for (let i = 0; i < swiper.loopedSlides; i += 1) {
29105    const index = i - Math.floor(i / slides.length) * slides.length;
29106    appendSlides.push(slides.eq(index)[0]);
29107    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);
29108  }
29109
29110  for (let i = 0; i < appendSlides.length; i += 1) {
29111    $selector.append(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
29112  }
29113
29114  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {
29115    $selector.prepend(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
29116  }
29117}
29118
29119/***/ }),
29120
vendor: 825 bytes, lines 29121-29143
29121/***/ "./node_modules/swiper/core/loop/loopDestroy.js":
29122/*!******************************************************!*\
29123  !*** ./node_modules/swiper/core/loop/loopDestroy.js ***!
29124  \******************************************************/
29125/*! exports provided: default */
29126/***/ (function(module, __webpack_exports__, __webpack_require__) {
29127
29128"use strict";
29129__webpack_require__.r(__webpack_exports__);
29130/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loopDestroy; });
29131function loopDestroy() {
29132  const swiper = this;
29133  const {
29134    $wrapperEl,
29135    params,
29136    slides
29137  } = swiper;
29138  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
29139  slides.removeAttr('data-swiper-slide-index');
29140}
29141
29142/***/ }),
29143
vendor: 1,763 bytes, lines 29144-29197
29144/***/ "./node_modules/swiper/core/loop/loopFix.js":
29145/*!**************************************************!*\
29146  !*** ./node_modules/swiper/core/loop/loopFix.js ***!
29147  \**************************************************/
29148/*! exports provided: default */
29149/***/ (function(module, __webpack_exports__, __webpack_require__) {
29150
29151"use strict";
29152__webpack_require__.r(__webpack_exports__);
29153/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loopFix; });
29154function loopFix() {
29155  const swiper = this;
29156  swiper.emit('beforeLoopFix');
29157  const {
29158    activeIndex,
29159    slides,
29160    loopedSlides,
29161    allowSlidePrev,
29162    allowSlideNext,
29163    snapGrid,
29164    rtlTranslate: rtl
29165  } = swiper;
29166  let newIndex;
29167  swiper.allowSlidePrev = true;
29168  swiper.allowSlideNext = true;
29169  const snapTranslate = -snapGrid[activeIndex];
29170  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding
29171
29172  if (activeIndex < loopedSlides) {
29173    newIndex = slides.length - loopedSlides * 3 + activeIndex;
29174    newIndex += loopedSlides;
29175    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
29176
29177    if (slideChanged && diff !== 0) {
29178      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
29179    }
29180  } else if (activeIndex >= slides.length - loopedSlides) {
29181    // Fix For Positive Oversliding
29182    newIndex = -slides.length + activeIndex + loopedSlides;
29183    newIndex += loopedSlides;
29184    const slideChanged = swiper.slideTo(newIndex, 0, false, true);
29185
29186    if (slideChanged && diff !== 0) {
29187      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
29188    }
29189  }
29190
29191  swiper.allowSlidePrev = allowSlidePrev;
29192  swiper.allowSlideNext = allowSlideNext;
29193  swiper.emit('loopFix');
29194}
29195
29196/***/ }),
29197
vendor: 1,914 bytes, lines 29198-29249
29198/***/ "./node_modules/swiper/core/moduleExtendParams.js":
29199/*!********************************************************!*\
29200  !*** ./node_modules/swiper/core/moduleExtendParams.js ***!
29201  \********************************************************/
29202/*! exports provided: default */
29203/***/ (function(module, __webpack_exports__, __webpack_require__) {
29204
29205"use strict";
29206__webpack_require__.r(__webpack_exports__);
29207/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return moduleExtendParams; });
29208/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
29209
29210function moduleExtendParams(params, allModulesParams) {
29211  return function extendParams(obj = {}) {
29212    const moduleParamName = Object.keys(obj)[0];
29213    const moduleParams = obj[moduleParamName];
29214
29215    if (typeof moduleParams !== 'object' || moduleParams === null) {
29216      Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(allModulesParams, obj);
29217      return;
29218    }
29219
29220    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {
29221      params[moduleParamName] = {
29222        auto: true
29223      };
29224    }
29225
29226    if (!(moduleParamName in params && 'enabled' in moduleParams)) {
29227      Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(allModulesParams, obj);
29228      return;
29229    }
29230
29231    if (params[moduleParamName] === true) {
29232      params[moduleParamName] = {
29233        enabled: true
29234      };
29235    }
29236
29237    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
29238      params[moduleParamName].enabled = true;
29239    }
29240
29241    if (!params[moduleParamName]) params[moduleParamName] = {
29242      enabled: false
29243    };
29244    Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(allModulesParams, obj);
29245  };
29246}
29247
29248/***/ }),
29249
vendor: 2,751 bytes, lines 29250-29338
29250/***/ "./node_modules/swiper/core/modules/observer/observer.js":
29251/*!***************************************************************!*\
29252  !*** ./node_modules/swiper/core/modules/observer/observer.js ***!
29253  \***************************************************************/
29254/*! exports provided: default */
29255/***/ (function(module, __webpack_exports__, __webpack_require__) {
29256
29257"use strict";
29258__webpack_require__.r(__webpack_exports__);
29259/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Observer; });
29260/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
29261
29262function Observer({
29263  swiper,
29264  extendParams,
29265  on,
29266  emit
29267}) {
29268  const observers = [];
29269  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
29270
29271  const attach = (target, options = {}) => {
29272    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
29273    const observer = new ObserverFunc(mutations => {
29274      // The observerUpdate event should only be triggered
29275      // once despite the number of mutations.  Additional
29276      // triggers are redundant and are very costly
29277      if (mutations.length === 1) {
29278        emit('observerUpdate', mutations[0]);
29279        return;
29280      }
29281
29282      const observerUpdate = function observerUpdate() {
29283        emit('observerUpdate', mutations[0]);
29284      };
29285
29286      if (window.requestAnimationFrame) {
29287        window.requestAnimationFrame(observerUpdate);
29288      } else {
29289        window.setTimeout(observerUpdate, 0);
29290      }
29291    });
29292    observer.observe(target, {
29293      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
29294      childList: typeof options.childList === 'undefined' ? true : options.childList,
29295      characterData: typeof options.characterData === 'undefined' ? true : options.characterData
29296    });
29297    observers.push(observer);
29298  };
29299
29300  const init = () => {
29301    if (!swiper.params.observer) return;
29302
29303    if (swiper.params.observeParents) {
29304      const containerParents = swiper.$el.parents();
29305
29306      for (let i = 0; i < containerParents.length; i += 1) {
29307        attach(containerParents[i]);
29308      }
29309    } // Observe container
29310
29311
29312    attach(swiper.$el[0], {
29313      childList: swiper.params.observeSlideChildren
29314    }); // Observe wrapper
29315
29316    attach(swiper.$wrapperEl[0], {
29317      attributes: false
29318    });
29319  };
29320
29321  const destroy = () => {
29322    observers.forEach(observer => {
29323      observer.disconnect();
29324    });
29325    observers.splice(0, observers.length);
29326  };
29327
29328  extendParams({
29329    observer: false,
29330    observeParents: false,
29331    observeSlideChildren: false
29332  });
29333  on('init', init);
29334  on('destroy', destroy);
29335}
29336
29337/***/ }),
29338
vendor: 2,781 bytes, lines 29339-29427
29339/***/ "./node_modules/swiper/core/modules/resize/resize.js":
29340/*!***********************************************************!*\
29341  !*** ./node_modules/swiper/core/modules/resize/resize.js ***!
29342  \***********************************************************/
29343/*! exports provided: default */
29344/***/ (function(module, __webpack_exports__, __webpack_require__) {
29345
29346"use strict";
29347__webpack_require__.r(__webpack_exports__);
29348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Resize; });
29349/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
29350
29351function Resize({
29352  swiper,
29353  on,
29354  emit
29355}) {
29356  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
29357  let observer = null;
29358  let animationFrame = null;
29359
29360  const resizeHandler = () => {
29361    if (!swiper || swiper.destroyed || !swiper.initialized) return;
29362    emit('beforeResize');
29363    emit('resize');
29364  };
29365
29366  const createObserver = () => {
29367    if (!swiper || swiper.destroyed || !swiper.initialized) return;
29368    observer = new ResizeObserver(entries => {
29369      animationFrame = window.requestAnimationFrame(() => {
29370        const {
29371          width,
29372          height
29373        } = swiper;
29374        let newWidth = width;
29375        let newHeight = height;
29376        entries.forEach(({
29377          contentBoxSize,
29378          contentRect,
29379          target
29380        }) => {
29381          if (target && target !== swiper.el) return;
29382          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
29383          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
29384        });
29385
29386        if (newWidth !== width || newHeight !== height) {
29387          resizeHandler();
29388        }
29389      });
29390    });
29391    observer.observe(swiper.el);
29392  };
29393
29394  const removeObserver = () => {
29395    if (animationFrame) {
29396      window.cancelAnimationFrame(animationFrame);
29397    }
29398
29399    if (observer && observer.unobserve && swiper.el) {
29400      observer.unobserve(swiper.el);
29401      observer = null;
29402    }
29403  };
29404
29405  const orientationChangeHandler = () => {
29406    if (!swiper || swiper.destroyed || !swiper.initialized) return;
29407    emit('orientationchange');
29408  };
29409
29410  on('init', () => {
29411    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {
29412      createObserver();
29413      return;
29414    }
29415
29416    window.addEventListener('resize', resizeHandler);
29417    window.addEventListener('orientationchange', orientationChangeHandler);
29418  });
29419  on('destroy', () => {
29420    removeObserver();
29421    window.removeEventListener('resize', resizeHandler);
29422    window.removeEventListener('orientationchange', orientationChangeHandler);
29423  });
29424}
29425
29426/***/ }),
29427
vendor: 2,152 bytes, lines 29428-29462
29428/***/ "./node_modules/swiper/core/slide/index.js":
29429/*!*************************************************!*\
29430  !*** ./node_modules/swiper/core/slide/index.js ***!
29431  \*************************************************/
29432/*! exports provided: default */
29433/***/ (function(module, __webpack_exports__, __webpack_require__) {
29434
29435"use strict";
29436__webpack_require__.r(__webpack_exports__);
29437/* harmony import */ var _slideTo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slideTo.js */ "./node_modules/swiper/core/slide/slideTo.js");
29438/* harmony import */ var _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slideToLoop.js */ "./node_modules/swiper/core/slide/slideToLoop.js");
29439/* harmony import */ var _slideNext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slideNext.js */ "./node_modules/swiper/core/slide/slideNext.js");
29440/* harmony import */ var _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slidePrev.js */ "./node_modules/swiper/core/slide/slidePrev.js");
29441/* harmony import */ var _slideReset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./slideReset.js */ "./node_modules/swiper/core/slide/slideReset.js");
29442/* harmony import */ var _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./slideToClosest.js */ "./node_modules/swiper/core/slide/slideToClosest.js");
29443/* harmony import */ var _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./slideToClickedSlide.js */ "./node_modules/swiper/core/slide/slideToClickedSlide.js");
29444
29445
29446
29447
29448
29449
29450
29451/* harmony default export */ __webpack_exports__["default"] = ({
29452  slideTo: _slideTo_js__WEBPACK_IMPORTED_MODULE_0__["default"],
29453  slideToLoop: _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__["default"],
29454  slideNext: _slideNext_js__WEBPACK_IMPORTED_MODULE_2__["default"],
29455  slidePrev: _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__["default"],
29456  slideReset: _slideReset_js__WEBPACK_IMPORTED_MODULE_4__["default"],
29457  slideToClosest: _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__["default"],
29458  slideToClickedSlide: _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__["default"]
29459});
29460
29461/***/ }),
29462
vendor: 1,450 bytes, lines 29463-29505
29463/***/ "./node_modules/swiper/core/slide/slideNext.js":
29464/*!*****************************************************!*\
29465  !*** ./node_modules/swiper/core/slide/slideNext.js ***!
29466  \*****************************************************/
29467/*! exports provided: default */
29468/***/ (function(module, __webpack_exports__, __webpack_require__) {
29469
29470"use strict";
29471__webpack_require__.r(__webpack_exports__);
29472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideNext; });
29473/* eslint no-unused-vars: "off" */
29474function slideNext(speed = this.params.speed, runCallbacks = true, internal) {
29475  const swiper = this;
29476  const {
29477    animating,
29478    enabled,
29479    params
29480  } = swiper;
29481  if (!enabled) return swiper;
29482  let perGroup = params.slidesPerGroup;
29483
29484  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
29485    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);
29486  }
29487
29488  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
29489
29490  if (params.loop) {
29491    if (animating && params.loopPreventsSlide) return false;
29492    swiper.loopFix(); // eslint-disable-next-line
29493
29494    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
29495  }
29496
29497  if (params.rewind && swiper.isEnd) {
29498    return swiper.slideTo(0, speed, runCallbacks, internal);
29499  }
29500
29501  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
29502}
29503
29504/***/ }),
29505
vendor: 2,525 bytes, lines 29506-29582
29506/***/ "./node_modules/swiper/core/slide/slidePrev.js":
29507/*!*****************************************************!*\
29508  !*** ./node_modules/swiper/core/slide/slidePrev.js ***!
29509  \*****************************************************/
29510/*! exports provided: default */
29511/***/ (function(module, __webpack_exports__, __webpack_require__) {
29512
29513"use strict";
29514__webpack_require__.r(__webpack_exports__);
29515/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slidePrev; });
29516/* eslint no-unused-vars: "off" */
29517function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {
29518  const swiper = this;
29519  const {
29520    params,
29521    animating,
29522    snapGrid,
29523    slidesGrid,
29524    rtlTranslate,
29525    enabled
29526  } = swiper;
29527  if (!enabled) return swiper;
29528
29529  if (params.loop) {
29530    if (animating && params.loopPreventsSlide) return false;
29531    swiper.loopFix(); // eslint-disable-next-line
29532
29533    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
29534  }
29535
29536  const translate = rtlTranslate ? swiper.translate : -swiper.translate;
29537
29538  function normalize(val) {
29539    if (val < 0) return -Math.floor(Math.abs(val));
29540    return Math.floor(val);
29541  }
29542
29543  const normalizedTranslate = normalize(translate);
29544  const normalizedSnapGrid = snapGrid.map(val => normalize(val));
29545  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
29546
29547  if (typeof prevSnap === 'undefined' && params.cssMode) {
29548    let prevSnapIndex;
29549    snapGrid.forEach((snap, snapIndex) => {
29550      if (normalizedTranslate >= snap) {
29551        // prevSnap = snap;
29552        prevSnapIndex = snapIndex;
29553      }
29554    });
29555
29556    if (typeof prevSnapIndex !== 'undefined') {
29557      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
29558    }
29559  }
29560
29561  let prevIndex = 0;
29562
29563  if (typeof prevSnap !== 'undefined') {
29564    prevIndex = slidesGrid.indexOf(prevSnap);
29565    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
29566
29567    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
29568      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
29569      prevIndex = Math.max(prevIndex, 0);
29570    }
29571  }
29572
29573  if (params.rewind && swiper.isBeginning) {
29574    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
29575    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
29576  }
29577
29578  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
29579}
29580
29581/***/ }),
29582
vendor: 744 bytes, lines 29583-29600
29583/***/ "./node_modules/swiper/core/slide/slideReset.js":
29584/*!******************************************************!*\
29585  !*** ./node_modules/swiper/core/slide/slideReset.js ***!
29586  \******************************************************/
29587/*! exports provided: default */
29588/***/ (function(module, __webpack_exports__, __webpack_require__) {
29589
29590"use strict";
29591__webpack_require__.r(__webpack_exports__);
29592/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideReset; });
29593/* eslint no-unused-vars: "off" */
29594function slideReset(speed = this.params.speed, runCallbacks = true, internal) {
29595  const swiper = this;
29596  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
29597}
29598
29599/***/ }),
29600
vendor: 6,461 bytes, lines 29601-29794
29601/***/ "./node_modules/swiper/core/slide/slideTo.js":
29602/*!***************************************************!*\
29603  !*** ./node_modules/swiper/core/slide/slideTo.js ***!
29604  \***************************************************/
29605/*! exports provided: default */
29606/***/ (function(module, __webpack_exports__, __webpack_require__) {
29607
29608"use strict";
29609__webpack_require__.r(__webpack_exports__);
29610/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideTo; });
29611/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
29612
29613function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {
29614  if (typeof index !== 'number' && typeof index !== 'string') {
29615    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);
29616  }
29617
29618  if (typeof index === 'string') {
29619    /**
29620     * The `index` argument converted from `string` to `number`.
29621     * @type {number}
29622     */
29623    const indexAsNumber = parseInt(index, 10);
29624    /**
29625     * Determines whether the `index` argument is a valid `number`
29626     * after being converted from the `string` type.
29627     * @type {boolean}
29628     */
29629
29630    const isValidNumber = isFinite(indexAsNumber);
29631
29632    if (!isValidNumber) {
29633      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
29634    } // Knowing that the converted `index` is a valid number,
29635    // we can update the original argument's value.
29636
29637
29638    index = indexAsNumber;
29639  }
29640
29641  const swiper = this;
29642  let slideIndex = index;
29643  if (slideIndex < 0) slideIndex = 0;
29644  const {
29645    params,
29646    snapGrid,
29647    slidesGrid,
29648    previousIndex,
29649    activeIndex,
29650    rtlTranslate: rtl,
29651    wrapperEl,
29652    enabled
29653  } = swiper;
29654
29655  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
29656    return false;
29657  }
29658
29659  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
29660  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
29661  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
29662  const translate = -snapGrid[snapIndex]; // Normalize slideIndex
29663
29664  if (params.normalizeSlideIndex) {
29665    for (let i = 0; i < slidesGrid.length; i += 1) {
29666      const normalizedTranslate = -Math.floor(translate * 100);
29667      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
29668      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
29669
29670      if (typeof slidesGrid[i + 1] !== 'undefined') {
29671        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
29672          slideIndex = i;
29673        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
29674          slideIndex = i + 1;
29675        }
29676      } else if (normalizedTranslate >= normalizedGrid) {
29677        slideIndex = i;
29678      }
29679    }
29680  } // Directions locks
29681
29682
29683  if (swiper.initialized && slideIndex !== activeIndex) {
29684    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
29685      return false;
29686    }
29687
29688    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
29689      if ((activeIndex || 0) !== slideIndex) return false;
29690    }
29691  }
29692
29693  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
29694    swiper.emit('beforeSlideChangeStart');
29695  } // Update progress
29696
29697
29698  swiper.updateProgress(translate);
29699  let direction;
29700  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
29701
29702  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
29703    swiper.updateActiveIndex(slideIndex); // Update Height
29704
29705    if (params.autoHeight) {
29706      swiper.updateAutoHeight();
29707    }
29708
29709    swiper.updateSlidesClasses();
29710
29711    if (params.effect !== 'slide') {
29712      swiper.setTranslate(translate);
29713    }
29714
29715    if (direction !== 'reset') {
29716      swiper.transitionStart(runCallbacks, direction);
29717      swiper.transitionEnd(runCallbacks, direction);
29718    }
29719
29720    return false;
29721  }
29722
29723  if (params.cssMode) {
29724    const isH = swiper.isHorizontal();
29725    const t = rtl ? translate : -translate;
29726
29727    if (speed === 0) {
29728      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
29729
29730      if (isVirtual) {
29731        swiper.wrapperEl.style.scrollSnapType = 'none';
29732        swiper._immediateVirtual = true;
29733      }
29734
29735      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
29736
29737      if (isVirtual) {
29738        requestAnimationFrame(() => {
29739          swiper.wrapperEl.style.scrollSnapType = '';
29740          swiper._swiperImmediateVirtual = false;
29741        });
29742      }
29743    } else {
29744      if (!swiper.support.smoothScroll) {
29745        Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["animateCSSModeScroll"])({
29746          swiper,
29747          targetPosition: t,
29748          side: isH ? 'left' : 'top'
29749        });
29750        return true;
29751      }
29752
29753      wrapperEl.scrollTo({
29754        [isH ? 'left' : 'top']: t,
29755        behavior: 'smooth'
29756      });
29757    }
29758
29759    return true;
29760  }
29761
29762  swiper.setTransition(speed);
29763  swiper.setTranslate(translate);
29764  swiper.updateActiveIndex(slideIndex);
29765  swiper.updateSlidesClasses();
29766  swiper.emit('beforeTransitionStart', speed, internal);
29767  swiper.transitionStart(runCallbacks, direction);
29768
29769  if (speed === 0) {
29770    swiper.transitionEnd(runCallbacks, direction);
29771  } else if (!swiper.animating) {
29772    swiper.animating = true;
29773
29774    if (!swiper.onSlideToWrapperTransitionEnd) {
29775      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
29776        if (!swiper || swiper.destroyed) return;
29777        if (e.target !== this) return;
29778        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
29779        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
29780        swiper.onSlideToWrapperTransitionEnd = null;
29781        delete swiper.onSlideToWrapperTransitionEnd;
29782        swiper.transitionEnd(runCallbacks, direction);
29783      };
29784    }
29785
29786    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
29787    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
29788  }
29789
29790  return true;
29791}
29792
29793/***/ }),
29794
vendor: 2,426 bytes, lines 29795-29848
29795/***/ "./node_modules/swiper/core/slide/slideToClickedSlide.js":
29796/*!***************************************************************!*\
29797  !*** ./node_modules/swiper/core/slide/slideToClickedSlide.js ***!
29798  \***************************************************************/
29799/*! exports provided: default */
29800/***/ (function(module, __webpack_exports__, __webpack_require__) {
29801
29802"use strict";
29803__webpack_require__.r(__webpack_exports__);
29804/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideToClickedSlide; });
29805/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
29806/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
29807
29808
29809function slideToClickedSlide() {
29810  const swiper = this;
29811  const {
29812    params,
29813    $wrapperEl
29814  } = swiper;
29815  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
29816  let slideToIndex = swiper.clickedIndex;
29817  let realIndex;
29818
29819  if (params.loop) {
29820    if (swiper.animating) return;
29821    realIndex = parseInt(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
29822
29823    if (params.centeredSlides) {
29824      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
29825        swiper.loopFix();
29826        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
29827        Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["nextTick"])(() => {
29828          swiper.slideTo(slideToIndex);
29829        });
29830      } else {
29831        swiper.slideTo(slideToIndex);
29832      }
29833    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
29834      swiper.loopFix();
29835      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
29836      Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["nextTick"])(() => {
29837        swiper.slideTo(slideToIndex);
29838      });
29839    } else {
29840      swiper.slideTo(slideToIndex);
29841    }
29842  } else {
29843    swiper.slideTo(slideToIndex);
29844  }
29845}
29846
29847/***/ }),
29848
vendor: 1,927 bytes, lines 29849-29893
29849/***/ "./node_modules/swiper/core/slide/slideToClosest.js":
29850/*!**********************************************************!*\
29851  !*** ./node_modules/swiper/core/slide/slideToClosest.js ***!
29852  \**********************************************************/
29853/*! exports provided: default */
29854/***/ (function(module, __webpack_exports__, __webpack_require__) {
29855
29856"use strict";
29857__webpack_require__.r(__webpack_exports__);
29858/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideToClosest; });
29859/* eslint no-unused-vars: "off" */
29860function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {
29861  const swiper = this;
29862  let index = swiper.activeIndex;
29863  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);
29864  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
29865  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
29866
29867  if (translate >= swiper.snapGrid[snapIndex]) {
29868    // The current translate is on or after the current snap index, so the choice
29869    // is between the current index and the one after it.
29870    const currentSnap = swiper.snapGrid[snapIndex];
29871    const nextSnap = swiper.snapGrid[snapIndex + 1];
29872
29873    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
29874      index += swiper.params.slidesPerGroup;
29875    }
29876  } else {
29877    // The current translate is before the current snap index, so the choice
29878    // is between the current index and the one before it.
29879    const prevSnap = swiper.snapGrid[snapIndex - 1];
29880    const currentSnap = swiper.snapGrid[snapIndex];
29881
29882    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {
29883      index -= swiper.params.slidesPerGroup;
29884    }
29885  }
29886
29887  index = Math.max(index, 0);
29888  index = Math.min(index, swiper.slidesGrid.length - 1);
29889  return swiper.slideTo(index, speed, runCallbacks, internal);
29890}
29891
29892/***/ }),
29893
vendor: 1,493 bytes, lines 29894-29939
29894/***/ "./node_modules/swiper/core/slide/slideToLoop.js":
29895/*!*******************************************************!*\
29896  !*** ./node_modules/swiper/core/slide/slideToLoop.js ***!
29897  \*******************************************************/
29898/*! exports provided: default */
29899/***/ (function(module, __webpack_exports__, __webpack_require__) {
29900
29901"use strict";
29902__webpack_require__.r(__webpack_exports__);
29903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideToLoop; });
29904function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {
29905  if (typeof index === 'string') {
29906    /**
29907     * The `index` argument converted from `string` to `number`.
29908     * @type {number}
29909     */
29910    const indexAsNumber = parseInt(index, 10);
29911    /**
29912     * Determines whether the `index` argument is a valid `number`
29913     * after being converted from the `string` type.
29914     * @type {boolean}
29915     */
29916
29917    const isValidNumber = isFinite(indexAsNumber);
29918
29919    if (!isValidNumber) {
29920      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
29921    } // Knowing that the converted `index` is a valid number,
29922    // we can update the original argument's value.
29923
29924
29925    index = indexAsNumber;
29926  }
29927
29928  const swiper = this;
29929  let newIndex = index;
29930
29931  if (swiper.params.loop) {
29932    newIndex += swiper.loopedSlides;
29933  }
29934
29935  return swiper.slideTo(newIndex, speed, runCallbacks, internal);
29936}
29937
29938/***/ }),
29939
vendor: 1,253 bytes, lines 29940-29962
29940/***/ "./node_modules/swiper/core/transition/index.js":
29941/*!******************************************************!*\
29942  !*** ./node_modules/swiper/core/transition/index.js ***!
29943  \******************************************************/
29944/*! exports provided: default */
29945/***/ (function(module, __webpack_exports__, __webpack_require__) {
29946
29947"use strict";
29948__webpack_require__.r(__webpack_exports__);
29949/* harmony import */ var _setTransition_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setTransition.js */ "./node_modules/swiper/core/transition/setTransition.js");
29950/* harmony import */ var _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitionStart.js */ "./node_modules/swiper/core/transition/transitionStart.js");
29951/* harmony import */ var _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitionEnd.js */ "./node_modules/swiper/core/transition/transitionEnd.js");
29952
29953
29954
29955/* harmony default export */ __webpack_exports__["default"] = ({
29956  setTransition: _setTransition_js__WEBPACK_IMPORTED_MODULE_0__["default"],
29957  transitionStart: _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__["default"],
29958  transitionEnd: _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__["default"]
29959});
29960
29961/***/ }),
29962
vendor: 775 bytes, lines 29963-29984
29963/***/ "./node_modules/swiper/core/transition/setTransition.js":
29964/*!**************************************************************!*\
29965  !*** ./node_modules/swiper/core/transition/setTransition.js ***!
29966  \**************************************************************/
29967/*! exports provided: default */
29968/***/ (function(module, __webpack_exports__, __webpack_require__) {
29969
29970"use strict";
29971__webpack_require__.r(__webpack_exports__);
29972/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setTransition; });
29973function setTransition(duration, byController) {
29974  const swiper = this;
29975
29976  if (!swiper.params.cssMode) {
29977    swiper.$wrapperEl.transition(duration);
29978  }
29979
29980  swiper.emit('setTransition', duration, byController);
29981}
29982
29983/***/ }),
29984
vendor: 1,257 bytes, lines 29985-30030
29985/***/ "./node_modules/swiper/core/transition/transitionEmit.js":
29986/*!***************************************************************!*\
29987  !*** ./node_modules/swiper/core/transition/transitionEmit.js ***!
29988  \***************************************************************/
29989/*! exports provided: default */
29990/***/ (function(module, __webpack_exports__, __webpack_require__) {
29991
29992"use strict";
29993__webpack_require__.r(__webpack_exports__);
29994/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transitionEmit; });
29995function transitionEmit({
29996  swiper,
29997  runCallbacks,
29998  direction,
29999  step
30000}) {
30001  const {
30002    activeIndex,
30003    previousIndex
30004  } = swiper;
30005  let dir = direction;
30006
30007  if (!dir) {
30008    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
30009  }
30010
30011  swiper.emit(`transition${step}`);
30012
30013  if (runCallbacks && activeIndex !== previousIndex) {
30014    if (dir === 'reset') {
30015      swiper.emit(`slideResetTransition${step}`);
30016      return;
30017    }
30018
30019    swiper.emit(`slideChangeTransition${step}`);
30020
30021    if (dir === 'next') {
30022      swiper.emit(`slideNextTransition${step}`);
30023    } else {
30024      swiper.emit(`slidePrevTransition${step}`);
30025    }
30026  }
30027}
30028
30029/***/ }),
30030
vendor: 1,086 bytes, lines 30031-30060
30031/***/ "./node_modules/swiper/core/transition/transitionEnd.js":
30032/*!**************************************************************!*\
30033  !*** ./node_modules/swiper/core/transition/transitionEnd.js ***!
30034  \**************************************************************/
30035/*! exports provided: default */
30036/***/ (function(module, __webpack_exports__, __webpack_require__) {
30037
30038"use strict";
30039__webpack_require__.r(__webpack_exports__);
30040/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transitionEnd; });
30041/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
30042
30043function transitionEnd(runCallbacks = true, direction) {
30044  const swiper = this;
30045  const {
30046    params
30047  } = swiper;
30048  swiper.animating = false;
30049  if (params.cssMode) return;
30050  swiper.setTransition(0);
30051  Object(_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
30052    swiper,
30053    runCallbacks,
30054    direction,
30055    step: 'End'
30056  });
30057}
30058
30059/***/ }),
30060
vendor: 1,109 bytes, lines 30061-30093
30061/***/ "./node_modules/swiper/core/transition/transitionStart.js":
30062/*!****************************************************************!*\
30063  !*** ./node_modules/swiper/core/transition/transitionStart.js ***!
30064  \****************************************************************/
30065/*! exports provided: default */
30066/***/ (function(module, __webpack_exports__, __webpack_require__) {
30067
30068"use strict";
30069__webpack_require__.r(__webpack_exports__);
30070/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transitionStart; });
30071/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js");
30072
30073function transitionStart(runCallbacks = true, direction) {
30074  const swiper = this;
30075  const {
30076    params
30077  } = swiper;
30078  if (params.cssMode) return;
30079
30080  if (params.autoHeight) {
30081    swiper.updateAutoHeight();
30082  }
30083
30084  Object(_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
30085    swiper,
30086    runCallbacks,
30087    direction,
30088    step: 'Start'
30089  });
30090}
30091
30092/***/ }),
30093
vendor: 1,238 bytes, lines 30094-30129
30094/***/ "./node_modules/swiper/core/translate/getTranslate.js":
30095/*!************************************************************!*\
30096  !*** ./node_modules/swiper/core/translate/getTranslate.js ***!
30097  \************************************************************/
30098/*! exports provided: default */
30099/***/ (function(module, __webpack_exports__, __webpack_require__) {
30100
30101"use strict";
30102__webpack_require__.r(__webpack_exports__);
30103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getSwiperTranslate; });
30104/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
30105
30106function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {
30107  const swiper = this;
30108  const {
30109    params,
30110    rtlTranslate: rtl,
30111    translate,
30112    $wrapperEl
30113  } = swiper;
30114
30115  if (params.virtualTranslate) {
30116    return rtl ? -translate : translate;
30117  }
30118
30119  if (params.cssMode) {
30120    return translate;
30121  }
30122
30123  let currentTranslate = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["getTranslate"])($wrapperEl[0], axis);
30124  if (rtl) currentTranslate = -currentTranslate;
30125  return currentTranslate || 0;
30126}
30127
30128/***/ }),
30129
vendor: 1,716 bytes, lines 30130-30158
30130/***/ "./node_modules/swiper/core/translate/index.js":
30131/*!*****************************************************!*\
30132  !*** ./node_modules/swiper/core/translate/index.js ***!
30133  \*****************************************************/
30134/*! exports provided: default */
30135/***/ (function(module, __webpack_exports__, __webpack_require__) {
30136
30137"use strict";
30138__webpack_require__.r(__webpack_exports__);
30139/* harmony import */ var _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getTranslate.js */ "./node_modules/swiper/core/translate/getTranslate.js");
30140/* harmony import */ var _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setTranslate.js */ "./node_modules/swiper/core/translate/setTranslate.js");
30141/* harmony import */ var _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minTranslate.js */ "./node_modules/swiper/core/translate/minTranslate.js");
30142/* harmony import */ var _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maxTranslate.js */ "./node_modules/swiper/core/translate/maxTranslate.js");
30143/* harmony import */ var _translateTo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./translateTo.js */ "./node_modules/swiper/core/translate/translateTo.js");
30144
30145
30146
30147
30148
30149/* harmony default export */ __webpack_exports__["default"] = ({
30150  getTranslate: _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__["default"],
30151  setTranslate: _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__["default"],
30152  minTranslate: _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__["default"],
30153  maxTranslate: _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__["default"],
30154  translateTo: _translateTo_js__WEBPACK_IMPORTED_MODULE_4__["default"]
30155});
30156
30157/***/ }),
30158
vendor: 633 bytes, lines 30159-30174
30159/***/ "./node_modules/swiper/core/translate/maxTranslate.js":
30160/*!************************************************************!*\
30161  !*** ./node_modules/swiper/core/translate/maxTranslate.js ***!
30162  \************************************************************/
30163/*! exports provided: default */
30164/***/ (function(module, __webpack_exports__, __webpack_require__) {
30165
30166"use strict";
30167__webpack_require__.r(__webpack_exports__);
30168/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return maxTranslate; });
30169function maxTranslate() {
30170  return -this.snapGrid[this.snapGrid.length - 1];
30171}
30172
30173/***/ }),
30174
vendor: 610 bytes, lines 30175-30190
30175/***/ "./node_modules/swiper/core/translate/minTranslate.js":
30176/*!************************************************************!*\
30177  !*** ./node_modules/swiper/core/translate/minTranslate.js ***!
30178  \************************************************************/
30179/*! exports provided: default */
30180/***/ (function(module, __webpack_exports__, __webpack_require__) {
30181
30182"use strict";
30183__webpack_require__.r(__webpack_exports__);
30184/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return minTranslate; });
30185function minTranslate() {
30186  return -this.snapGrid[0];
30187}
30188
30189/***/ }),
30190
vendor: 1,703 bytes, lines 30191-30251
30191/***/ "./node_modules/swiper/core/translate/setTranslate.js":
30192/*!************************************************************!*\
30193  !*** ./node_modules/swiper/core/translate/setTranslate.js ***!
30194  \************************************************************/
30195/*! exports provided: default */
30196/***/ (function(module, __webpack_exports__, __webpack_require__) {
30197
30198"use strict";
30199__webpack_require__.r(__webpack_exports__);
30200/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setTranslate; });
30201function setTranslate(translate, byController) {
30202  const swiper = this;
30203  const {
30204    rtlTranslate: rtl,
30205    params,
30206    $wrapperEl,
30207    wrapperEl,
30208    progress
30209  } = swiper;
30210  let x = 0;
30211  let y = 0;
30212  const z = 0;
30213
30214  if (swiper.isHorizontal()) {
30215    x = rtl ? -translate : translate;
30216  } else {
30217    y = translate;
30218  }
30219
30220  if (params.roundLengths) {
30221    x = Math.floor(x);
30222    y = Math.floor(y);
30223  }
30224
30225  if (params.cssMode) {
30226    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
30227  } else if (!params.virtualTranslate) {
30228    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
30229  }
30230
30231  swiper.previousTranslate = swiper.translate;
30232  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress
30233
30234  let newProgress;
30235  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
30236
30237  if (translatesDiff === 0) {
30238    newProgress = 0;
30239  } else {
30240    newProgress = (translate - swiper.minTranslate()) / translatesDiff;
30241  }
30242
30243  if (newProgress !== progress) {
30244    swiper.updateProgress(translate);
30245  }
30246
30247  swiper.emit('setTranslate', swiper.translate, byController);
30248}
30249
30250/***/ }),
30251
vendor: 3,348 bytes, lines 30252-30350
30252/***/ "./node_modules/swiper/core/translate/translateTo.js":
30253/*!***********************************************************!*\
30254  !*** ./node_modules/swiper/core/translate/translateTo.js ***!
30255  \***********************************************************/
30256/*! exports provided: default */
30257/***/ (function(module, __webpack_exports__, __webpack_require__) {
30258
30259"use strict";
30260__webpack_require__.r(__webpack_exports__);
30261/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return translateTo; });
30262/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
30263
30264function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {
30265  const swiper = this;
30266  const {
30267    params,
30268    wrapperEl
30269  } = swiper;
30270
30271  if (swiper.animating && params.preventInteractionOnTransition) {
30272    return false;
30273  }
30274
30275  const minTranslate = swiper.minTranslate();
30276  const maxTranslate = swiper.maxTranslate();
30277  let newTranslate;
30278  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress
30279
30280  swiper.updateProgress(newTranslate);
30281
30282  if (params.cssMode) {
30283    const isH = swiper.isHorizontal();
30284
30285    if (speed === 0) {
30286      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
30287    } else {
30288      if (!swiper.support.smoothScroll) {
30289        Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["animateCSSModeScroll"])({
30290          swiper,
30291          targetPosition: -newTranslate,
30292          side: isH ? 'left' : 'top'
30293        });
30294        return true;
30295      }
30296
30297      wrapperEl.scrollTo({
30298        [isH ? 'left' : 'top']: -newTranslate,
30299        behavior: 'smooth'
30300      });
30301    }
30302
30303    return true;
30304  }
30305
30306  if (speed === 0) {
30307    swiper.setTransition(0);
30308    swiper.setTranslate(newTranslate);
30309
30310    if (runCallbacks) {
30311      swiper.emit('beforeTransitionStart', speed, internal);
30312      swiper.emit('transitionEnd');
30313    }
30314  } else {
30315    swiper.setTransition(speed);
30316    swiper.setTranslate(newTranslate);
30317
30318    if (runCallbacks) {
30319      swiper.emit('beforeTransitionStart', speed, internal);
30320      swiper.emit('transitionStart');
30321    }
30322
30323    if (!swiper.animating) {
30324      swiper.animating = true;
30325
30326      if (!swiper.onTranslateToWrapperTransitionEnd) {
30327        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
30328          if (!swiper || swiper.destroyed) return;
30329          if (e.target !== this) return;
30330          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
30331          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
30332          swiper.onTranslateToWrapperTransitionEnd = null;
30333          delete swiper.onTranslateToWrapperTransitionEnd;
30334
30335          if (runCallbacks) {
30336            swiper.emit('transitionEnd');
30337          }
30338        };
30339      }
30340
30341      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
30342      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
30343    }
30344  }
30345
30346  return true;
30347}
30348
30349/***/ }),
30350
vendor: 2,862 bytes, lines 30351-30391
30351/***/ "./node_modules/swiper/core/update/index.js":
30352/*!**************************************************!*\
30353  !*** ./node_modules/swiper/core/update/index.js ***!
30354  \**************************************************/
30355/*! exports provided: default */
30356/***/ (function(module, __webpack_exports__, __webpack_require__) {
30357
30358"use strict";
30359__webpack_require__.r(__webpack_exports__);
30360/* harmony import */ var _updateSize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./updateSize.js */ "./node_modules/swiper/core/update/updateSize.js");
30361/* harmony import */ var _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateSlides.js */ "./node_modules/swiper/core/update/updateSlides.js");
30362/* harmony import */ var _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateAutoHeight.js */ "./node_modules/swiper/core/update/updateAutoHeight.js");
30363/* harmony import */ var _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateSlidesOffset.js */ "./node_modules/swiper/core/update/updateSlidesOffset.js");
30364/* harmony import */ var _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateSlidesProgress.js */ "./node_modules/swiper/core/update/updateSlidesProgress.js");
30365/* harmony import */ var _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updateProgress.js */ "./node_modules/swiper/core/update/updateProgress.js");
30366/* harmony import */ var _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updateSlidesClasses.js */ "./node_modules/swiper/core/update/updateSlidesClasses.js");
30367/* harmony import */ var _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./updateActiveIndex.js */ "./node_modules/swiper/core/update/updateActiveIndex.js");
30368/* harmony import */ var _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./updateClickedSlide.js */ "./node_modules/swiper/core/update/updateClickedSlide.js");
30369
30370
30371
30372
30373
30374
30375
30376
30377
30378/* harmony default export */ __webpack_exports__["default"] = ({
30379  updateSize: _updateSize_js__WEBPACK_IMPORTED_MODULE_0__["default"],
30380  updateSlides: _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__["default"],
30381  updateAutoHeight: _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__["default"],
30382  updateSlidesOffset: _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__["default"],
30383  updateSlidesProgress: _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__["default"],
30384  updateProgress: _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__["default"],
30385  updateSlidesClasses: _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__["default"],
30386  updateActiveIndex: _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__["default"],
30387  updateClickedSlide: _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__["default"]
30388});
30389
30390/***/ }),
30391
vendor: 2,579 bytes, lines 30392-30474
30392/***/ "./node_modules/swiper/core/update/updateActiveIndex.js":
30393/*!**************************************************************!*\
30394  !*** ./node_modules/swiper/core/update/updateActiveIndex.js ***!
30395  \**************************************************************/
30396/*! exports provided: default */
30397/***/ (function(module, __webpack_exports__, __webpack_require__) {
30398
30399"use strict";
30400__webpack_require__.r(__webpack_exports__);
30401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateActiveIndex; });
30402function updateActiveIndex(newActiveIndex) {
30403  const swiper = this;
30404  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
30405  const {
30406    slidesGrid,
30407    snapGrid,
30408    params,
30409    activeIndex: previousIndex,
30410    realIndex: previousRealIndex,
30411    snapIndex: previousSnapIndex
30412  } = swiper;
30413  let activeIndex = newActiveIndex;
30414  let snapIndex;
30415
30416  if (typeof activeIndex === 'undefined') {
30417    for (let i = 0; i < slidesGrid.length; i += 1) {
30418      if (typeof slidesGrid[i + 1] !== 'undefined') {
30419        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
30420          activeIndex = i;
30421        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
30422          activeIndex = i + 1;
30423        }
30424      } else if (translate >= slidesGrid[i]) {
30425        activeIndex = i;
30426      }
30427    } // Normalize slideIndex
30428
30429
30430    if (params.normalizeSlideIndex) {
30431      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
30432    }
30433  }
30434
30435  if (snapGrid.indexOf(translate) >= 0) {
30436    snapIndex = snapGrid.indexOf(translate);
30437  } else {
30438    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
30439    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
30440  }
30441
30442  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
30443
30444  if (activeIndex === previousIndex) {
30445    if (snapIndex !== previousSnapIndex) {
30446      swiper.snapIndex = snapIndex;
30447      swiper.emit('snapIndexChange');
30448    }
30449
30450    return;
30451  } // Get real index
30452
30453
30454  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
30455  Object.assign(swiper, {
30456    snapIndex,
30457    realIndex,
30458    previousIndex,
30459    activeIndex
30460  });
30461  swiper.emit('activeIndexChange');
30462  swiper.emit('snapIndexChange');
30463
30464  if (previousRealIndex !== realIndex) {
30465    swiper.emit('realIndexChange');
30466  }
30467
30468  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
30469    swiper.emit('slideChange');
30470  }
30471}
30472
30473/***/ }),
30474
vendor: 2,304 bytes, lines 30475-30538
30475/***/ "./node_modules/swiper/core/update/updateAutoHeight.js":
30476/*!*************************************************************!*\
30477  !*** ./node_modules/swiper/core/update/updateAutoHeight.js ***!
30478  \*************************************************************/
30479/*! exports provided: default */
30480/***/ (function(module, __webpack_exports__, __webpack_require__) {
30481
30482"use strict";
30483__webpack_require__.r(__webpack_exports__);
30484/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateAutoHeight; });
30485/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
30486
30487function updateAutoHeight(speed) {
30488  const swiper = this;
30489  const activeSlides = [];
30490  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
30491  let newHeight = 0;
30492  let i;
30493
30494  if (typeof speed === 'number') {
30495    swiper.setTransition(speed);
30496  } else if (speed === true) {
30497    swiper.setTransition(swiper.params.speed);
30498  }
30499
30500  const getSlideByIndex = index => {
30501    if (isVirtual) {
30502      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];
30503    }
30504
30505    return swiper.slides.eq(index)[0];
30506  }; // Find slides currently in view
30507
30508
30509  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
30510    if (swiper.params.centeredSlides) {
30511      (swiper.visibleSlides || Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])([])).each(slide => {
30512        activeSlides.push(slide);
30513      });
30514    } else {
30515      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
30516        const index = swiper.activeIndex + i;
30517        if (index > swiper.slides.length && !isVirtual) break;
30518        activeSlides.push(getSlideByIndex(index));
30519      }
30520    }
30521  } else {
30522    activeSlides.push(getSlideByIndex(swiper.activeIndex));
30523  } // Find new height from highest slide in view
30524
30525
30526  for (i = 0; i < activeSlides.length; i += 1) {
30527    if (typeof activeSlides[i] !== 'undefined') {
30528      const height = activeSlides[i].offsetHeight;
30529      newHeight = height > newHeight ? height : newHeight;
30530    }
30531  } // Update Height
30532
30533
30534  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);
30535}
30536
30537/***/ }),
30538
vendor: 1,766 bytes, lines 30539-30588
30539/***/ "./node_modules/swiper/core/update/updateClickedSlide.js":
30540/*!***************************************************************!*\
30541  !*** ./node_modules/swiper/core/update/updateClickedSlide.js ***!
30542  \***************************************************************/
30543/*! exports provided: default */
30544/***/ (function(module, __webpack_exports__, __webpack_require__) {
30545
30546"use strict";
30547__webpack_require__.r(__webpack_exports__);
30548/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateClickedSlide; });
30549/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
30550
30551function updateClickedSlide(e) {
30552  const swiper = this;
30553  const params = swiper.params;
30554  const slide = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e).closest(`.${params.slideClass}`)[0];
30555  let slideFound = false;
30556  let slideIndex;
30557
30558  if (slide) {
30559    for (let i = 0; i < swiper.slides.length; i += 1) {
30560      if (swiper.slides[i] === slide) {
30561        slideFound = true;
30562        slideIndex = i;
30563        break;
30564      }
30565    }
30566  }
30567
30568  if (slide && slideFound) {
30569    swiper.clickedSlide = slide;
30570
30571    if (swiper.virtual && swiper.params.virtual.enabled) {
30572      swiper.clickedIndex = parseInt(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slide).attr('data-swiper-slide-index'), 10);
30573    } else {
30574      swiper.clickedIndex = slideIndex;
30575    }
30576  } else {
30577    swiper.clickedSlide = undefined;
30578    swiper.clickedIndex = undefined;
30579    return;
30580  }
30581
30582  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
30583    swiper.slideToClickedSlide();
30584  }
30585}
30586
30587/***/ }),
30588
vendor: 1,764 bytes, lines 30589-30651
30589/***/ "./node_modules/swiper/core/update/updateProgress.js":
30590/*!***********************************************************!*\
30591  !*** ./node_modules/swiper/core/update/updateProgress.js ***!
30592  \***********************************************************/
30593/*! exports provided: default */
30594/***/ (function(module, __webpack_exports__, __webpack_require__) {
30595
30596"use strict";
30597__webpack_require__.r(__webpack_exports__);
30598/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateProgress; });
30599function updateProgress(translate) {
30600  const swiper = this;
30601
30602  if (typeof translate === 'undefined') {
30603    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line
30604
30605    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
30606  }
30607
30608  const params = swiper.params;
30609  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
30610  let {
30611    progress,
30612    isBeginning,
30613    isEnd
30614  } = swiper;
30615  const wasBeginning = isBeginning;
30616  const wasEnd = isEnd;
30617
30618  if (translatesDiff === 0) {
30619    progress = 0;
30620    isBeginning = true;
30621    isEnd = true;
30622  } else {
30623    progress = (translate - swiper.minTranslate()) / translatesDiff;
30624    isBeginning = progress <= 0;
30625    isEnd = progress >= 1;
30626  }
30627
30628  Object.assign(swiper, {
30629    progress,
30630    isBeginning,
30631    isEnd
30632  });
30633  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
30634
30635  if (isBeginning && !wasBeginning) {
30636    swiper.emit('reachBeginning toEdge');
30637  }
30638
30639  if (isEnd && !wasEnd) {
30640    swiper.emit('reachEnd toEdge');
30641  }
30642
30643  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
30644    swiper.emit('fromEdge');
30645  }
30646
30647  swiper.emit('progress', progress);
30648}
30649
30650/***/ }),
30651
vendor: 1,495 bytes, lines 30652-30697
30652/***/ "./node_modules/swiper/core/update/updateSize.js":
30653/*!*******************************************************!*\
30654  !*** ./node_modules/swiper/core/update/updateSize.js ***!
30655  \*******************************************************/
30656/*! exports provided: default */
30657/***/ (function(module, __webpack_exports__, __webpack_require__) {
30658
30659"use strict";
30660__webpack_require__.r(__webpack_exports__);
30661/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSize; });
30662function updateSize() {
30663  const swiper = this;
30664  let width;
30665  let height;
30666  const $el = swiper.$el;
30667
30668  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
30669    width = swiper.params.width;
30670  } else {
30671    width = $el[0].clientWidth;
30672  }
30673
30674  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
30675    height = swiper.params.height;
30676  } else {
30677    height = $el[0].clientHeight;
30678  }
30679
30680  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
30681    return;
30682  } // Subtract paddings
30683
30684
30685  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
30686  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
30687  if (Number.isNaN(width)) width = 0;
30688  if (Number.isNaN(height)) height = 0;
30689  Object.assign(swiper, {
30690    width,
30691    height,
30692    size: swiper.isHorizontal() ? width : height
30693  });
30694}
30695
30696/***/ }),
30697
vendor: 11,379 bytes, lines 30698-31031
30698/***/ "./node_modules/swiper/core/update/updateSlides.js":
30699/*!*********************************************************!*\
30700  !*** ./node_modules/swiper/core/update/updateSlides.js ***!
30701  \*********************************************************/
30702/*! exports provided: default */
30703/***/ (function(module, __webpack_exports__, __webpack_require__) {
30704
30705"use strict";
30706__webpack_require__.r(__webpack_exports__);
30707/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlides; });
30708/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
30709
30710function updateSlides() {
30711  const swiper = this;
30712
30713  function getDirectionLabel(property) {
30714    if (swiper.isHorizontal()) {
30715      return property;
30716    } // prettier-ignore
30717
30718
30719    return {
30720      'width': 'height',
30721      'margin-top': 'margin-left',
30722      'margin-bottom ': 'margin-right',
30723      'margin-left': 'margin-top',
30724      'margin-right': 'margin-bottom',
30725      'padding-left': 'padding-top',
30726      'padding-right': 'padding-bottom',
30727      'marginRight': 'marginBottom'
30728    }[property];
30729  }
30730
30731  function getDirectionPropertyValue(node, label) {
30732    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
30733  }
30734
30735  const params = swiper.params;
30736  const {
30737    $wrapperEl,
30738    size: swiperSize,
30739    rtlTranslate: rtl,
30740    wrongRTL
30741  } = swiper;
30742  const isVirtual = swiper.virtual && params.virtual.enabled;
30743  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
30744  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);
30745  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
30746  let snapGrid = [];
30747  const slidesGrid = [];
30748  const slidesSizesGrid = [];
30749  let offsetBefore = params.slidesOffsetBefore;
30750
30751  if (typeof offsetBefore === 'function') {
30752    offsetBefore = params.slidesOffsetBefore.call(swiper);
30753  }
30754
30755  let offsetAfter = params.slidesOffsetAfter;
30756
30757  if (typeof offsetAfter === 'function') {
30758    offsetAfter = params.slidesOffsetAfter.call(swiper);
30759  }
30760
30761  const previousSnapGridLength = swiper.snapGrid.length;
30762  const previousSlidesGridLength = swiper.slidesGrid.length;
30763  let spaceBetween = params.spaceBetween;
30764  let slidePosition = -offsetBefore;
30765  let prevSlideSize = 0;
30766  let index = 0;
30767
30768  if (typeof swiperSize === 'undefined') {
30769    return;
30770  }
30771
30772  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
30773    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
30774  }
30775
30776  swiper.virtualSize = -spaceBetween; // reset margins
30777
30778  if (rtl) slides.css({
30779    marginLeft: '',
30780    marginBottom: '',
30781    marginTop: ''
30782  });else slides.css({
30783    marginRight: '',
30784    marginBottom: '',
30785    marginTop: ''
30786  }); // reset cssMode offsets
30787
30788  if (params.centeredSlides && params.cssMode) {
30789    Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-before', '');
30790    Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-after', '');
30791  }
30792
30793  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
30794
30795  if (gridEnabled) {
30796    swiper.grid.initSlides(slidesLength);
30797  } // Calc slides
30798
30799
30800  let slideSize;
30801  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {
30802    return typeof params.breakpoints[key].slidesPerView !== 'undefined';
30803  }).length > 0;
30804
30805  for (let i = 0; i < slidesLength; i += 1) {
30806    slideSize = 0;
30807    const slide = slides.eq(i);
30808
30809    if (gridEnabled) {
30810      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
30811    }
30812
30813    if (slide.css('display') === 'none') continue; // eslint-disable-line
30814
30815    if (params.slidesPerView === 'auto') {
30816      if (shouldResetSlideSize) {
30817        slides[i].style[getDirectionLabel('width')] = ``;
30818      }
30819
30820      const slideStyles = getComputedStyle(slide[0]);
30821      const currentTransform = slide[0].style.transform;
30822      const currentWebKitTransform = slide[0].style.webkitTransform;
30823
30824      if (currentTransform) {
30825        slide[0].style.transform = 'none';
30826      }
30827
30828      if (currentWebKitTransform) {
30829        slide[0].style.webkitTransform = 'none';
30830      }
30831
30832      if (params.roundLengths) {
30833        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
30834      } else {
30835        // eslint-disable-next-line
30836        const width = getDirectionPropertyValue(slideStyles, 'width');
30837        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
30838        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
30839        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
30840        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
30841        const boxSizing = slideStyles.getPropertyValue('box-sizing');
30842
30843        if (boxSizing && boxSizing === 'border-box') {
30844          slideSize = width + marginLeft + marginRight;
30845        } else {
30846          const {
30847            clientWidth,
30848            offsetWidth
30849          } = slide[0];
30850          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
30851        }
30852      }
30853
30854      if (currentTransform) {
30855        slide[0].style.transform = currentTransform;
30856      }
30857
30858      if (currentWebKitTransform) {
30859        slide[0].style.webkitTransform = currentWebKitTransform;
30860      }
30861
30862      if (params.roundLengths) slideSize = Math.floor(slideSize);
30863    } else {
30864      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
30865      if (params.roundLengths) slideSize = Math.floor(slideSize);
30866
30867      if (slides[i]) {
30868        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;
30869      }
30870    }
30871
30872    if (slides[i]) {
30873      slides[i].swiperSlideSize = slideSize;
30874    }
30875
30876    slidesSizesGrid.push(slideSize);
30877
30878    if (params.centeredSlides) {
30879      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
30880      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
30881      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
30882      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
30883      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
30884      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
30885      slidesGrid.push(slidePosition);
30886    } else {
30887      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
30888      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
30889      slidesGrid.push(slidePosition);
30890      slidePosition = slidePosition + slideSize + spaceBetween;
30891    }
30892
30893    swiper.virtualSize += slideSize + spaceBetween;
30894    prevSlideSize = slideSize;
30895    index += 1;
30896  }
30897
30898  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
30899
30900  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
30901    $wrapperEl.css({
30902      width: `${swiper.virtualSize + params.spaceBetween}px`
30903    });
30904  }
30905
30906  if (params.setWrapperSize) {
30907    $wrapperEl.css({
30908      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`
30909    });
30910  }
30911
30912  if (gridEnabled) {
30913    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
30914  } // Remove last grid elements depending on width
30915
30916
30917  if (!params.centeredSlides) {
30918    const newSlidesGrid = [];
30919
30920    for (let i = 0; i < snapGrid.length; i += 1) {
30921      let slidesGridItem = snapGrid[i];
30922      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
30923
30924      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
30925        newSlidesGrid.push(slidesGridItem);
30926      }
30927    }
30928
30929    snapGrid = newSlidesGrid;
30930
30931    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
30932      snapGrid.push(swiper.virtualSize - swiperSize);
30933    }
30934  }
30935
30936  if (snapGrid.length === 0) snapGrid = [0];
30937
30938  if (params.spaceBetween !== 0) {
30939    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
30940    slides.filter((_, slideIndex) => {
30941      if (!params.cssMode) return true;
30942
30943      if (slideIndex === slides.length - 1) {
30944        return false;
30945      }
30946
30947      return true;
30948    }).css({
30949      [key]: `${spaceBetween}px`
30950    });
30951  }
30952
30953  if (params.centeredSlides && params.centeredSlidesBounds) {
30954    let allSlidesSize = 0;
30955    slidesSizesGrid.forEach(slideSizeValue => {
30956      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
30957    });
30958    allSlidesSize -= params.spaceBetween;
30959    const maxSnap = allSlidesSize - swiperSize;
30960    snapGrid = snapGrid.map(snap => {
30961      if (snap < 0) return -offsetBefore;
30962      if (snap > maxSnap) return maxSnap + offsetAfter;
30963      return snap;
30964    });
30965  }
30966
30967  if (params.centerInsufficientSlides) {
30968    let allSlidesSize = 0;
30969    slidesSizesGrid.forEach(slideSizeValue => {
30970      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
30971    });
30972    allSlidesSize -= params.spaceBetween;
30973
30974    if (allSlidesSize < swiperSize) {
30975      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;
30976      snapGrid.forEach((snap, snapIndex) => {
30977        snapGrid[snapIndex] = snap - allSlidesOffset;
30978      });
30979      slidesGrid.forEach((snap, snapIndex) => {
30980        slidesGrid[snapIndex] = snap + allSlidesOffset;
30981      });
30982    }
30983  }
30984
30985  Object.assign(swiper, {
30986    slides,
30987    snapGrid,
30988    slidesGrid,
30989    slidesSizesGrid
30990  });
30991
30992  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
30993    Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
30994    Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
30995    const addToSnapGrid = -swiper.snapGrid[0];
30996    const addToSlidesGrid = -swiper.slidesGrid[0];
30997    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);
30998    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);
30999  }
31000
31001  if (slidesLength !== previousSlidesLength) {
31002    swiper.emit('slidesLengthChange');
31003  }
31004
31005  if (snapGrid.length !== previousSnapGridLength) {
31006    if (swiper.params.watchOverflow) swiper.checkOverflow();
31007    swiper.emit('snapGridLengthChange');
31008  }
31009
31010  if (slidesGrid.length !== previousSlidesGridLength) {
31011    swiper.emit('slidesGridLengthChange');
31012  }
31013
31014  if (params.watchSlidesProgress) {
31015    swiper.updateSlidesOffset();
31016  }
31017
31018  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {
31019    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
31020    const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);
31021
31022    if (slidesLength <= params.maxBackfaceHiddenSlides) {
31023      if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);
31024    } else if (hasClassBackfaceClassAdded) {
31025      swiper.$el.removeClass(backFaceHiddenClass);
31026    }
31027  }
31028}
31029
31030/***/ }),
31031
vendor: 3,288 bytes, lines 31032-31108
31032/***/ "./node_modules/swiper/core/update/updateSlidesClasses.js":
31033/*!****************************************************************!*\
31034  !*** ./node_modules/swiper/core/update/updateSlidesClasses.js ***!
31035  \****************************************************************/
31036/*! exports provided: default */
31037/***/ (function(module, __webpack_exports__, __webpack_require__) {
31038
31039"use strict";
31040__webpack_require__.r(__webpack_exports__);
31041/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlidesClasses; });
31042function updateSlidesClasses() {
31043  const swiper = this;
31044  const {
31045    slides,
31046    params,
31047    $wrapperEl,
31048    activeIndex,
31049    realIndex
31050  } = swiper;
31051  const isVirtual = swiper.virtual && params.virtual.enabled;
31052  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
31053  let activeSlide;
31054
31055  if (isVirtual) {
31056    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
31057  } else {
31058    activeSlide = slides.eq(activeIndex);
31059  } // Active classes
31060
31061
31062  activeSlide.addClass(params.slideActiveClass);
31063
31064  if (params.loop) {
31065    // Duplicate to all looped slides
31066    if (activeSlide.hasClass(params.slideDuplicateClass)) {
31067      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
31068    } else {
31069      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
31070    }
31071  } // Next Slide
31072
31073
31074  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
31075
31076  if (params.loop && nextSlide.length === 0) {
31077    nextSlide = slides.eq(0);
31078    nextSlide.addClass(params.slideNextClass);
31079  } // Prev Slide
31080
31081
31082  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
31083
31084  if (params.loop && prevSlide.length === 0) {
31085    prevSlide = slides.eq(-1);
31086    prevSlide.addClass(params.slidePrevClass);
31087  }
31088
31089  if (params.loop) {
31090    // Duplicate to all looped slides
31091    if (nextSlide.hasClass(params.slideDuplicateClass)) {
31092      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
31093    } else {
31094      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
31095    }
31096
31097    if (prevSlide.hasClass(params.slideDuplicateClass)) {
31098      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
31099    } else {
31100      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
31101    }
31102  }
31103
31104  swiper.emitSlidesClasses();
31105}
31106
31107/***/ }),
31108
vendor: 815 bytes, lines 31109-31129
31109/***/ "./node_modules/swiper/core/update/updateSlidesOffset.js":
31110/*!***************************************************************!*\
31111  !*** ./node_modules/swiper/core/update/updateSlidesOffset.js ***!
31112  \***************************************************************/
31113/*! exports provided: default */
31114/***/ (function(module, __webpack_exports__, __webpack_require__) {
31115
31116"use strict";
31117__webpack_require__.r(__webpack_exports__);
31118/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlidesOffset; });
31119function updateSlidesOffset() {
31120  const swiper = this;
31121  const slides = swiper.slides;
31122
31123  for (let i = 0; i < slides.length; i += 1) {
31124    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
31125  }
31126}
31127
31128/***/ }),
31129
vendor: 2,551 bytes, lines 31130-31187
31130/***/ "./node_modules/swiper/core/update/updateSlidesProgress.js":
31131/*!*****************************************************************!*\
31132  !*** ./node_modules/swiper/core/update/updateSlidesProgress.js ***!
31133  \*****************************************************************/
31134/*! exports provided: default */
31135/***/ (function(module, __webpack_exports__, __webpack_require__) {
31136
31137"use strict";
31138__webpack_require__.r(__webpack_exports__);
31139/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlidesProgress; });
31140/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
31141
31142function updateSlidesProgress(translate = this && this.translate || 0) {
31143  const swiper = this;
31144  const params = swiper.params;
31145  const {
31146    slides,
31147    rtlTranslate: rtl,
31148    snapGrid
31149  } = swiper;
31150  if (slides.length === 0) return;
31151  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
31152  let offsetCenter = -translate;
31153  if (rtl) offsetCenter = translate; // Visible Slides
31154
31155  slides.removeClass(params.slideVisibleClass);
31156  swiper.visibleSlidesIndexes = [];
31157  swiper.visibleSlides = [];
31158
31159  for (let i = 0; i < slides.length; i += 1) {
31160    const slide = slides[i];
31161    let slideOffset = slide.swiperSlideOffset;
31162
31163    if (params.cssMode && params.centeredSlides) {
31164      slideOffset -= slides[0].swiperSlideOffset;
31165    }
31166
31167    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
31168    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
31169    const slideBefore = -(offsetCenter - slideOffset);
31170    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
31171    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
31172
31173    if (isVisible) {
31174      swiper.visibleSlides.push(slide);
31175      swiper.visibleSlidesIndexes.push(i);
31176      slides.eq(i).addClass(params.slideVisibleClass);
31177    }
31178
31179    slide.progress = rtl ? -slideProgress : slideProgress;
31180    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
31181  }
31182
31183  swiper.visibleSlides = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.visibleSlides);
31184}
31185
31186/***/ }),
31187
vendor: 11,060 bytes, lines 31188-31553
31188/***/ "./node_modules/swiper/modules/a11y/a11y.js":
31189/*!**************************************************!*\
31190  !*** ./node_modules/swiper/modules/a11y/a11y.js ***!
31191  \**************************************************/
31192/*! exports provided: default */
31193/***/ (function(module, __webpack_exports__, __webpack_require__) {
31194
31195"use strict";
31196__webpack_require__.r(__webpack_exports__);
31197/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return A11y; });
31198/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
31199/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
31200
31201
31202function A11y({
31203  swiper,
31204  extendParams,
31205  on
31206}) {
31207  extendParams({
31208    a11y: {
31209      enabled: true,
31210      notificationClass: 'swiper-notification',
31211      prevSlideMessage: 'Previous slide',
31212      nextSlideMessage: 'Next slide',
31213      firstSlideMessage: 'This is the first slide',
31214      lastSlideMessage: 'This is the last slide',
31215      paginationBulletMessage: 'Go to slide {{index}}',
31216      slideLabelMessage: '{{index}} / {{slidesLength}}',
31217      containerMessage: null,
31218      containerRoleDescriptionMessage: null,
31219      itemRoleDescriptionMessage: null,
31220      slideRole: 'group',
31221      id: null
31222    }
31223  });
31224  swiper.a11y = {
31225    clicked: false
31226  };
31227  let liveRegion = null;
31228
31229  function notify(message) {
31230    const notification = liveRegion;
31231    if (notification.length === 0) return;
31232    notification.html('');
31233    notification.html(message);
31234  }
31235
31236  function getRandomNumber(size = 16) {
31237    const randomChar = () => Math.round(16 * Math.random()).toString(16);
31238
31239    return 'x'.repeat(size).replace(/x/g, randomChar);
31240  }
31241
31242  function makeElFocusable($el) {
31243    $el.attr('tabIndex', '0');
31244  }
31245
31246  function makeElNotFocusable($el) {
31247    $el.attr('tabIndex', '-1');
31248  }
31249
31250  function addElRole($el, role) {
31251    $el.attr('role', role);
31252  }
31253
31254  function addElRoleDescription($el, description) {
31255    $el.attr('aria-roledescription', description);
31256  }
31257
31258  function addElControls($el, controls) {
31259    $el.attr('aria-controls', controls);
31260  }
31261
31262  function addElLabel($el, label) {
31263    $el.attr('aria-label', label);
31264  }
31265
31266  function addElId($el, id) {
31267    $el.attr('id', id);
31268  }
31269
31270  function addElLive($el, live) {
31271    $el.attr('aria-live', live);
31272  }
31273
31274  function disableEl($el) {
31275    $el.attr('aria-disabled', true);
31276  }
31277
31278  function enableEl($el) {
31279    $el.attr('aria-disabled', false);
31280  }
31281
31282  function onEnterOrSpaceKey(e) {
31283    if (e.keyCode !== 13 && e.keyCode !== 32) return;
31284    const params = swiper.params.a11y;
31285    const $targetEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target);
31286
31287    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
31288      if (!(swiper.isEnd && !swiper.params.loop)) {
31289        swiper.slideNext();
31290      }
31291
31292      if (swiper.isEnd) {
31293        notify(params.lastSlideMessage);
31294      } else {
31295        notify(params.nextSlideMessage);
31296      }
31297    }
31298
31299    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
31300      if (!(swiper.isBeginning && !swiper.params.loop)) {
31301        swiper.slidePrev();
31302      }
31303
31304      if (swiper.isBeginning) {
31305        notify(params.firstSlideMessage);
31306      } else {
31307        notify(params.prevSlideMessage);
31308      }
31309    }
31310
31311    if (swiper.pagination && $targetEl.is(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) {
31312      $targetEl[0].click();
31313    }
31314  }
31315
31316  function updateNavigation() {
31317    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
31318    const {
31319      $nextEl,
31320      $prevEl
31321    } = swiper.navigation;
31322
31323    if ($prevEl && $prevEl.length > 0) {
31324      if (swiper.isBeginning) {
31325        disableEl($prevEl);
31326        makeElNotFocusable($prevEl);
31327      } else {
31328        enableEl($prevEl);
31329        makeElFocusable($prevEl);
31330      }
31331    }
31332
31333    if ($nextEl && $nextEl.length > 0) {
31334      if (swiper.isEnd) {
31335        disableEl($nextEl);
31336        makeElNotFocusable($nextEl);
31337      } else {
31338        enableEl($nextEl);
31339        makeElFocusable($nextEl);
31340      }
31341    }
31342  }
31343
31344  function hasPagination() {
31345    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
31346  }
31347
31348  function hasClickablePagination() {
31349    return hasPagination() && swiper.params.pagination.clickable;
31350  }
31351
31352  function updatePagination() {
31353    const params = swiper.params.a11y;
31354    if (!hasPagination()) return;
31355    swiper.pagination.bullets.each(bulletEl => {
31356      const $bulletEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(bulletEl);
31357
31358      if (swiper.params.pagination.clickable) {
31359        makeElFocusable($bulletEl);
31360
31361        if (!swiper.params.pagination.renderBullet) {
31362          addElRole($bulletEl, 'button');
31363          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
31364        }
31365      }
31366
31367      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {
31368        $bulletEl.attr('aria-current', 'true');
31369      } else {
31370        $bulletEl.removeAttr('aria-current');
31371      }
31372    });
31373  }
31374
31375  const initNavEl = ($el, wrapperId, message) => {
31376    makeElFocusable($el);
31377
31378    if ($el[0].tagName !== 'BUTTON') {
31379      addElRole($el, 'button');
31380      $el.on('keydown', onEnterOrSpaceKey);
31381    }
31382
31383    addElLabel($el, message);
31384    addElControls($el, wrapperId);
31385  };
31386
31387  const handlePointerDown = () => {
31388    swiper.a11y.clicked = true;
31389  };
31390
31391  const handlePointerUp = () => {
31392    requestAnimationFrame(() => {
31393      requestAnimationFrame(() => {
31394        if (!swiper.destroyed) {
31395          swiper.a11y.clicked = false;
31396        }
31397      });
31398    });
31399  };
31400
31401  const handleFocus = e => {
31402    if (swiper.a11y.clicked) return;
31403    const slideEl = e.target.closest(`.${swiper.params.slideClass}`);
31404    if (!slideEl || !swiper.slides.includes(slideEl)) return;
31405    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
31406    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
31407    if (isActive || isVisible) return;
31408    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
31409
31410    if (swiper.isHorizontal()) {
31411      swiper.el.scrollLeft = 0;
31412    } else {
31413      swiper.el.scrollTop = 0;
31414    }
31415
31416    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
31417  };
31418
31419  const initSlides = () => {
31420    const params = swiper.params.a11y;
31421
31422    if (params.itemRoleDescriptionMessage) {
31423      addElRoleDescription(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.itemRoleDescriptionMessage);
31424    }
31425
31426    if (params.slideRole) {
31427      addElRole(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.slideRole);
31428    }
31429
31430    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;
31431
31432    if (params.slideLabelMessage) {
31433      swiper.slides.each((slideEl, index) => {
31434        const $slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl);
31435        const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;
31436        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
31437        addElLabel($slideEl, ariaLabelMessage);
31438      });
31439    }
31440  };
31441
31442  const init = () => {
31443    const params = swiper.params.a11y;
31444    swiper.$el.append(liveRegion); // Container
31445
31446    const $containerEl = swiper.$el;
31447
31448    if (params.containerRoleDescriptionMessage) {
31449      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
31450    }
31451
31452    if (params.containerMessage) {
31453      addElLabel($containerEl, params.containerMessage);
31454    } // Wrapper
31455
31456
31457    const $wrapperEl = swiper.$wrapperEl;
31458    const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;
31459    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
31460    addElId($wrapperEl, wrapperId);
31461    addElLive($wrapperEl, live); // Slide
31462
31463    initSlides(); // Navigation
31464
31465    let $nextEl;
31466    let $prevEl;
31467
31468    if (swiper.navigation && swiper.navigation.$nextEl) {
31469      $nextEl = swiper.navigation.$nextEl;
31470    }
31471
31472    if (swiper.navigation && swiper.navigation.$prevEl) {
31473      $prevEl = swiper.navigation.$prevEl;
31474    }
31475
31476    if ($nextEl && $nextEl.length) {
31477      initNavEl($nextEl, wrapperId, params.nextSlideMessage);
31478    }
31479
31480    if ($prevEl && $prevEl.length) {
31481      initNavEl($prevEl, wrapperId, params.prevSlideMessage);
31482    } // Pagination
31483
31484
31485    if (hasClickablePagination()) {
31486      swiper.pagination.$el.on('keydown', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
31487    } // Tab focus
31488
31489
31490    swiper.$el.on('focus', handleFocus, true);
31491    swiper.$el.on('pointerdown', handlePointerDown, true);
31492    swiper.$el.on('pointerup', handlePointerUp, true);
31493  };
31494
31495  function destroy() {
31496    if (liveRegion && liveRegion.length > 0) liveRegion.remove();
31497    let $nextEl;
31498    let $prevEl;
31499
31500    if (swiper.navigation && swiper.navigation.$nextEl) {
31501      $nextEl = swiper.navigation.$nextEl;
31502    }
31503
31504    if (swiper.navigation && swiper.navigation.$prevEl) {
31505      $prevEl = swiper.navigation.$prevEl;
31506    }
31507
31508    if ($nextEl) {
31509      $nextEl.off('keydown', onEnterOrSpaceKey);
31510    }
31511
31512    if ($prevEl) {
31513      $prevEl.off('keydown', onEnterOrSpaceKey);
31514    } // Pagination
31515
31516
31517    if (hasClickablePagination()) {
31518      swiper.pagination.$el.off('keydown', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
31519    } // Tab focus
31520
31521
31522    swiper.$el.off('focus', handleFocus, true);
31523    swiper.$el.off('pointerdown', handlePointerDown, true);
31524    swiper.$el.off('pointerup', handlePointerUp, true);
31525  }
31526
31527  on('beforeInit', () => {
31528    liveRegion = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`);
31529  });
31530  on('afterInit', () => {
31531    if (!swiper.params.a11y.enabled) return;
31532    init();
31533  });
31534  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
31535    if (!swiper.params.a11y.enabled) return;
31536    initSlides();
31537  });
31538  on('fromEdge toEdge afterInit lock unlock', () => {
31539    if (!swiper.params.a11y.enabled) return;
31540    updateNavigation();
31541  });
31542  on('paginationUpdate', () => {
31543    if (!swiper.params.a11y.enabled) return;
31544    updatePagination();
31545  });
31546  on('destroy', () => {
31547    if (!swiper.params.a11y.enabled) return;
31548    destroy();
31549  });
31550}
31551
31552/***/ }),
31553
vendor: 6,953 bytes, lines 31554-31798
31554/***/ "./node_modules/swiper/modules/autoplay/autoplay.js":
31555/*!**********************************************************!*\
31556  !*** ./node_modules/swiper/modules/autoplay/autoplay.js ***!
31557  \**********************************************************/
31558/*! exports provided: default */
31559/***/ (function(module, __webpack_exports__, __webpack_require__) {
31560
31561"use strict";
31562__webpack_require__.r(__webpack_exports__);
31563/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Autoplay; });
31564/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
31565/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
31566/* eslint no-underscore-dangle: "off" */
31567
31568/* eslint no-use-before-define: "off" */
31569
31570
31571function Autoplay({
31572  swiper,
31573  extendParams,
31574  on,
31575  emit
31576}) {
31577  let timeout;
31578  swiper.autoplay = {
31579    running: false,
31580    paused: false
31581  };
31582  extendParams({
31583    autoplay: {
31584      enabled: false,
31585      delay: 3000,
31586      waitForTransition: true,
31587      disableOnInteraction: true,
31588      stopOnLastSlide: false,
31589      reverseDirection: false,
31590      pauseOnMouseEnter: false
31591    }
31592  });
31593
31594  function run() {
31595    if (!swiper.size) {
31596      swiper.autoplay.running = false;
31597      swiper.autoplay.paused = false;
31598      return;
31599    }
31600
31601    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
31602    let delay = swiper.params.autoplay.delay;
31603
31604    if ($activeSlideEl.attr('data-swiper-autoplay')) {
31605      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
31606    }
31607
31608    clearTimeout(timeout);
31609    timeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["nextTick"])(() => {
31610      let autoplayResult;
31611
31612      if (swiper.params.autoplay.reverseDirection) {
31613        if (swiper.params.loop) {
31614          swiper.loopFix();
31615          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
31616          emit('autoplay');
31617        } else if (!swiper.isBeginning) {
31618          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
31619          emit('autoplay');
31620        } else if (!swiper.params.autoplay.stopOnLastSlide) {
31621          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
31622          emit('autoplay');
31623        } else {
31624          stop();
31625        }
31626      } else if (swiper.params.loop) {
31627        swiper.loopFix();
31628        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
31629        emit('autoplay');
31630      } else if (!swiper.isEnd) {
31631        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
31632        emit('autoplay');
31633      } else if (!swiper.params.autoplay.stopOnLastSlide) {
31634        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
31635        emit('autoplay');
31636      } else {
31637        stop();
31638      }
31639
31640      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {
31641        run();
31642      }
31643    }, delay);
31644  }
31645
31646  function start() {
31647    if (typeof timeout !== 'undefined') return false;
31648    if (swiper.autoplay.running) return false;
31649    swiper.autoplay.running = true;
31650    emit('autoplayStart');
31651    run();
31652    return true;
31653  }
31654
31655  function stop() {
31656    if (!swiper.autoplay.running) return false;
31657    if (typeof timeout === 'undefined') return false;
31658
31659    if (timeout) {
31660      clearTimeout(timeout);
31661      timeout = undefined;
31662    }
31663
31664    swiper.autoplay.running = false;
31665    emit('autoplayStop');
31666    return true;
31667  }
31668
31669  function pause(speed) {
31670    if (!swiper.autoplay.running) return;
31671    if (swiper.autoplay.paused) return;
31672    if (timeout) clearTimeout(timeout);
31673    swiper.autoplay.paused = true;
31674
31675    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
31676      swiper.autoplay.paused = false;
31677      run();
31678    } else {
31679      ['transitionend', 'webkitTransitionEnd'].forEach(event => {
31680        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);
31681      });
31682    }
31683  }
31684
31685  function onVisibilityChange() {
31686    const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
31687
31688    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
31689      pause();
31690    }
31691
31692    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
31693      run();
31694      swiper.autoplay.paused = false;
31695    }
31696  }
31697
31698  function onTransitionEnd(e) {
31699    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
31700    if (e.target !== swiper.$wrapperEl[0]) return;
31701    ['transitionend', 'webkitTransitionEnd'].forEach(event => {
31702      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
31703    });
31704    swiper.autoplay.paused = false;
31705
31706    if (!swiper.autoplay.running) {
31707      stop();
31708    } else {
31709      run();
31710    }
31711  }
31712
31713  function onMouseEnter() {
31714    if (swiper.params.autoplay.disableOnInteraction) {
31715      stop();
31716    } else {
31717      emit('autoplayPause');
31718      pause();
31719    }
31720
31721    ['transitionend', 'webkitTransitionEnd'].forEach(event => {
31722      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
31723    });
31724  }
31725
31726  function onMouseLeave() {
31727    if (swiper.params.autoplay.disableOnInteraction) {
31728      return;
31729    }
31730
31731    swiper.autoplay.paused = false;
31732    emit('autoplayResume');
31733    run();
31734  }
31735
31736  function attachMouseEvents() {
31737    if (swiper.params.autoplay.pauseOnMouseEnter) {
31738      swiper.$el.on('mouseenter', onMouseEnter);
31739      swiper.$el.on('mouseleave', onMouseLeave);
31740    }
31741  }
31742
31743  function detachMouseEvents() {
31744    swiper.$el.off('mouseenter', onMouseEnter);
31745    swiper.$el.off('mouseleave', onMouseLeave);
31746  }
31747
31748  on('init', () => {
31749    if (swiper.params.autoplay.enabled) {
31750      start();
31751      const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
31752      document.addEventListener('visibilitychange', onVisibilityChange);
31753      attachMouseEvents();
31754    }
31755  });
31756  on('beforeTransitionStart', (_s, speed, internal) => {
31757    if (swiper.autoplay.running) {
31758      if (internal || !swiper.params.autoplay.disableOnInteraction) {
31759        swiper.autoplay.pause(speed);
31760      } else {
31761        stop();
31762      }
31763    }
31764  });
31765  on('sliderFirstMove', () => {
31766    if (swiper.autoplay.running) {
31767      if (swiper.params.autoplay.disableOnInteraction) {
31768        stop();
31769      } else {
31770        pause();
31771      }
31772    }
31773  });
31774  on('touchEnd', () => {
31775    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
31776      run();
31777    }
31778  });
31779  on('destroy', () => {
31780    detachMouseEvents();
31781
31782    if (swiper.autoplay.running) {
31783      stop();
31784    }
31785
31786    const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
31787    document.removeEventListener('visibilitychange', onVisibilityChange);
31788  });
31789  Object.assign(swiper.autoplay, {
31790    pause,
31791    run,
31792    start,
31793    stop
31794  });
31795}
31796
31797/***/ }),
31798
vendor: 6,381 bytes, lines 31799-32003
31799/***/ "./node_modules/swiper/modules/controller/controller.js":
31800/*!**************************************************************!*\
31801  !*** ./node_modules/swiper/modules/controller/controller.js ***!
31802  \**************************************************************/
31803/*! exports provided: default */
31804/***/ (function(module, __webpack_exports__, __webpack_require__) {
31805
31806"use strict";
31807__webpack_require__.r(__webpack_exports__);
31808/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Controller; });
31809/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
31810/* eslint no-bitwise: ["error", { "allow": [">>"] }] */
31811
31812function Controller({
31813  swiper,
31814  extendParams,
31815  on
31816}) {
31817  extendParams({
31818    controller: {
31819      control: undefined,
31820      inverse: false,
31821      by: 'slide' // or 'container'
31822
31823    }
31824  });
31825  swiper.controller = {
31826    control: undefined
31827  };
31828
31829  function LinearSpline(x, y) {
31830    const binarySearch = function search() {
31831      let maxIndex;
31832      let minIndex;
31833      let guess;
31834      return (array, val) => {
31835        minIndex = -1;
31836        maxIndex = array.length;
31837
31838        while (maxIndex - minIndex > 1) {
31839          guess = maxIndex + minIndex >> 1;
31840
31841          if (array[guess] <= val) {
31842            minIndex = guess;
31843          } else {
31844            maxIndex = guess;
31845          }
31846        }
31847
31848        return maxIndex;
31849      };
31850    }();
31851
31852    this.x = x;
31853    this.y = y;
31854    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:
31855    // (x1,y1) is the known point before given value,
31856    // (x3,y3) is the known point after given value.
31857
31858    let i1;
31859    let i3;
31860
31861    this.interpolate = function interpolate(x2) {
31862      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):
31863
31864      i3 = binarySearch(this.x, x2);
31865      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:
31866      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1
31867
31868      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
31869    };
31870
31871    return this;
31872  } // xxx: for now i will just save one spline function to to
31873
31874
31875  function getInterpolateFunction(c) {
31876    if (!swiper.controller.spline) {
31877      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);
31878    }
31879  }
31880
31881  function setTranslate(_t, byController) {
31882    const controlled = swiper.controller.control;
31883    let multiplier;
31884    let controlledTranslate;
31885    const Swiper = swiper.constructor;
31886
31887    function setControlledTranslate(c) {
31888      // this will create an Interpolate function based on the snapGrids
31889      // x is the Grid of the scrolled scroller and y will be the controlled scroller
31890      // it makes sense to create this only once and recall it for the interpolation
31891      // the function does a lot of value caching for performance
31892      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
31893
31894      if (swiper.params.controller.by === 'slide') {
31895        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid
31896        // but it did not work out
31897
31898        controlledTranslate = -swiper.controller.spline.interpolate(-translate);
31899      }
31900
31901      if (!controlledTranslate || swiper.params.controller.by === 'container') {
31902        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
31903        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
31904      }
31905
31906      if (swiper.params.controller.inverse) {
31907        controlledTranslate = c.maxTranslate() - controlledTranslate;
31908      }
31909
31910      c.updateProgress(controlledTranslate);
31911      c.setTranslate(controlledTranslate, swiper);
31912      c.updateActiveIndex();
31913      c.updateSlidesClasses();
31914    }
31915
31916    if (Array.isArray(controlled)) {
31917      for (let i = 0; i < controlled.length; i += 1) {
31918        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
31919          setControlledTranslate(controlled[i]);
31920        }
31921      }
31922    } else if (controlled instanceof Swiper && byController !== controlled) {
31923      setControlledTranslate(controlled);
31924    }
31925  }
31926
31927  function setTransition(duration, byController) {
31928    const Swiper = swiper.constructor;
31929    const controlled = swiper.controller.control;
31930    let i;
31931
31932    function setControlledTransition(c) {
31933      c.setTransition(duration, swiper);
31934
31935      if (duration !== 0) {
31936        c.transitionStart();
31937
31938        if (c.params.autoHeight) {
31939          Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["nextTick"])(() => {
31940            c.updateAutoHeight();
31941          });
31942        }
31943
31944        c.$wrapperEl.transitionEnd(() => {
31945          if (!controlled) return;
31946
31947          if (c.params.loop && swiper.params.controller.by === 'slide') {
31948            c.loopFix();
31949          }
31950
31951          c.transitionEnd();
31952        });
31953      }
31954    }
31955
31956    if (Array.isArray(controlled)) {
31957      for (i = 0; i < controlled.length; i += 1) {
31958        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
31959          setControlledTransition(controlled[i]);
31960        }
31961      }
31962    } else if (controlled instanceof Swiper && byController !== controlled) {
31963      setControlledTransition(controlled);
31964    }
31965  }
31966
31967  function removeSpline() {
31968    if (!swiper.controller.control) return;
31969
31970    if (swiper.controller.spline) {
31971      swiper.controller.spline = undefined;
31972      delete swiper.controller.spline;
31973    }
31974  }
31975
31976  on('beforeInit', () => {
31977    swiper.controller.control = swiper.params.controller.control;
31978  });
31979  on('update', () => {
31980    removeSpline();
31981  });
31982  on('resize', () => {
31983    removeSpline();
31984  });
31985  on('observerUpdate', () => {
31986    removeSpline();
31987  });
31988  on('setTranslate', (_s, translate, byController) => {
31989    if (!swiper.controller.control) return;
31990    swiper.controller.setTranslate(translate, byController);
31991  });
31992  on('setTransition', (_s, duration, byController) => {
31993    if (!swiper.controller.control) return;
31994    swiper.controller.setTransition(duration, byController);
31995  });
31996  Object.assign(swiper.controller, {
31997    setTranslate,
31998    setTransition
31999  });
32000}
32001
32002/***/ }),
32003
vendor: 5,576 bytes, lines 32004-32149
32004/***/ "./node_modules/swiper/modules/effect-cards/effect-cards.js":
32005/*!******************************************************************!*\
32006  !*** ./node_modules/swiper/modules/effect-cards/effect-cards.js ***!
32007  \******************************************************************/
32008/*! exports provided: default */
32009/***/ (function(module, __webpack_exports__, __webpack_require__) {
32010
32011"use strict";
32012__webpack_require__.r(__webpack_exports__);
32013/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCards; });
32014/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
32015/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
32016/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
32017/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
32018
32019
32020
32021
32022function EffectCards({
32023  swiper,
32024  extendParams,
32025  on
32026}) {
32027  extendParams({
32028    cardsEffect: {
32029      slideShadows: true,
32030      transformEl: null,
32031      rotate: true,
32032      perSlideRotate: 2,
32033      perSlideOffset: 8
32034    }
32035  });
32036
32037  const setTranslate = () => {
32038    const {
32039      slides,
32040      activeIndex
32041    } = swiper;
32042    const params = swiper.params.cardsEffect;
32043    const {
32044      startTranslate,
32045      isTouched
32046    } = swiper.touchEventsData;
32047    const currentTranslate = swiper.translate;
32048
32049    for (let i = 0; i < slides.length; i += 1) {
32050      const $slideEl = slides.eq(i);
32051      const slideProgress = $slideEl[0].progress;
32052      const progress = Math.min(Math.max(slideProgress, -4), 4);
32053      let offset = $slideEl[0].swiperSlideOffset;
32054
32055      if (swiper.params.centeredSlides && !swiper.params.cssMode) {
32056        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);
32057      }
32058
32059      if (swiper.params.centeredSlides && swiper.params.cssMode) {
32060        offset -= slides[0].swiperSlideOffset;
32061      }
32062
32063      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;
32064      let tY = 0;
32065      const tZ = -100 * Math.abs(progress);
32066      let scale = 1;
32067      let rotate = -params.perSlideRotate * progress;
32068      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
32069      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
32070      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
32071      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
32072
32073      if (isSwipeToNext || isSwipeToPrev) {
32074        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
32075        rotate += -28 * progress * subProgress;
32076        scale += -0.5 * subProgress;
32077        tXAdd += 96 * subProgress;
32078        tY = `${-25 * subProgress * Math.abs(progress)}%`;
32079      }
32080
32081      if (progress < 0) {
32082        // next
32083        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;
32084      } else if (progress > 0) {
32085        // prev
32086        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;
32087      } else {
32088        tX = `${tX}px`;
32089      }
32090
32091      if (!swiper.isHorizontal()) {
32092        const prevY = tY;
32093        tY = tX;
32094        tX = prevY;
32095      }
32096
32097      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;
32098      const transform = `
32099        translate3d(${tX}, ${tY}, ${tZ}px)
32100        rotateZ(${params.rotate ? rotate : 0}deg)
32101        scale(${scaleString})
32102      `;
32103
32104      if (params.slideShadows) {
32105        // Set shadows
32106        let $shadowEl = $slideEl.find('.swiper-slide-shadow');
32107
32108        if ($shadowEl.length === 0) {
32109          $shadowEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
32110        }
32111
32112        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
32113      }
32114
32115      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
32116      const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
32117      $targetEl.transform(transform);
32118    }
32119  };
32120
32121  const setTransition = duration => {
32122    const {
32123      transformEl
32124    } = swiper.params.cardsEffect;
32125    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
32126    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
32127    Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
32128      swiper,
32129      duration,
32130      transformEl
32131    });
32132  };
32133
32134  Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
32135    effect: 'cards',
32136    swiper,
32137    on,
32138    setTranslate,
32139    setTransition,
32140    perspective: () => true,
32141    overwriteParams: () => ({
32142      watchSlidesProgress: true,
32143      virtualTranslate: !swiper.params.cssMode
32144    })
32145  });
32146}
32147
32148/***/ }),
32149
vendor: 5,431 bytes, lines 32150-32269
32150/***/ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js":
32151/*!**************************************************************************!*\
32152  !*** ./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js ***!
32153  \**************************************************************************/
32154/*! exports provided: default */
32155/***/ (function(module, __webpack_exports__, __webpack_require__) {
32156
32157"use strict";
32158__webpack_require__.r(__webpack_exports__);
32159/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCoverflow; });
32160/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
32161/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
32162/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
32163
32164
32165
32166function EffectCoverflow({
32167  swiper,
32168  extendParams,
32169  on
32170}) {
32171  extendParams({
32172    coverflowEffect: {
32173      rotate: 50,
32174      stretch: 0,
32175      depth: 100,
32176      scale: 1,
32177      modifier: 1,
32178      slideShadows: true,
32179      transformEl: null
32180    }
32181  });
32182
32183  const setTranslate = () => {
32184    const {
32185      width: swiperWidth,
32186      height: swiperHeight,
32187      slides,
32188      slidesSizesGrid
32189    } = swiper;
32190    const params = swiper.params.coverflowEffect;
32191    const isHorizontal = swiper.isHorizontal();
32192    const transform = swiper.translate;
32193    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
32194    const rotate = isHorizontal ? params.rotate : -params.rotate;
32195    const translate = params.depth; // Each slide offset from center
32196
32197    for (let i = 0, length = slides.length; i < length; i += 1) {
32198      const $slideEl = slides.eq(i);
32199      const slideSize = slidesSizesGrid[i];
32200      const slideOffset = $slideEl[0].swiperSlideOffset;
32201      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;
32202      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;
32203      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
32204      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0
32205
32206      let translateZ = -translate * Math.abs(offsetMultiplier);
32207      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders
32208
32209      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
32210        stretch = parseFloat(params.stretch) / 100 * slideSize;
32211      }
32212
32213      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
32214      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;
32215      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values
32216
32217      if (Math.abs(translateX) < 0.001) translateX = 0;
32218      if (Math.abs(translateY) < 0.001) translateY = 0;
32219      if (Math.abs(translateZ) < 0.001) translateZ = 0;
32220      if (Math.abs(rotateY) < 0.001) rotateY = 0;
32221      if (Math.abs(rotateX) < 0.001) rotateX = 0;
32222      if (Math.abs(scale) < 0.001) scale = 0;
32223      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;
32224      const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
32225      $targetEl.transform(slideTransform);
32226      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
32227
32228      if (params.slideShadows) {
32229        // Set shadows
32230        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
32231        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
32232
32233        if ($shadowBeforeEl.length === 0) {
32234          $shadowBeforeEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'left' : 'top');
32235        }
32236
32237        if ($shadowAfterEl.length === 0) {
32238          $shadowAfterEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'right' : 'bottom');
32239        }
32240
32241        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
32242        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
32243      }
32244    }
32245  };
32246
32247  const setTransition = duration => {
32248    const {
32249      transformEl
32250    } = swiper.params.coverflowEffect;
32251    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
32252    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
32253  };
32254
32255  Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
32256    effect: 'coverflow',
32257    swiper,
32258    on,
32259    setTranslate,
32260    setTransition,
32261    perspective: () => true,
32262    overwriteParams: () => ({
32263      watchSlidesProgress: true
32264    })
32265  });
32266}
32267
32268/***/ }),
32269
vendor: 6,157 bytes, lines 32270-32440
32270/***/ "./node_modules/swiper/modules/effect-creative/effect-creative.js":
32271/*!************************************************************************!*\
32272  !*** ./node_modules/swiper/modules/effect-creative/effect-creative.js ***!
32273  \************************************************************************/
32274/*! exports provided: default */
32275/***/ (function(module, __webpack_exports__, __webpack_require__) {
32276
32277"use strict";
32278__webpack_require__.r(__webpack_exports__);
32279/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCreative; });
32280/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
32281/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
32282/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
32283/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
32284
32285
32286
32287
32288function EffectCreative({
32289  swiper,
32290  extendParams,
32291  on
32292}) {
32293  extendParams({
32294    creativeEffect: {
32295      transformEl: null,
32296      limitProgress: 1,
32297      shadowPerProgress: false,
32298      progressMultiplier: 1,
32299      perspective: true,
32300      prev: {
32301        translate: [0, 0, 0],
32302        rotate: [0, 0, 0],
32303        opacity: 1,
32304        scale: 1
32305      },
32306      next: {
32307        translate: [0, 0, 0],
32308        rotate: [0, 0, 0],
32309        opacity: 1,
32310        scale: 1
32311      }
32312    }
32313  });
32314
32315  const getTranslateValue = value => {
32316    if (typeof value === 'string') return value;
32317    return `${value}px`;
32318  };
32319
32320  const setTranslate = () => {
32321    const {
32322      slides,
32323      $wrapperEl,
32324      slidesSizesGrid
32325    } = swiper;
32326    const params = swiper.params.creativeEffect;
32327    const {
32328      progressMultiplier: multiplier
32329    } = params;
32330    const isCenteredSlides = swiper.params.centeredSlides;
32331
32332    if (isCenteredSlides) {
32333      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;
32334      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);
32335    }
32336
32337    for (let i = 0; i < slides.length; i += 1) {
32338      const $slideEl = slides.eq(i);
32339      const slideProgress = $slideEl[0].progress;
32340      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);
32341      let originalProgress = progress;
32342
32343      if (!isCenteredSlides) {
32344        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);
32345      }
32346
32347      const offset = $slideEl[0].swiperSlideOffset;
32348      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];
32349      const r = [0, 0, 0];
32350      let custom = false;
32351
32352      if (!swiper.isHorizontal()) {
32353        t[1] = t[0];
32354        t[0] = 0;
32355      }
32356
32357      let data = {
32358        translate: [0, 0, 0],
32359        rotate: [0, 0, 0],
32360        scale: 1,
32361        opacity: 1
32362      };
32363
32364      if (progress < 0) {
32365        data = params.next;
32366        custom = true;
32367      } else if (progress > 0) {
32368        data = params.prev;
32369        custom = true;
32370      } // set translate
32371
32372
32373      t.forEach((value, index) => {
32374        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
32375      }); // set rotates
32376
32377      r.forEach((value, index) => {
32378        r[index] = data.rotate[index] * Math.abs(progress * multiplier);
32379      });
32380      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;
32381      const translateString = t.join(', ');
32382      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;
32383      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
32384      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;
32385      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows
32386
32387      if (custom && data.shadow || !custom) {
32388        let $shadowEl = $slideEl.children('.swiper-slide-shadow');
32389
32390        if ($shadowEl.length === 0 && data.shadow) {
32391          $shadowEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl);
32392        }
32393
32394        if ($shadowEl.length) {
32395          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;
32396          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
32397        }
32398      }
32399
32400      const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl);
32401      $targetEl.transform(transform).css({
32402        opacity: opacityString
32403      });
32404
32405      if (data.origin) {
32406        $targetEl.css('transform-origin', data.origin);
32407      }
32408    }
32409  };
32410
32411  const setTransition = duration => {
32412    const {
32413      transformEl
32414    } = swiper.params.creativeEffect;
32415    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
32416    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
32417    Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({
32418      swiper,
32419      duration,
32420      transformEl,
32421      allSlides: true
32422    });
32423  };
32424
32425  Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
32426    effect: 'creative',
32427    swiper,
32428    on,
32429    setTranslate,
32430    setTransition,
32431    perspective: () => swiper.params.creativeEffect.perspective,
32432    overwriteParams: () => ({
32433      watchSlidesProgress: true,
32434      virtualTranslate: !swiper.params.cssMode
32435    })
32436  });
32437}
32438
32439/***/ }),
32440
vendor: 7,382 bytes, lines 32441-32650
32441/***/ "./node_modules/swiper/modules/effect-cube/effect-cube.js":
32442/*!****************************************************************!*\
32443  !*** ./node_modules/swiper/modules/effect-cube/effect-cube.js ***!
32444  \****************************************************************/
32445/*! exports provided: default */
32446/***/ (function(module, __webpack_exports__, __webpack_require__) {
32447
32448"use strict";
32449__webpack_require__.r(__webpack_exports__);
32450/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCube; });
32451/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
32452/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
32453
32454
32455function EffectCube({
32456  swiper,
32457  extendParams,
32458  on
32459}) {
32460  extendParams({
32461    cubeEffect: {
32462      slideShadows: true,
32463      shadow: true,
32464      shadowOffset: 20,
32465      shadowScale: 0.94
32466    }
32467  });
32468
32469  const createSlideShadows = ($slideEl, progress, isHorizontal) => {
32470    let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
32471    let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
32472
32473    if (shadowBefore.length === 0) {
32474      shadowBefore = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`);
32475      $slideEl.append(shadowBefore);
32476    }
32477
32478    if (shadowAfter.length === 0) {
32479      shadowAfter = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`);
32480      $slideEl.append(shadowAfter);
32481    }
32482
32483    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
32484    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
32485  };
32486
32487  const recreateShadows = () => {
32488    // create new ones
32489    const isHorizontal = swiper.isHorizontal();
32490    swiper.slides.each(slideEl => {
32491      const progress = Math.max(Math.min(slideEl.progress, 1), -1);
32492      createSlideShadows(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl), progress, isHorizontal);
32493    });
32494  };
32495
32496  const setTranslate = () => {
32497    const {
32498      $el,
32499      $wrapperEl,
32500      slides,
32501      width: swiperWidth,
32502      height: swiperHeight,
32503      rtlTranslate: rtl,
32504      size: swiperSize,
32505      browser
32506    } = swiper;
32507    const params = swiper.params.cubeEffect;
32508    const isHorizontal = swiper.isHorizontal();
32509    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
32510    let wrapperRotate = 0;
32511    let $cubeShadowEl;
32512
32513    if (params.shadow) {
32514      if (isHorizontal) {
32515        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
32516
32517        if ($cubeShadowEl.length === 0) {
32518          $cubeShadowEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
32519          $wrapperEl.append($cubeShadowEl);
32520        }
32521
32522        $cubeShadowEl.css({
32523          height: `${swiperWidth}px`
32524        });
32525      } else {
32526        $cubeShadowEl = $el.find('.swiper-cube-shadow');
32527
32528        if ($cubeShadowEl.length === 0) {
32529          $cubeShadowEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>');
32530          $el.append($cubeShadowEl);
32531        }
32532      }
32533    }
32534
32535    for (let i = 0; i < slides.length; i += 1) {
32536      const $slideEl = slides.eq(i);
32537      let slideIndex = i;
32538
32539      if (isVirtual) {
32540        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
32541      }
32542
32543      let slideAngle = slideIndex * 90;
32544      let round = Math.floor(slideAngle / 360);
32545
32546      if (rtl) {
32547        slideAngle = -slideAngle;
32548        round = Math.floor(-slideAngle / 360);
32549      }
32550
32551      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
32552      let tx = 0;
32553      let ty = 0;
32554      let tz = 0;
32555
32556      if (slideIndex % 4 === 0) {
32557        tx = -round * 4 * swiperSize;
32558        tz = 0;
32559      } else if ((slideIndex - 1) % 4 === 0) {
32560        tx = 0;
32561        tz = -round * 4 * swiperSize;
32562      } else if ((slideIndex - 2) % 4 === 0) {
32563        tx = swiperSize + round * 4 * swiperSize;
32564        tz = swiperSize;
32565      } else if ((slideIndex - 3) % 4 === 0) {
32566        tx = -swiperSize;
32567        tz = 3 * swiperSize + swiperSize * 4 * round;
32568      }
32569
32570      if (rtl) {
32571        tx = -tx;
32572      }
32573
32574      if (!isHorizontal) {
32575        ty = tx;
32576        tx = 0;
32577      }
32578
32579      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
32580
32581      if (progress <= 1 && progress > -1) {
32582        wrapperRotate = slideIndex * 90 + progress * 90;
32583        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
32584      }
32585
32586      $slideEl.transform(transform);
32587
32588      if (params.slideShadows) {
32589        createSlideShadows($slideEl, progress, isHorizontal);
32590      }
32591    }
32592
32593    $wrapperEl.css({
32594      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
32595      'transform-origin': `50% 50% -${swiperSize / 2}px`
32596    });
32597
32598    if (params.shadow) {
32599      if (isHorizontal) {
32600        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
32601      } else {
32602        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
32603        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
32604        const scale1 = params.shadowScale;
32605        const scale2 = params.shadowScale / multiplier;
32606        const offset = params.shadowOffset;
32607        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
32608      }
32609    }
32610
32611    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
32612    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);
32613    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
32614  };
32615
32616  const setTransition = duration => {
32617    const {
32618      $el,
32619      slides
32620    } = swiper;
32621    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
32622
32623    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
32624      $el.find('.swiper-cube-shadow').transition(duration);
32625    }
32626  };
32627
32628  Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({
32629    effect: 'cube',
32630    swiper,
32631    on,
32632    setTranslate,
32633    setTransition,
32634    recreateShadows,
32635    getEffectParams: () => swiper.params.cubeEffect,
32636    perspective: () => true,
32637    overwriteParams: () => ({
32638      slidesPerView: 1,
32639      slidesPerGroup: 1,
32640      watchSlidesProgress: true,
32641      resistanceRatio: 0,
32642      spaceBetween: 0,
32643      centeredSlides: false,
32644      virtualTranslate: true
32645    })
32646  });
32647}
32648
32649/***/ }),
32650
vendor: 2,959 bytes, lines 32651-32736
32651/***/ "./node_modules/swiper/modules/effect-fade/effect-fade.js":
32652/*!****************************************************************!*\
32653  !*** ./node_modules/swiper/modules/effect-fade/effect-fade.js ***!
32654  \****************************************************************/
32655/*! exports provided: default */
32656/***/ (function(module, __webpack_exports__, __webpack_require__) {
32657
32658"use strict";
32659__webpack_require__.r(__webpack_exports__);
32660/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectFade; });
32661/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
32662/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
32663/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
32664
32665
32666
32667function EffectFade({
32668  swiper,
32669  extendParams,
32670  on
32671}) {
32672  extendParams({
32673    fadeEffect: {
32674      crossFade: false,
32675      transformEl: null
32676    }
32677  });
32678
32679  const setTranslate = () => {
32680    const {
32681      slides
32682    } = swiper;
32683    const params = swiper.params.fadeEffect;
32684
32685    for (let i = 0; i < slides.length; i += 1) {
32686      const $slideEl = swiper.slides.eq(i);
32687      const offset = $slideEl[0].swiperSlideOffset;
32688      let tx = -offset;
32689      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
32690      let ty = 0;
32691
32692      if (!swiper.isHorizontal()) {
32693        ty = tx;
32694        tx = 0;
32695      }
32696
32697      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
32698      const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl);
32699      $targetEl.css({
32700        opacity: slideOpacity
32701      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);
32702    }
32703  };
32704
32705  const setTransition = duration => {
32706    const {
32707      transformEl
32708    } = swiper.params.fadeEffect;
32709    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
32710    $transitionElements.transition(duration);
32711    Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
32712      swiper,
32713      duration,
32714      transformEl,
32715      allSlides: true
32716    });
32717  };
32718
32719  Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({
32720    effect: 'fade',
32721    swiper,
32722    on,
32723    setTranslate,
32724    setTransition,
32725    overwriteParams: () => ({
32726      slidesPerView: 1,
32727      slidesPerGroup: 1,
32728      watchSlidesProgress: true,
32729      spaceBetween: 0,
32730      virtualTranslate: !swiper.params.cssMode
32731    })
32732  });
32733}
32734
32735/***/ }),
32736
vendor: 5,344 bytes, lines 32737-32877
32737/***/ "./node_modules/swiper/modules/effect-flip/effect-flip.js":
32738/*!****************************************************************!*\
32739  !*** ./node_modules/swiper/modules/effect-flip/effect-flip.js ***!
32740  \****************************************************************/
32741/*! exports provided: default */
32742/***/ (function(module, __webpack_exports__, __webpack_require__) {
32743
32744"use strict";
32745__webpack_require__.r(__webpack_exports__);
32746/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectFlip; });
32747/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
32748/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js");
32749/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js");
32750/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js");
32751/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js");
32752
32753
32754
32755
32756
32757function EffectFlip({
32758  swiper,
32759  extendParams,
32760  on
32761}) {
32762  extendParams({
32763    flipEffect: {
32764      slideShadows: true,
32765      limitRotation: true,
32766      transformEl: null
32767    }
32768  });
32769
32770  const createSlideShadows = ($slideEl, progress, params) => {
32771    let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
32772    let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
32773
32774    if (shadowBefore.length === 0) {
32775      shadowBefore = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');
32776    }
32777
32778    if (shadowAfter.length === 0) {
32779      shadowAfter = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');
32780    }
32781
32782    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
32783    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
32784  };
32785
32786  const recreateShadows = () => {
32787    // Set shadows
32788    const params = swiper.params.flipEffect;
32789    swiper.slides.each(slideEl => {
32790      const $slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl);
32791      let progress = $slideEl[0].progress;
32792
32793      if (swiper.params.flipEffect.limitRotation) {
32794        progress = Math.max(Math.min(slideEl.progress, 1), -1);
32795      }
32796
32797      createSlideShadows($slideEl, progress, params);
32798    });
32799  };
32800
32801  const setTranslate = () => {
32802    const {
32803      slides,
32804      rtlTranslate: rtl
32805    } = swiper;
32806    const params = swiper.params.flipEffect;
32807
32808    for (let i = 0; i < slides.length; i += 1) {
32809      const $slideEl = slides.eq(i);
32810      let progress = $slideEl[0].progress;
32811
32812      if (swiper.params.flipEffect.limitRotation) {
32813        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
32814      }
32815
32816      const offset = $slideEl[0].swiperSlideOffset;
32817      const rotate = -180 * progress;
32818      let rotateY = rotate;
32819      let rotateX = 0;
32820      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;
32821      let ty = 0;
32822
32823      if (!swiper.isHorizontal()) {
32824        ty = tx;
32825        tx = 0;
32826        rotateX = -rotateY;
32827        rotateY = 0;
32828      } else if (rtl) {
32829        rotateY = -rotateY;
32830      }
32831
32832      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
32833
32834      if (params.slideShadows) {
32835        createSlideShadows($slideEl, progress, params);
32836      }
32837
32838      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
32839      const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__["default"])(params, $slideEl);
32840      $targetEl.transform(transform);
32841    }
32842  };
32843
32844  const setTransition = duration => {
32845    const {
32846      transformEl
32847    } = swiper.params.flipEffect;
32848    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;
32849    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
32850    Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__["default"])({
32851      swiper,
32852      duration,
32853      transformEl
32854    });
32855  };
32856
32857  Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__["default"])({
32858    effect: 'flip',
32859    swiper,
32860    on,
32861    setTranslate,
32862    setTransition,
32863    recreateShadows,
32864    getEffectParams: () => swiper.params.flipEffect,
32865    perspective: () => true,
32866    overwriteParams: () => ({
32867      slidesPerView: 1,
32868      slidesPerGroup: 1,
32869      watchSlidesProgress: true,
32870      spaceBetween: 0,
32871      virtualTranslate: !swiper.params.cssMode
32872    })
32873  });
32874}
32875
32876/***/ }),
32877
vendor: 8,952 bytes, lines 32878-33147
32878/***/ "./node_modules/swiper/modules/free-mode/free-mode.js":
32879/*!************************************************************!*\
32880  !*** ./node_modules/swiper/modules/free-mode/free-mode.js ***!
32881  \************************************************************/
32882/*! exports provided: default */
32883/***/ (function(module, __webpack_exports__, __webpack_require__) {
32884
32885"use strict";
32886__webpack_require__.r(__webpack_exports__);
32887/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return freeMode; });
32888/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
32889
32890function freeMode({
32891  swiper,
32892  extendParams,
32893  emit,
32894  once
32895}) {
32896  extendParams({
32897    freeMode: {
32898      enabled: false,
32899      momentum: true,
32900      momentumRatio: 1,
32901      momentumBounce: true,
32902      momentumBounceRatio: 1,
32903      momentumVelocityRatio: 1,
32904      sticky: false,
32905      minimumVelocity: 0.02
32906    }
32907  });
32908
32909  function onTouchStart() {
32910    const translate = swiper.getTranslate();
32911    swiper.setTranslate(translate);
32912    swiper.setTransition(0);
32913    swiper.touchEventsData.velocities.length = 0;
32914    swiper.freeMode.onTouchEnd({
32915      currentPos: swiper.rtl ? swiper.translate : -swiper.translate
32916    });
32917  }
32918
32919  function onTouchMove() {
32920    const {
32921      touchEventsData: data,
32922      touches
32923    } = swiper; // Velocity
32924
32925    if (data.velocities.length === 0) {
32926      data.velocities.push({
32927        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
32928        time: data.touchStartTime
32929      });
32930    }
32931
32932    data.velocities.push({
32933      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
32934      time: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])()
32935    });
32936  }
32937
32938  function onTouchEnd({
32939    currentPos
32940  }) {
32941    const {
32942      params,
32943      $wrapperEl,
32944      rtlTranslate: rtl,
32945      snapGrid,
32946      touchEventsData: data
32947    } = swiper; // Time diff
32948
32949    const touchEndTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])();
32950    const timeDiff = touchEndTime - data.touchStartTime;
32951
32952    if (currentPos < -swiper.minTranslate()) {
32953      swiper.slideTo(swiper.activeIndex);
32954      return;
32955    }
32956
32957    if (currentPos > -swiper.maxTranslate()) {
32958      if (swiper.slides.length < snapGrid.length) {
32959        swiper.slideTo(snapGrid.length - 1);
32960      } else {
32961        swiper.slideTo(swiper.slides.length - 1);
32962      }
32963
32964      return;
32965    }
32966
32967    if (params.freeMode.momentum) {
32968      if (data.velocities.length > 1) {
32969        const lastMoveEvent = data.velocities.pop();
32970        const velocityEvent = data.velocities.pop();
32971        const distance = lastMoveEvent.position - velocityEvent.position;
32972        const time = lastMoveEvent.time - velocityEvent.time;
32973        swiper.velocity = distance / time;
32974        swiper.velocity /= 2;
32975
32976        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {
32977          swiper.velocity = 0;
32978        } // this implies that the user stopped moving a finger then released.
32979        // There would be no events with distance zero, so the last event is stale.
32980
32981
32982        if (time > 150 || Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])() - lastMoveEvent.time > 300) {
32983          swiper.velocity = 0;
32984        }
32985      } else {
32986        swiper.velocity = 0;
32987      }
32988
32989      swiper.velocity *= params.freeMode.momentumVelocityRatio;
32990      data.velocities.length = 0;
32991      let momentumDuration = 1000 * params.freeMode.momentumRatio;
32992      const momentumDistance = swiper.velocity * momentumDuration;
32993      let newPosition = swiper.translate + momentumDistance;
32994      if (rtl) newPosition = -newPosition;
32995      let doBounce = false;
32996      let afterBouncePosition;
32997      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
32998      let needsLoopFix;
32999
33000      if (newPosition < swiper.maxTranslate()) {
33001        if (params.freeMode.momentumBounce) {
33002          if (newPosition + swiper.maxTranslate() < -bounceAmount) {
33003            newPosition = swiper.maxTranslate() - bounceAmount;
33004          }
33005
33006          afterBouncePosition = swiper.maxTranslate();
33007          doBounce = true;
33008          data.allowMomentumBounce = true;
33009        } else {
33010          newPosition = swiper.maxTranslate();
33011        }
33012
33013        if (params.loop && params.centeredSlides) needsLoopFix = true;
33014      } else if (newPosition > swiper.minTranslate()) {
33015        if (params.freeMode.momentumBounce) {
33016          if (newPosition - swiper.minTranslate() > bounceAmount) {
33017            newPosition = swiper.minTranslate() + bounceAmount;
33018          }
33019
33020          afterBouncePosition = swiper.minTranslate();
33021          doBounce = true;
33022          data.allowMomentumBounce = true;
33023        } else {
33024          newPosition = swiper.minTranslate();
33025        }
33026
33027        if (params.loop && params.centeredSlides) needsLoopFix = true;
33028      } else if (params.freeMode.sticky) {
33029        let nextSlide;
33030
33031        for (let j = 0; j < snapGrid.length; j += 1) {
33032          if (snapGrid[j] > -newPosition) {
33033            nextSlide = j;
33034            break;
33035          }
33036        }
33037
33038        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
33039          newPosition = snapGrid[nextSlide];
33040        } else {
33041          newPosition = snapGrid[nextSlide - 1];
33042        }
33043
33044        newPosition = -newPosition;
33045      }
33046
33047      if (needsLoopFix) {
33048        once('transitionEnd', () => {
33049          swiper.loopFix();
33050        });
33051      } // Fix duration
33052
33053
33054      if (swiper.velocity !== 0) {
33055        if (rtl) {
33056          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
33057        } else {
33058          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
33059        }
33060
33061        if (params.freeMode.sticky) {
33062          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity
33063          // event, then durations can be 20+ seconds to slide one (or zero!) slides.
33064          // It's easy to see this when simulating touch with mouse events. To fix this,
33065          // limit single-slide swipes to the default slide duration. This also has the
33066          // nice side effect of matching slide speed if the user stopped moving before
33067          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.
33068          // For faster swipes, also apply limits (albeit higher ones).
33069          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
33070          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
33071
33072          if (moveDistance < currentSlideSize) {
33073            momentumDuration = params.speed;
33074          } else if (moveDistance < 2 * currentSlideSize) {
33075            momentumDuration = params.speed * 1.5;
33076          } else {
33077            momentumDuration = params.speed * 2.5;
33078          }
33079        }
33080      } else if (params.freeMode.sticky) {
33081        swiper.slideToClosest();
33082        return;
33083      }
33084
33085      if (params.freeMode.momentumBounce && doBounce) {
33086        swiper.updateProgress(afterBouncePosition);
33087        swiper.setTransition(momentumDuration);
33088        swiper.setTranslate(newPosition);
33089        swiper.transitionStart(true, swiper.swipeDirection);
33090        swiper.animating = true;
33091        $wrapperEl.transitionEnd(() => {
33092          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
33093          emit('momentumBounce');
33094          swiper.setTransition(params.speed);
33095          setTimeout(() => {
33096            swiper.setTranslate(afterBouncePosition);
33097            $wrapperEl.transitionEnd(() => {
33098              if (!swiper || swiper.destroyed) return;
33099              swiper.transitionEnd();
33100            });
33101          }, 0);
33102        });
33103      } else if (swiper.velocity) {
33104        emit('_freeModeNoMomentumRelease');
33105        swiper.updateProgress(newPosition);
33106        swiper.setTransition(momentumDuration);
33107        swiper.setTranslate(newPosition);
33108        swiper.transitionStart(true, swiper.swipeDirection);
33109
33110        if (!swiper.animating) {
33111          swiper.animating = true;
33112          $wrapperEl.transitionEnd(() => {
33113            if (!swiper || swiper.destroyed) return;
33114            swiper.transitionEnd();
33115          });
33116        }
33117      } else {
33118        swiper.updateProgress(newPosition);
33119      }
33120
33121      swiper.updateActiveIndex();
33122      swiper.updateSlidesClasses();
33123    } else if (params.freeMode.sticky) {
33124      swiper.slideToClosest();
33125      return;
33126    } else if (params.freeMode) {
33127      emit('_freeModeNoMomentumRelease');
33128    }
33129
33130    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {
33131      swiper.updateProgress();
33132      swiper.updateActiveIndex();
33133      swiper.updateSlidesClasses();
33134    }
33135  }
33136
33137  Object.assign(swiper, {
33138    freeMode: {
33139      onTouchStart,
33140      onTouchMove,
33141      onTouchEnd
33142    }
33143  });
33144}
33145
33146/***/ }),
33147
vendor: 3,784 bytes, lines 33148-33276
33148/***/ "./node_modules/swiper/modules/grid/grid.js":
33149/*!**************************************************!*\
33150  !*** ./node_modules/swiper/modules/grid/grid.js ***!
33151  \**************************************************/
33152/*! exports provided: default */
33153/***/ (function(module, __webpack_exports__, __webpack_require__) {
33154
33155"use strict";
33156__webpack_require__.r(__webpack_exports__);
33157/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Grid; });
33158function Grid({
33159  swiper,
33160  extendParams
33161}) {
33162  extendParams({
33163    grid: {
33164      rows: 1,
33165      fill: 'column'
33166    }
33167  });
33168  let slidesNumberEvenToRows;
33169  let slidesPerRow;
33170  let numFullColumns;
33171
33172  const initSlides = slidesLength => {
33173    const {
33174      slidesPerView
33175    } = swiper.params;
33176    const {
33177      rows,
33178      fill
33179    } = swiper.params.grid;
33180    slidesPerRow = slidesNumberEvenToRows / rows;
33181    numFullColumns = Math.floor(slidesLength / rows);
33182
33183    if (Math.floor(slidesLength / rows) === slidesLength / rows) {
33184      slidesNumberEvenToRows = slidesLength;
33185    } else {
33186      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;
33187    }
33188
33189    if (slidesPerView !== 'auto' && fill === 'row') {
33190      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);
33191    }
33192  };
33193
33194  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {
33195    const {
33196      slidesPerGroup,
33197      spaceBetween
33198    } = swiper.params;
33199    const {
33200      rows,
33201      fill
33202    } = swiper.params.grid; // Set slides order
33203
33204    let newSlideOrderIndex;
33205    let column;
33206    let row;
33207
33208    if (fill === 'row' && slidesPerGroup > 1) {
33209      const groupIndex = Math.floor(i / (slidesPerGroup * rows));
33210      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;
33211      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
33212      row = Math.floor(slideIndexInGroup / columnsInGroup);
33213      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
33214      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;
33215      slide.css({
33216        '-webkit-order': newSlideOrderIndex,
33217        order: newSlideOrderIndex
33218      });
33219    } else if (fill === 'column') {
33220      column = Math.floor(i / rows);
33221      row = i - column * rows;
33222
33223      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {
33224        row += 1;
33225
33226        if (row >= rows) {
33227          row = 0;
33228          column += 1;
33229        }
33230      }
33231    } else {
33232      row = Math.floor(i / slidesPerRow);
33233      column = i - row * slidesPerRow;
33234    }
33235
33236    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');
33237  };
33238
33239  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {
33240    const {
33241      spaceBetween,
33242      centeredSlides,
33243      roundLengths
33244    } = swiper.params;
33245    const {
33246      rows
33247    } = swiper.params.grid;
33248    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;
33249    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;
33250    swiper.$wrapperEl.css({
33251      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`
33252    });
33253
33254    if (centeredSlides) {
33255      snapGrid.splice(0, snapGrid.length);
33256      const newSlidesGrid = [];
33257
33258      for (let i = 0; i < snapGrid.length; i += 1) {
33259        let slidesGridItem = snapGrid[i];
33260        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);
33261        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
33262      }
33263
33264      snapGrid.push(...newSlidesGrid);
33265    }
33266  };
33267
33268  swiper.grid = {
33269    initSlides,
33270    updateSlide,
33271    updateWrapperSize
33272  };
33273}
33274
33275/***/ }),
33276
vendor: 3,790 bytes, lines 33277-33387
33277/***/ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js":
33278/*!************************************************************************!*\
33279  !*** ./node_modules/swiper/modules/hash-navigation/hash-navigation.js ***!
33280  \************************************************************************/
33281/*! exports provided: default */
33282/***/ (function(module, __webpack_exports__, __webpack_require__) {
33283
33284"use strict";
33285__webpack_require__.r(__webpack_exports__);
33286/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return HashNavigation; });
33287/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
33288/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
33289
33290
33291function HashNavigation({
33292  swiper,
33293  extendParams,
33294  emit,
33295  on
33296}) {
33297  let initialized = false;
33298  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
33299  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33300  extendParams({
33301    hashNavigation: {
33302      enabled: false,
33303      replaceState: false,
33304      watchState: false
33305    }
33306  });
33307
33308  const onHashChange = () => {
33309    emit('hashChange');
33310    const newHash = document.location.hash.replace('#', '');
33311    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
33312
33313    if (newHash !== activeSlideHash) {
33314      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
33315      if (typeof newIndex === 'undefined') return;
33316      swiper.slideTo(newIndex);
33317    }
33318  };
33319
33320  const setHash = () => {
33321    if (!initialized || !swiper.params.hashNavigation.enabled) return;
33322
33323    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
33324      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');
33325      emit('hashSet');
33326    } else {
33327      const slide = swiper.slides.eq(swiper.activeIndex);
33328      const hash = slide.attr('data-hash') || slide.attr('data-history');
33329      document.location.hash = hash || '';
33330      emit('hashSet');
33331    }
33332  };
33333
33334  const init = () => {
33335    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
33336    initialized = true;
33337    const hash = document.location.hash.replace('#', '');
33338
33339    if (hash) {
33340      const speed = 0;
33341
33342      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
33343        const slide = swiper.slides.eq(i);
33344        const slideHash = slide.attr('data-hash') || slide.attr('data-history');
33345
33346        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
33347          const index = slide.index();
33348          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
33349        }
33350      }
33351    }
33352
33353    if (swiper.params.hashNavigation.watchState) {
33354      Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).on('hashchange', onHashChange);
33355    }
33356  };
33357
33358  const destroy = () => {
33359    if (swiper.params.hashNavigation.watchState) {
33360      Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).off('hashchange', onHashChange);
33361    }
33362  };
33363
33364  on('init', () => {
33365    if (swiper.params.hashNavigation.enabled) {
33366      init();
33367    }
33368  });
33369  on('destroy', () => {
33370    if (swiper.params.hashNavigation.enabled) {
33371      destroy();
33372    }
33373  });
33374  on('transitionEnd _freeModeNoMomentumRelease', () => {
33375    if (initialized) {
33376      setHash();
33377    }
33378  });
33379  on('slideChange', () => {
33380    if (initialized && swiper.params.cssMode) {
33381      setHash();
33382    }
33383  });
33384}
33385
33386/***/ }),
33387
vendor: 4,813 bytes, lines 33388-33556
33388/***/ "./node_modules/swiper/modules/history/history.js":
33389/*!********************************************************!*\
33390  !*** ./node_modules/swiper/modules/history/history.js ***!
33391  \********************************************************/
33392/*! exports provided: default */
33393/***/ (function(module, __webpack_exports__, __webpack_require__) {
33394
33395"use strict";
33396__webpack_require__.r(__webpack_exports__);
33397/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return History; });
33398/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
33399
33400function History({
33401  swiper,
33402  extendParams,
33403  on
33404}) {
33405  extendParams({
33406    history: {
33407      enabled: false,
33408      root: '',
33409      replaceState: false,
33410      key: 'slides',
33411      keepQuery: false
33412    }
33413  });
33414  let initialized = false;
33415  let paths = {};
33416
33417  const slugify = text => {
33418    return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
33419  };
33420
33421  const getPathValues = urlOverride => {
33422    const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33423    let location;
33424
33425    if (urlOverride) {
33426      location = new URL(urlOverride);
33427    } else {
33428      location = window.location;
33429    }
33430
33431    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');
33432    const total = pathArray.length;
33433    const key = pathArray[total - 2];
33434    const value = pathArray[total - 1];
33435    return {
33436      key,
33437      value
33438    };
33439  };
33440
33441  const setHistory = (key, index) => {
33442    const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33443    if (!initialized || !swiper.params.history.enabled) return;
33444    let location;
33445
33446    if (swiper.params.url) {
33447      location = new URL(swiper.params.url);
33448    } else {
33449      location = window.location;
33450    }
33451
33452    const slide = swiper.slides.eq(index);
33453    let value = slugify(slide.attr('data-history'));
33454
33455    if (swiper.params.history.root.length > 0) {
33456      let root = swiper.params.history.root;
33457      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
33458      value = `${root}/${key}/${value}`;
33459    } else if (!location.pathname.includes(key)) {
33460      value = `${key}/${value}`;
33461    }
33462
33463    if (swiper.params.history.keepQuery) {
33464      value += location.search;
33465    }
33466
33467    const currentState = window.history.state;
33468
33469    if (currentState && currentState.value === value) {
33470      return;
33471    }
33472
33473    if (swiper.params.history.replaceState) {
33474      window.history.replaceState({
33475        value
33476      }, null, value);
33477    } else {
33478      window.history.pushState({
33479        value
33480      }, null, value);
33481    }
33482  };
33483
33484  const scrollToSlide = (speed, value, runCallbacks) => {
33485    if (value) {
33486      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {
33487        const slide = swiper.slides.eq(i);
33488        const slideHistory = slugify(slide.attr('data-history'));
33489
33490        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
33491          const index = slide.index();
33492          swiper.slideTo(index, speed, runCallbacks);
33493        }
33494      }
33495    } else {
33496      swiper.slideTo(0, speed, runCallbacks);
33497    }
33498  };
33499
33500  const setHistoryPopState = () => {
33501    paths = getPathValues(swiper.params.url);
33502    scrollToSlide(swiper.params.speed, paths.value, false);
33503  };
33504
33505  const init = () => {
33506    const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33507    if (!swiper.params.history) return;
33508
33509    if (!window.history || !window.history.pushState) {
33510      swiper.params.history.enabled = false;
33511      swiper.params.hashNavigation.enabled = true;
33512      return;
33513    }
33514
33515    initialized = true;
33516    paths = getPathValues(swiper.params.url);
33517    if (!paths.key && !paths.value) return;
33518    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
33519
33520    if (!swiper.params.history.replaceState) {
33521      window.addEventListener('popstate', setHistoryPopState);
33522    }
33523  };
33524
33525  const destroy = () => {
33526    const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33527
33528    if (!swiper.params.history.replaceState) {
33529      window.removeEventListener('popstate', setHistoryPopState);
33530    }
33531  };
33532
33533  on('init', () => {
33534    if (swiper.params.history.enabled) {
33535      init();
33536    }
33537  });
33538  on('destroy', () => {
33539    if (swiper.params.history.enabled) {
33540      destroy();
33541    }
33542  });
33543  on('transitionEnd _freeModeNoMomentumRelease', () => {
33544    if (initialized) {
33545      setHistory(swiper.params.history.key, swiper.activeIndex);
33546    }
33547  });
33548  on('slideChange', () => {
33549    if (initialized && swiper.params.cssMode) {
33550      setHistory(swiper.params.history.key, swiper.activeIndex);
33551    }
33552  });
33553}
33554
33555/***/ }),
33556
vendor: 5,188 bytes, lines 33557-33702
33557/***/ "./node_modules/swiper/modules/keyboard/keyboard.js":
33558/*!**********************************************************!*\
33559  !*** ./node_modules/swiper/modules/keyboard/keyboard.js ***!
33560  \**********************************************************/
33561/*! exports provided: default */
33562/***/ (function(module, __webpack_exports__, __webpack_require__) {
33563
33564"use strict";
33565__webpack_require__.r(__webpack_exports__);
33566/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Keyboard; });
33567/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
33568/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
33569/* eslint-disable consistent-return */
33570
33571
33572function Keyboard({
33573  swiper,
33574  extendParams,
33575  on,
33576  emit
33577}) {
33578  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
33579  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33580  swiper.keyboard = {
33581    enabled: false
33582  };
33583  extendParams({
33584    keyboard: {
33585      enabled: false,
33586      onlyInViewport: true,
33587      pageUpDown: true
33588    }
33589  });
33590
33591  function handle(event) {
33592    if (!swiper.enabled) return;
33593    const {
33594      rtlTranslate: rtl
33595    } = swiper;
33596    let e = event;
33597    if (e.originalEvent) e = e.originalEvent; // jquery fix
33598
33599    const kc = e.keyCode || e.charCode;
33600    const pageUpDown = swiper.params.keyboard.pageUpDown;
33601    const isPageUp = pageUpDown && kc === 33;
33602    const isPageDown = pageUpDown && kc === 34;
33603    const isArrowLeft = kc === 37;
33604    const isArrowRight = kc === 39;
33605    const isArrowUp = kc === 38;
33606    const isArrowDown = kc === 40; // Directions locks
33607
33608    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
33609      return false;
33610    }
33611
33612    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
33613      return false;
33614    }
33615
33616    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
33617      return undefined;
33618    }
33619
33620    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
33621      return undefined;
33622    }
33623
33624    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
33625      let inView = false; // Check that swiper should be inside of visible area of window
33626
33627      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {
33628        return undefined;
33629      }
33630
33631      const $el = swiper.$el;
33632      const swiperWidth = $el[0].clientWidth;
33633      const swiperHeight = $el[0].clientHeight;
33634      const windowWidth = window.innerWidth;
33635      const windowHeight = window.innerHeight;
33636      const swiperOffset = swiper.$el.offset();
33637      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
33638      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
33639
33640      for (let i = 0; i < swiperCoord.length; i += 1) {
33641        const point = swiperCoord[i];
33642
33643        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
33644          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
33645
33646          inView = true;
33647        }
33648      }
33649
33650      if (!inView) return undefined;
33651    }
33652
33653    if (swiper.isHorizontal()) {
33654      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
33655        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
33656      }
33657
33658      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
33659      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
33660    } else {
33661      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
33662        if (e.preventDefault) e.preventDefault();else e.returnValue = false;
33663      }
33664
33665      if (isPageDown || isArrowDown) swiper.slideNext();
33666      if (isPageUp || isArrowUp) swiper.slidePrev();
33667    }
33668
33669    emit('keyPress', kc);
33670    return undefined;
33671  }
33672
33673  function enable() {
33674    if (swiper.keyboard.enabled) return;
33675    Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).on('keydown', handle);
33676    swiper.keyboard.enabled = true;
33677  }
33678
33679  function disable() {
33680    if (!swiper.keyboard.enabled) return;
33681    Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).off('keydown', handle);
33682    swiper.keyboard.enabled = false;
33683  }
33684
33685  on('init', () => {
33686    if (swiper.params.keyboard.enabled) {
33687      enable();
33688    }
33689  });
33690  on('destroy', () => {
33691    if (swiper.keyboard.enabled) {
33692      disable();
33693    }
33694  });
33695  Object.assign(swiper.keyboard, {
33696    enable,
33697    disable
33698  });
33699}
33700
33701/***/ }),
33702
vendor: 10,960 bytes, lines 33703-34004
33703/***/ "./node_modules/swiper/modules/lazy/lazy.js":
33704/*!**************************************************!*\
33705  !*** ./node_modules/swiper/modules/lazy/lazy.js ***!
33706  \**************************************************/
33707/*! exports provided: default */
33708/***/ (function(module, __webpack_exports__, __webpack_require__) {
33709
33710"use strict";
33711__webpack_require__.r(__webpack_exports__);
33712/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Lazy; });
33713/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
33714/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
33715
33716
33717function Lazy({
33718  swiper,
33719  extendParams,
33720  on,
33721  emit
33722}) {
33723  extendParams({
33724    lazy: {
33725      checkInView: false,
33726      enabled: false,
33727      loadPrevNext: false,
33728      loadPrevNextAmount: 1,
33729      loadOnTransitionStart: false,
33730      scrollingElement: '',
33731      elementClass: 'swiper-lazy',
33732      loadingClass: 'swiper-lazy-loading',
33733      loadedClass: 'swiper-lazy-loaded',
33734      preloaderClass: 'swiper-lazy-preloader'
33735    }
33736  });
33737  swiper.lazy = {};
33738  let scrollHandlerAttached = false;
33739  let initialImageLoaded = false;
33740
33741  function loadInSlide(index, loadInDuplicate = true) {
33742    const params = swiper.params.lazy;
33743    if (typeof index === 'undefined') return;
33744    if (swiper.slides.length === 0) return;
33745    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
33746    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index);
33747    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
33748
33749    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
33750      $images.push($slideEl[0]);
33751    }
33752
33753    if ($images.length === 0) return;
33754    $images.each(imageEl => {
33755      const $imageEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl);
33756      $imageEl.addClass(params.loadingClass);
33757      const background = $imageEl.attr('data-background');
33758      const src = $imageEl.attr('data-src');
33759      const srcset = $imageEl.attr('data-srcset');
33760      const sizes = $imageEl.attr('data-sizes');
33761      const $pictureEl = $imageEl.parent('picture');
33762      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {
33763        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
33764
33765        if (background) {
33766          $imageEl.css('background-image', `url("${background}")`);
33767          $imageEl.removeAttr('data-background');
33768        } else {
33769          if (srcset) {
33770            $imageEl.attr('srcset', srcset);
33771            $imageEl.removeAttr('data-srcset');
33772          }
33773
33774          if (sizes) {
33775            $imageEl.attr('sizes', sizes);
33776            $imageEl.removeAttr('data-sizes');
33777          }
33778
33779          if ($pictureEl.length) {
33780            $pictureEl.children('source').each(sourceEl => {
33781              const $source = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(sourceEl);
33782
33783              if ($source.attr('data-srcset')) {
33784                $source.attr('srcset', $source.attr('data-srcset'));
33785                $source.removeAttr('data-srcset');
33786              }
33787            });
33788          }
33789
33790          if (src) {
33791            $imageEl.attr('src', src);
33792            $imageEl.removeAttr('data-src');
33793          }
33794        }
33795
33796        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
33797        $slideEl.find(`.${params.preloaderClass}`).remove();
33798
33799        if (swiper.params.loop && loadInDuplicate) {
33800          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
33801
33802          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
33803            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
33804            loadInSlide(originalSlide.index(), false);
33805          } else {
33806            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
33807            loadInSlide(duplicatedSlide.index(), false);
33808          }
33809        }
33810
33811        emit('lazyImageReady', $slideEl[0], $imageEl[0]);
33812
33813        if (swiper.params.autoHeight) {
33814          swiper.updateAutoHeight();
33815        }
33816      });
33817      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
33818    });
33819  }
33820
33821  function load() {
33822    const {
33823      $wrapperEl,
33824      params: swiperParams,
33825      slides,
33826      activeIndex
33827    } = swiper;
33828    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;
33829    const params = swiperParams.lazy;
33830    let slidesPerView = swiperParams.slidesPerView;
33831
33832    if (slidesPerView === 'auto') {
33833      slidesPerView = 0;
33834    }
33835
33836    function slideExist(index) {
33837      if (isVirtual) {
33838        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) {
33839          return true;
33840        }
33841      } else if (slides[index]) return true;
33842
33843      return false;
33844    }
33845
33846    function slideIndex(slideEl) {
33847      if (isVirtual) {
33848        return Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index');
33849      }
33850
33851      return Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
33852    }
33853
33854    if (!initialImageLoaded) initialImageLoaded = true;
33855
33856    if (swiper.params.watchSlidesProgress) {
33857      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {
33858        const index = isVirtual ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index') : Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index();
33859        loadInSlide(index);
33860      });
33861    } else if (slidesPerView > 1) {
33862      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
33863        if (slideExist(i)) loadInSlide(i);
33864      }
33865    } else {
33866      loadInSlide(activeIndex);
33867    }
33868
33869    if (params.loadPrevNext) {
33870      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
33871        const amount = params.loadPrevNextAmount;
33872        const spv = Math.ceil(slidesPerView);
33873        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
33874        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
33875
33876        for (let i = activeIndex + spv; i < maxIndex; i += 1) {
33877          if (slideExist(i)) loadInSlide(i);
33878        } // Prev Slides
33879
33880
33881        for (let i = minIndex; i < activeIndex; i += 1) {
33882          if (slideExist(i)) loadInSlide(i);
33883        }
33884      } else {
33885        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);
33886        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));
33887        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);
33888        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));
33889      }
33890    }
33891  }
33892
33893  function checkInViewOnLoad() {
33894    const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
33895    if (!swiper || swiper.destroyed) return;
33896    const $scrollElement = swiper.params.lazy.scrollingElement ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.lazy.scrollingElement) : Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window);
33897    const isWindow = $scrollElement[0] === window;
33898    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;
33899    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;
33900    const swiperOffset = swiper.$el.offset();
33901    const {
33902      rtlTranslate: rtl
33903    } = swiper;
33904    let inView = false;
33905    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
33906    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
33907
33908    for (let i = 0; i < swiperCoord.length; i += 1) {
33909      const point = swiperCoord[i];
33910
33911      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {
33912        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line
33913
33914        inView = true;
33915      }
33916    }
33917
33918    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {
33919      passive: true,
33920      capture: false
33921    } : false;
33922
33923    if (inView) {
33924      load();
33925      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);
33926    } else if (!scrollHandlerAttached) {
33927      scrollHandlerAttached = true;
33928      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);
33929    }
33930  }
33931
33932  on('beforeInit', () => {
33933    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
33934      swiper.params.preloadImages = false;
33935    }
33936  });
33937  on('init', () => {
33938    if (swiper.params.lazy.enabled) {
33939      if (swiper.params.lazy.checkInView) {
33940        checkInViewOnLoad();
33941      } else {
33942        load();
33943      }
33944    }
33945  });
33946  on('scroll', () => {
33947    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {
33948      load();
33949    }
33950  });
33951  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {
33952    if (swiper.params.lazy.enabled) {
33953      if (swiper.params.lazy.checkInView) {
33954        checkInViewOnLoad();
33955      } else {
33956        load();
33957      }
33958    }
33959  });
33960  on('transitionStart', () => {
33961    if (swiper.params.lazy.enabled) {
33962      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {
33963        if (swiper.params.lazy.checkInView) {
33964          checkInViewOnLoad();
33965        } else {
33966          load();
33967        }
33968      }
33969    }
33970  });
33971  on('transitionEnd', () => {
33972    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
33973      if (swiper.params.lazy.checkInView) {
33974        checkInViewOnLoad();
33975      } else {
33976        load();
33977      }
33978    }
33979  });
33980  on('slideChange', () => {
33981    const {
33982      lazy,
33983      cssMode,
33984      watchSlidesProgress,
33985      touchReleaseOnEdges,
33986      resistanceRatio
33987    } = swiper.params;
33988
33989    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {
33990      load();
33991    }
33992  });
33993  on('destroy', () => {
33994    if (!swiper.$el) return;
33995    swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);
33996  });
33997  Object.assign(swiper.lazy, {
33998    load,
33999    loadInSlide
34000  });
34001}
34002
34003/***/ }),
34004
vendor: 2,149 bytes, lines 34005-34038
34005/***/ "./node_modules/swiper/modules/manipulation/manipulation.js":
34006/*!******************************************************************!*\
34007  !*** ./node_modules/swiper/modules/manipulation/manipulation.js ***!
34008  \******************************************************************/
34009/*! exports provided: default */
34010/***/ (function(module, __webpack_exports__, __webpack_require__) {
34011
34012"use strict";
34013__webpack_require__.r(__webpack_exports__);
34014/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Manipulation; });
34015/* harmony import */ var _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./methods/appendSlide.js */ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js");
34016/* harmony import */ var _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./methods/prependSlide.js */ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js");
34017/* harmony import */ var _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./methods/addSlide.js */ "./node_modules/swiper/modules/manipulation/methods/addSlide.js");
34018/* harmony import */ var _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./methods/removeSlide.js */ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js");
34019/* harmony import */ var _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./methods/removeAllSlides.js */ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js");
34020
34021
34022
34023
34024
34025function Manipulation({
34026  swiper
34027}) {
34028  Object.assign(swiper, {
34029    appendSlide: _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__["default"].bind(swiper),
34030    prependSlide: _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper),
34031    addSlide: _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper),
34032    removeSlide: _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper),
34033    removeAllSlides: _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__["default"].bind(swiper)
34034  });
34035}
34036
34037/***/ }),
34038
vendor: 2,074 bytes, lines 34039-34115
34039/***/ "./node_modules/swiper/modules/manipulation/methods/addSlide.js":
34040/*!**********************************************************************!*\
34041  !*** ./node_modules/swiper/modules/manipulation/methods/addSlide.js ***!
34042  \**********************************************************************/
34043/*! exports provided: default */
34044/***/ (function(module, __webpack_exports__, __webpack_require__) {
34045
34046"use strict";
34047__webpack_require__.r(__webpack_exports__);
34048/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addSlide; });
34049function addSlide(index, slides) {
34050  const swiper = this;
34051  const {
34052    $wrapperEl,
34053    params,
34054    activeIndex
34055  } = swiper;
34056  let activeIndexBuffer = activeIndex;
34057
34058  if (params.loop) {
34059    activeIndexBuffer -= swiper.loopedSlides;
34060    swiper.loopDestroy();
34061    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
34062  }
34063
34064  const baseLength = swiper.slides.length;
34065
34066  if (index <= 0) {
34067    swiper.prependSlide(slides);
34068    return;
34069  }
34070
34071  if (index >= baseLength) {
34072    swiper.appendSlide(slides);
34073    return;
34074  }
34075
34076  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
34077  const slidesBuffer = [];
34078
34079  for (let i = baseLength - 1; i >= index; i -= 1) {
34080    const currentSlide = swiper.slides.eq(i);
34081    currentSlide.remove();
34082    slidesBuffer.unshift(currentSlide);
34083  }
34084
34085  if (typeof slides === 'object' && 'length' in slides) {
34086    for (let i = 0; i < slides.length; i += 1) {
34087      if (slides[i]) $wrapperEl.append(slides[i]);
34088    }
34089
34090    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
34091  } else {
34092    $wrapperEl.append(slides);
34093  }
34094
34095  for (let i = 0; i < slidesBuffer.length; i += 1) {
34096    $wrapperEl.append(slidesBuffer[i]);
34097  }
34098
34099  if (params.loop) {
34100    swiper.loopCreate();
34101  }
34102
34103  if (!params.observer) {
34104    swiper.update();
34105  }
34106
34107  if (params.loop) {
34108    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
34109  } else {
34110    swiper.slideTo(newActiveIndex, 0, false);
34111  }
34112}
34113
34114/***/ }),
34115
vendor: 1,078 bytes, lines 34116-34155
34116/***/ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js":
34117/*!*************************************************************************!*\
34118  !*** ./node_modules/swiper/modules/manipulation/methods/appendSlide.js ***!
34119  \*************************************************************************/
34120/*! exports provided: default */
34121/***/ (function(module, __webpack_exports__, __webpack_require__) {
34122
34123"use strict";
34124__webpack_require__.r(__webpack_exports__);
34125/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return appendSlide; });
34126function appendSlide(slides) {
34127  const swiper = this;
34128  const {
34129    $wrapperEl,
34130    params
34131  } = swiper;
34132
34133  if (params.loop) {
34134    swiper.loopDestroy();
34135  }
34136
34137  if (typeof slides === 'object' && 'length' in slides) {
34138    for (let i = 0; i < slides.length; i += 1) {
34139      if (slides[i]) $wrapperEl.append(slides[i]);
34140    }
34141  } else {
34142    $wrapperEl.append(slides);
34143  }
34144
34145  if (params.loop) {
34146    swiper.loopCreate();
34147  }
34148
34149  if (!params.observer) {
34150    swiper.update();
34151  }
34152}
34153
34154/***/ }),
34155
vendor: 1,240 bytes, lines 34156-34202
34156/***/ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js":
34157/*!**************************************************************************!*\
34158  !*** ./node_modules/swiper/modules/manipulation/methods/prependSlide.js ***!
34159  \**************************************************************************/
34160/*! exports provided: default */
34161/***/ (function(module, __webpack_exports__, __webpack_require__) {
34162
34163"use strict";
34164__webpack_require__.r(__webpack_exports__);
34165/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return prependSlide; });
34166function prependSlide(slides) {
34167  const swiper = this;
34168  const {
34169    params,
34170    $wrapperEl,
34171    activeIndex
34172  } = swiper;
34173
34174  if (params.loop) {
34175    swiper.loopDestroy();
34176  }
34177
34178  let newActiveIndex = activeIndex + 1;
34179
34180  if (typeof slides === 'object' && 'length' in slides) {
34181    for (let i = 0; i < slides.length; i += 1) {
34182      if (slides[i]) $wrapperEl.prepend(slides[i]);
34183    }
34184
34185    newActiveIndex = activeIndex + slides.length;
34186  } else {
34187    $wrapperEl.prepend(slides);
34188  }
34189
34190  if (params.loop) {
34191    swiper.loopCreate();
34192  }
34193
34194  if (!params.observer) {
34195    swiper.update();
34196  }
34197
34198  swiper.slideTo(newActiveIndex, 0, false);
34199}
34200
34201/***/ }),
34202
vendor: 831 bytes, lines 34203-34225
34203/***/ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js":
34204/*!*****************************************************************************!*\
34205  !*** ./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js ***!
34206  \*****************************************************************************/
34207/*! exports provided: default */
34208/***/ (function(module, __webpack_exports__, __webpack_require__) {
34209
34210"use strict";
34211__webpack_require__.r(__webpack_exports__);
34212/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return removeAllSlides; });
34213function removeAllSlides() {
34214  const swiper = this;
34215  const slidesIndexes = [];
34216
34217  for (let i = 0; i < swiper.slides.length; i += 1) {
34218    slidesIndexes.push(i);
34219  }
34220
34221  swiper.removeSlide(slidesIndexes);
34222}
34223
34224/***/ }),
34225
vendor: 1,869 bytes, lines 34226-34285
34226/***/ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js":
34227/*!*************************************************************************!*\
34228  !*** ./node_modules/swiper/modules/manipulation/methods/removeSlide.js ***!
34229  \*************************************************************************/
34230/*! exports provided: default */
34231/***/ (function(module, __webpack_exports__, __webpack_require__) {
34232
34233"use strict";
34234__webpack_require__.r(__webpack_exports__);
34235/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return removeSlide; });
34236function removeSlide(slidesIndexes) {
34237  const swiper = this;
34238  const {
34239    params,
34240    $wrapperEl,
34241    activeIndex
34242  } = swiper;
34243  let activeIndexBuffer = activeIndex;
34244
34245  if (params.loop) {
34246    activeIndexBuffer -= swiper.loopedSlides;
34247    swiper.loopDestroy();
34248    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);
34249  }
34250
34251  let newActiveIndex = activeIndexBuffer;
34252  let indexToRemove;
34253
34254  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
34255    for (let i = 0; i < slidesIndexes.length; i += 1) {
34256      indexToRemove = slidesIndexes[i];
34257      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
34258      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
34259    }
34260
34261    newActiveIndex = Math.max(newActiveIndex, 0);
34262  } else {
34263    indexToRemove = slidesIndexes;
34264    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
34265    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
34266    newActiveIndex = Math.max(newActiveIndex, 0);
34267  }
34268
34269  if (params.loop) {
34270    swiper.loopCreate();
34271  }
34272
34273  if (!params.observer) {
34274    swiper.update();
34275  }
34276
34277  if (params.loop) {
34278    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
34279  } else {
34280    swiper.slideTo(newActiveIndex, 0, false);
34281  }
34282}
34283
34284/***/ }),
34285
vendor: 15,618 bytes, lines 34286-34723
34286/***/ "./node_modules/swiper/modules/mousewheel/mousewheel.js":
34287/*!**************************************************************!*\
34288  !*** ./node_modules/swiper/modules/mousewheel/mousewheel.js ***!
34289  \**************************************************************/
34290/*! exports provided: default */
34291/***/ (function(module, __webpack_exports__, __webpack_require__) {
34292
34293"use strict";
34294__webpack_require__.r(__webpack_exports__);
34295/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Mousewheel; });
34296/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
34297/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
34298/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
34299/* eslint-disable consistent-return */
34300
34301
34302
34303function Mousewheel({
34304  swiper,
34305  extendParams,
34306  on,
34307  emit
34308}) {
34309  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
34310  extendParams({
34311    mousewheel: {
34312      enabled: false,
34313      releaseOnEdges: false,
34314      invert: false,
34315      forceToAxis: false,
34316      sensitivity: 1,
34317      eventsTarget: 'container',
34318      thresholdDelta: null,
34319      thresholdTime: null
34320    }
34321  });
34322  swiper.mousewheel = {
34323    enabled: false
34324  };
34325  let timeout;
34326  let lastScrollTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])();
34327  let lastEventBeforeSnap;
34328  const recentWheelEvents = [];
34329
34330  function normalize(e) {
34331    // Reasonable defaults
34332    const PIXEL_STEP = 10;
34333    const LINE_HEIGHT = 40;
34334    const PAGE_HEIGHT = 800;
34335    let sX = 0;
34336    let sY = 0; // spinX, spinY
34337
34338    let pX = 0;
34339    let pY = 0; // pixelX, pixelY
34340    // Legacy
34341
34342    if ('detail' in e) {
34343      sY = e.detail;
34344    }
34345
34346    if ('wheelDelta' in e) {
34347      sY = -e.wheelDelta / 120;
34348    }
34349
34350    if ('wheelDeltaY' in e) {
34351      sY = -e.wheelDeltaY / 120;
34352    }
34353
34354    if ('wheelDeltaX' in e) {
34355      sX = -e.wheelDeltaX / 120;
34356    } // side scrolling on FF with DOMMouseScroll
34357
34358
34359    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
34360      sX = sY;
34361      sY = 0;
34362    }
34363
34364    pX = sX * PIXEL_STEP;
34365    pY = sY * PIXEL_STEP;
34366
34367    if ('deltaY' in e) {
34368      pY = e.deltaY;
34369    }
34370
34371    if ('deltaX' in e) {
34372      pX = e.deltaX;
34373    }
34374
34375    if (e.shiftKey && !pX) {
34376      // if user scrolls with shift he wants horizontal scroll
34377      pX = pY;
34378      pY = 0;
34379    }
34380
34381    if ((pX || pY) && e.deltaMode) {
34382      if (e.deltaMode === 1) {
34383        // delta in LINE units
34384        pX *= LINE_HEIGHT;
34385        pY *= LINE_HEIGHT;
34386      } else {
34387        // delta in PAGE units
34388        pX *= PAGE_HEIGHT;
34389        pY *= PAGE_HEIGHT;
34390      }
34391    } // Fall-back if spin cannot be determined
34392
34393
34394    if (pX && !sX) {
34395      sX = pX < 1 ? -1 : 1;
34396    }
34397
34398    if (pY && !sY) {
34399      sY = pY < 1 ? -1 : 1;
34400    }
34401
34402    return {
34403      spinX: sX,
34404      spinY: sY,
34405      pixelX: pX,
34406      pixelY: pY
34407    };
34408  }
34409
34410  function handleMouseEnter() {
34411    if (!swiper.enabled) return;
34412    swiper.mouseEntered = true;
34413  }
34414
34415  function handleMouseLeave() {
34416    if (!swiper.enabled) return;
34417    swiper.mouseEntered = false;
34418  }
34419
34420  function animateSlider(newEvent) {
34421    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {
34422      // Prevent if delta of wheel scroll delta is below configured threshold
34423      return false;
34424    }
34425
34426    if (swiper.params.mousewheel.thresholdTime && Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {
34427      // Prevent if time between scrolls is below configured threshold
34428      return false;
34429    } // If the movement is NOT big enough and
34430    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):
34431    //   Don't go any further (avoid insignificant scroll movement).
34432
34433
34434    if (newEvent.delta >= 6 && Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])() - lastScrollTime < 60) {
34435      // Return false as a default
34436      return true;
34437    } // If user is scrolling towards the end:
34438    //   If the slider hasn't hit the latest slide or
34439    //   if the slider is a loop and
34440    //   if the slider isn't moving right now:
34441    //     Go to next slide and
34442    //     emit a scroll event.
34443    // Else (the user is scrolling towards the beginning) and
34444    // if the slider hasn't hit the first slide or
34445    // if the slider is a loop and
34446    // if the slider isn't moving right now:
34447    //   Go to prev slide and
34448    //   emit a scroll event.
34449
34450
34451    if (newEvent.direction < 0) {
34452      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
34453        swiper.slideNext();
34454        emit('scroll', newEvent.raw);
34455      }
34456    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
34457      swiper.slidePrev();
34458      emit('scroll', newEvent.raw);
34459    } // If you got here is because an animation has been triggered so store the current time
34460
34461
34462    lastScrollTime = new window.Date().getTime(); // Return false as a default
34463
34464    return false;
34465  }
34466
34467  function releaseScroll(newEvent) {
34468    const params = swiper.params.mousewheel;
34469
34470    if (newEvent.direction < 0) {
34471      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
34472        // Return true to animate scroll on edges
34473        return true;
34474      }
34475    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
34476      // Return true to animate scroll on edges
34477      return true;
34478    }
34479
34480    return false;
34481  }
34482
34483  function handle(event) {
34484    let e = event;
34485    let disableParentSwiper = true;
34486    if (!swiper.enabled) return;
34487    const params = swiper.params.mousewheel;
34488
34489    if (swiper.params.cssMode) {
34490      e.preventDefault();
34491    }
34492
34493    let target = swiper.$el;
34494
34495    if (swiper.params.mousewheel.eventsTarget !== 'container') {
34496      target = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
34497    }
34498
34499    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
34500    if (e.originalEvent) e = e.originalEvent; // jquery fix
34501
34502    let delta = 0;
34503    const rtlFactor = swiper.rtlTranslate ? -1 : 1;
34504    const data = normalize(e);
34505
34506    if (params.forceToAxis) {
34507      if (swiper.isHorizontal()) {
34508        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
34509      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
34510    } else {
34511      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
34512    }
34513
34514    if (delta === 0) return true;
34515    if (params.invert) delta = -delta; // Get the scroll positions
34516
34517    let positions = swiper.getTranslate() + delta * params.sensitivity;
34518    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
34519    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:
34520    //     the disableParentSwiper will be true.
34521    // When loop is false:
34522    //     if the scroll positions is not on edge,
34523    //     then the disableParentSwiper will be true.
34524    //     if the scroll on edge positions,
34525    //     then the disableParentSwiper will be false.
34526
34527    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
34528    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
34529
34530    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {
34531      // Register the new event in a variable which stores the relevant data
34532      const newEvent = {
34533        time: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(),
34534        delta: Math.abs(delta),
34535        direction: Math.sign(delta),
34536        raw: event
34537      }; // Keep the most recent events
34538
34539      if (recentWheelEvents.length >= 2) {
34540        recentWheelEvents.shift(); // only store the last N events
34541      }
34542
34543      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
34544      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:
34545      //   If direction has changed or
34546      //   if the scroll is quicker than the previous one:
34547      //     Animate the slider.
34548      // Else (this is the first time the wheel is moved):
34549      //     Animate the slider.
34550
34551      if (prevEvent) {
34552        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
34553          animateSlider(newEvent);
34554        }
34555      } else {
34556        animateSlider(newEvent);
34557      } // If it's time to release the scroll:
34558      //   Return now so you don't hit the preventDefault.
34559
34560
34561      if (releaseScroll(newEvent)) {
34562        return true;
34563      }
34564    } else {
34565      // Freemode or scrollContainer:
34566      // If we recently snapped after a momentum scroll, then ignore wheel events
34567      // to give time for the deceleration to finish. Stop ignoring after 500 msecs
34568      // or if it's a new scroll (larger delta or inverse sign as last event before
34569      // an end-of-momentum snap).
34570      const newEvent = {
34571        time: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(),
34572        delta: Math.abs(delta),
34573        direction: Math.sign(delta)
34574      };
34575      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;
34576
34577      if (!ignoreWheelEvents) {
34578        lastEventBeforeSnap = undefined;
34579
34580        if (swiper.params.loop) {
34581          swiper.loopFix();
34582        }
34583
34584        let position = swiper.getTranslate() + delta * params.sensitivity;
34585        const wasBeginning = swiper.isBeginning;
34586        const wasEnd = swiper.isEnd;
34587        if (position >= swiper.minTranslate()) position = swiper.minTranslate();
34588        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
34589        swiper.setTransition(0);
34590        swiper.setTranslate(position);
34591        swiper.updateProgress();
34592        swiper.updateActiveIndex();
34593        swiper.updateSlidesClasses();
34594
34595        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
34596          swiper.updateSlidesClasses();
34597        }
34598
34599        if (swiper.params.freeMode.sticky) {
34600          // When wheel scrolling starts with sticky (aka snap) enabled, then detect
34601          // the end of a momentum scroll by storing recent (N=15?) wheel events.
34602          // 1. do all N events have decreasing or same (absolute value) delta?
34603          // 2. did all N events arrive in the last M (M=500?) msecs?
34604          // 3. does the earliest event have an (absolute value) delta that's
34605          //    at least P (P=1?) larger than the most recent event's delta?
34606          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?
34607          // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration.
34608          // Snap immediately and ignore remaining wheel events in this scroll.
34609          // See comment above for "remaining wheel events in this scroll" determination.
34610          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.
34611          clearTimeout(timeout);
34612          timeout = undefined;
34613
34614          if (recentWheelEvents.length >= 15) {
34615            recentWheelEvents.shift(); // only store the last N events
34616          }
34617
34618          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
34619          const firstEvent = recentWheelEvents[0];
34620          recentWheelEvents.push(newEvent);
34621
34622          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {
34623            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.
34624            recentWheelEvents.splice(0);
34625          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {
34626            // We're at the end of the deceleration of a momentum scroll, so there's no need
34627            // to wait for more events. Snap ASAP on the next tick.
34628            // Also, because there's some remaining momentum we'll bias the snap in the
34629            // direction of the ongoing scroll because it's better UX for the scroll to snap
34630            // in the same direction as the scroll instead of reversing to snap.  Therefore,
34631            // if it's already scrolled more than 20% in the current direction, keep going.
34632            const snapToThreshold = delta > 0 ? 0.8 : 0.2;
34633            lastEventBeforeSnap = newEvent;
34634            recentWheelEvents.splice(0);
34635            timeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["nextTick"])(() => {
34636              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
34637            }, 0); // no delay; move on next tick
34638          }
34639
34640          if (!timeout) {
34641            // if we get here, then we haven't detected the end of a momentum scroll, so
34642            // we'll consider a scroll "complete" when there haven't been any wheel events
34643            // for 500ms.
34644            timeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["nextTick"])(() => {
34645              const snapToThreshold = 0.5;
34646              lastEventBeforeSnap = newEvent;
34647              recentWheelEvents.splice(0);
34648              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
34649            }, 500);
34650          }
34651        } // Emit event
34652
34653
34654        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay
34655
34656        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions
34657
34658        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
34659      }
34660    }
34661
34662    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
34663    return false;
34664  }
34665
34666  function events(method) {
34667    let target = swiper.$el;
34668
34669    if (swiper.params.mousewheel.eventsTarget !== 'container') {
34670      target = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget);
34671    }
34672
34673    target[method]('mouseenter', handleMouseEnter);
34674    target[method]('mouseleave', handleMouseLeave);
34675    target[method]('wheel', handle);
34676  }
34677
34678  function enable() {
34679    if (swiper.params.cssMode) {
34680      swiper.wrapperEl.removeEventListener('wheel', handle);
34681      return true;
34682    }
34683
34684    if (swiper.mousewheel.enabled) return false;
34685    events('on');
34686    swiper.mousewheel.enabled = true;
34687    return true;
34688  }
34689
34690  function disable() {
34691    if (swiper.params.cssMode) {
34692      swiper.wrapperEl.addEventListener(event, handle);
34693      return true;
34694    }
34695
34696    if (!swiper.mousewheel.enabled) return false;
34697    events('off');
34698    swiper.mousewheel.enabled = false;
34699    return true;
34700  }
34701
34702  on('init', () => {
34703    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
34704      disable();
34705    }
34706
34707    if (swiper.params.mousewheel.enabled) enable();
34708  });
34709  on('destroy', () => {
34710    if (swiper.params.cssMode) {
34711      enable();
34712    }
34713
34714    if (swiper.mousewheel.enabled) disable();
34715  });
34716  Object.assign(swiper.mousewheel, {
34717    enable,
34718    disable
34719  });
34720}
34721
34722/***/ }),
34723
vendor: 6,287 bytes, lines 34724-34945
34724/***/ "./node_modules/swiper/modules/navigation/navigation.js":
34725/*!**************************************************************!*\
34726  !*** ./node_modules/swiper/modules/navigation/navigation.js ***!
34727  \**************************************************************/
34728/*! exports provided: default */
34729/***/ (function(module, __webpack_exports__, __webpack_require__) {
34730
34731"use strict";
34732__webpack_require__.r(__webpack_exports__);
34733/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Navigation; });
34734/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
34735/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
34736
34737
34738function Navigation({
34739  swiper,
34740  extendParams,
34741  on,
34742  emit
34743}) {
34744  extendParams({
34745    navigation: {
34746      nextEl: null,
34747      prevEl: null,
34748      hideOnClick: false,
34749      disabledClass: 'swiper-button-disabled',
34750      hiddenClass: 'swiper-button-hidden',
34751      lockClass: 'swiper-button-lock',
34752      navigationDisabledClass: 'swiper-navigation-disabled'
34753    }
34754  });
34755  swiper.navigation = {
34756    nextEl: null,
34757    $nextEl: null,
34758    prevEl: null,
34759    $prevEl: null
34760  };
34761
34762  function getEl(el) {
34763    let $el;
34764
34765    if (el) {
34766      $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el);
34767
34768      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {
34769        $el = swiper.$el.find(el);
34770      }
34771    }
34772
34773    return $el;
34774  }
34775
34776  function toggleEl($el, disabled) {
34777    const params = swiper.params.navigation;
34778
34779    if ($el && $el.length > 0) {
34780      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);
34781      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;
34782
34783      if (swiper.params.watchOverflow && swiper.enabled) {
34784        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
34785      }
34786    }
34787  }
34788
34789  function update() {
34790    // Update Navigation Buttons
34791    if (swiper.params.loop) return;
34792    const {
34793      $nextEl,
34794      $prevEl
34795    } = swiper.navigation;
34796    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);
34797    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);
34798  }
34799
34800  function onPrevClick(e) {
34801    e.preventDefault();
34802    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
34803    swiper.slidePrev();
34804    emit('navigationPrev');
34805  }
34806
34807  function onNextClick(e) {
34808    e.preventDefault();
34809    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
34810    swiper.slideNext();
34811    emit('navigationNext');
34812  }
34813
34814  function init() {
34815    const params = swiper.params.navigation;
34816    swiper.params.navigation = Object(_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
34817      nextEl: 'swiper-button-next',
34818      prevEl: 'swiper-button-prev'
34819    });
34820    if (!(params.nextEl || params.prevEl)) return;
34821    const $nextEl = getEl(params.nextEl);
34822    const $prevEl = getEl(params.prevEl);
34823
34824    if ($nextEl && $nextEl.length > 0) {
34825      $nextEl.on('click', onNextClick);
34826    }
34827
34828    if ($prevEl && $prevEl.length > 0) {
34829      $prevEl.on('click', onPrevClick);
34830    }
34831
34832    Object.assign(swiper.navigation, {
34833      $nextEl,
34834      nextEl: $nextEl && $nextEl[0],
34835      $prevEl,
34836      prevEl: $prevEl && $prevEl[0]
34837    });
34838
34839    if (!swiper.enabled) {
34840      if ($nextEl) $nextEl.addClass(params.lockClass);
34841      if ($prevEl) $prevEl.addClass(params.lockClass);
34842    }
34843  }
34844
34845  function destroy() {
34846    const {
34847      $nextEl,
34848      $prevEl
34849    } = swiper.navigation;
34850
34851    if ($nextEl && $nextEl.length) {
34852      $nextEl.off('click', onNextClick);
34853      $nextEl.removeClass(swiper.params.navigation.disabledClass);
34854    }
34855
34856    if ($prevEl && $prevEl.length) {
34857      $prevEl.off('click', onPrevClick);
34858      $prevEl.removeClass(swiper.params.navigation.disabledClass);
34859    }
34860  }
34861
34862  on('init', () => {
34863    if (swiper.params.navigation.enabled === false) {
34864      // eslint-disable-next-line
34865      disable();
34866    } else {
34867      init();
34868      update();
34869    }
34870  });
34871  on('toEdge fromEdge lock unlock', () => {
34872    update();
34873  });
34874  on('destroy', () => {
34875    destroy();
34876  });
34877  on('enable disable', () => {
34878    const {
34879      $nextEl,
34880      $prevEl
34881    } = swiper.navigation;
34882
34883    if ($nextEl) {
34884      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
34885    }
34886
34887    if ($prevEl) {
34888      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
34889    }
34890  });
34891  on('click', (_s, e) => {
34892    const {
34893      $nextEl,
34894      $prevEl
34895    } = swiper.navigation;
34896    const targetEl = e.target;
34897
34898    if (swiper.params.navigation.hideOnClick && !Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($prevEl) && !Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($nextEl)) {
34899      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
34900      let isHidden;
34901
34902      if ($nextEl) {
34903        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
34904      } else if ($prevEl) {
34905        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
34906      }
34907
34908      if (isHidden === true) {
34909        emit('navigationShow');
34910      } else {
34911        emit('navigationHide');
34912      }
34913
34914      if ($nextEl) {
34915        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
34916      }
34917
34918      if ($prevEl) {
34919        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
34920      }
34921    }
34922  });
34923
34924  const enable = () => {
34925    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);
34926    init();
34927    update();
34928  };
34929
34930  const disable = () => {
34931    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);
34932    destroy();
34933  };
34934
34935  Object.assign(swiper.navigation, {
34936    enable,
34937    disable,
34938    update,
34939    init,
34940    destroy
34941  });
34942}
34943
34944/***/ }),
34945
vendor: 16,180 bytes, lines 34946-35402
34946/***/ "./node_modules/swiper/modules/pagination/pagination.js":
34947/*!**************************************************************!*\
34948  !*** ./node_modules/swiper/modules/pagination/pagination.js ***!
34949  \**************************************************************/
34950/*! exports provided: default */
34951/***/ (function(module, __webpack_exports__, __webpack_require__) {
34952
34953"use strict";
34954__webpack_require__.r(__webpack_exports__);
34955/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Pagination; });
34956/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
34957/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js");
34958/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
34959
34960
34961
34962function Pagination({
34963  swiper,
34964  extendParams,
34965  on,
34966  emit
34967}) {
34968  const pfx = 'swiper-pagination';
34969  extendParams({
34970    pagination: {
34971      el: null,
34972      bulletElement: 'span',
34973      clickable: false,
34974      hideOnClick: false,
34975      renderBullet: null,
34976      renderProgressbar: null,
34977      renderFraction: null,
34978      renderCustom: null,
34979      progressbarOpposite: false,
34980      type: 'bullets',
34981      // 'bullets' or 'progressbar' or 'fraction' or 'custom'
34982      dynamicBullets: false,
34983      dynamicMainBullets: 1,
34984      formatFractionCurrent: number => number,
34985      formatFractionTotal: number => number,
34986      bulletClass: `${pfx}-bullet`,
34987      bulletActiveClass: `${pfx}-bullet-active`,
34988      modifierClass: `${pfx}-`,
34989      currentClass: `${pfx}-current`,
34990      totalClass: `${pfx}-total`,
34991      hiddenClass: `${pfx}-hidden`,
34992      progressbarFillClass: `${pfx}-progressbar-fill`,
34993      progressbarOppositeClass: `${pfx}-progressbar-opposite`,
34994      clickableClass: `${pfx}-clickable`,
34995      lockClass: `${pfx}-lock`,
34996      horizontalClass: `${pfx}-horizontal`,
34997      verticalClass: `${pfx}-vertical`,
34998      paginationDisabledClass: `${pfx}-disabled`
34999    }
35000  });
35001  swiper.pagination = {
35002    el: null,
35003    $el: null,
35004    bullets: []
35005  };
35006  let bulletSize;
35007  let dynamicBulletIndex = 0;
35008
35009  function isPaginationDisabled() {
35010    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;
35011  }
35012
35013  function setSideBullets($bulletEl, position) {
35014    const {
35015      bulletActiveClass
35016    } = swiper.params.pagination;
35017    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);
35018  }
35019
35020  function update() {
35021    // Render || Update Pagination bullets/items
35022    const rtl = swiper.rtl;
35023    const params = swiper.params.pagination;
35024    if (isPaginationDisabled()) return;
35025    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
35026    const $el = swiper.pagination.$el; // Current/Total
35027
35028    let current;
35029    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
35030
35031    if (swiper.params.loop) {
35032      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
35033
35034      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
35035        current -= slidesLength - swiper.loopedSlides * 2;
35036      }
35037
35038      if (current > total - 1) current -= total;
35039      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
35040    } else if (typeof swiper.snapIndex !== 'undefined') {
35041      current = swiper.snapIndex;
35042    } else {
35043      current = swiper.activeIndex || 0;
35044    } // Types
35045
35046
35047    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
35048      const bullets = swiper.pagination.bullets;
35049      let firstIndex;
35050      let lastIndex;
35051      let midIndex;
35052
35053      if (params.dynamicBullets) {
35054        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
35055        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);
35056
35057        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
35058          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);
35059
35060          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {
35061            dynamicBulletIndex = params.dynamicMainBullets - 1;
35062          } else if (dynamicBulletIndex < 0) {
35063            dynamicBulletIndex = 0;
35064          }
35065        }
35066
35067        firstIndex = Math.max(current - dynamicBulletIndex, 0);
35068        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
35069        midIndex = (lastIndex + firstIndex) / 2;
35070      }
35071
35072      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));
35073
35074      if ($el.length > 1) {
35075        bullets.each(bullet => {
35076          const $bullet = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bullet);
35077          const bulletIndex = $bullet.index();
35078
35079          if (bulletIndex === current) {
35080            $bullet.addClass(params.bulletActiveClass);
35081          }
35082
35083          if (params.dynamicBullets) {
35084            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
35085              $bullet.addClass(`${params.bulletActiveClass}-main`);
35086            }
35087
35088            if (bulletIndex === firstIndex) {
35089              setSideBullets($bullet, 'prev');
35090            }
35091
35092            if (bulletIndex === lastIndex) {
35093              setSideBullets($bullet, 'next');
35094            }
35095          }
35096        });
35097      } else {
35098        const $bullet = bullets.eq(current);
35099        const bulletIndex = $bullet.index();
35100        $bullet.addClass(params.bulletActiveClass);
35101
35102        if (params.dynamicBullets) {
35103          const $firstDisplayedBullet = bullets.eq(firstIndex);
35104          const $lastDisplayedBullet = bullets.eq(lastIndex);
35105
35106          for (let i = firstIndex; i <= lastIndex; i += 1) {
35107            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
35108          }
35109
35110          if (swiper.params.loop) {
35111            if (bulletIndex >= bullets.length) {
35112              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {
35113                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
35114              }
35115
35116              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
35117            } else {
35118              setSideBullets($firstDisplayedBullet, 'prev');
35119              setSideBullets($lastDisplayedBullet, 'next');
35120            }
35121          } else {
35122            setSideBullets($firstDisplayedBullet, 'prev');
35123            setSideBullets($lastDisplayedBullet, 'next');
35124          }
35125        }
35126      }
35127
35128      if (params.dynamicBullets) {
35129        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
35130        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
35131        const offsetProp = rtl ? 'right' : 'left';
35132        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);
35133      }
35134    }
35135
35136    if (params.type === 'fraction') {
35137      $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.currentClass)).text(params.formatFractionCurrent(current + 1));
35138      $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.totalClass)).text(params.formatFractionTotal(total));
35139    }
35140
35141    if (params.type === 'progressbar') {
35142      let progressbarDirection;
35143
35144      if (params.progressbarOpposite) {
35145        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
35146      } else {
35147        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
35148      }
35149
35150      const scale = (current + 1) / total;
35151      let scaleX = 1;
35152      let scaleY = 1;
35153
35154      if (progressbarDirection === 'horizontal') {
35155        scaleX = scale;
35156      } else {
35157        scaleY = scale;
35158      }
35159
35160      $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
35161    }
35162
35163    if (params.type === 'custom' && params.renderCustom) {
35164      $el.html(params.renderCustom(swiper, current + 1, total));
35165      emit('paginationRender', $el[0]);
35166    } else {
35167      emit('paginationUpdate', $el[0]);
35168    }
35169
35170    if (swiper.params.watchOverflow && swiper.enabled) {
35171      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
35172    }
35173  }
35174
35175  function render() {
35176    // Render Container
35177    const params = swiper.params.pagination;
35178    if (isPaginationDisabled()) return;
35179    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
35180    const $el = swiper.pagination.$el;
35181    let paginationHTML = '';
35182
35183    if (params.type === 'bullets') {
35184      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
35185
35186      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {
35187        numberOfBullets = slidesLength;
35188      }
35189
35190      for (let i = 0; i < numberOfBullets; i += 1) {
35191        if (params.renderBullet) {
35192          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
35193        } else {
35194          paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
35195        }
35196      }
35197
35198      $el.html(paginationHTML);
35199      swiper.pagination.bullets = $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
35200    }
35201
35202    if (params.type === 'fraction') {
35203      if (params.renderFraction) {
35204        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
35205      } else {
35206        paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
35207      }
35208
35209      $el.html(paginationHTML);
35210    }
35211
35212    if (params.type === 'progressbar') {
35213      if (params.renderProgressbar) {
35214        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
35215      } else {
35216        paginationHTML = `<span class="${params.progressbarFillClass}"></span>`;
35217      }
35218
35219      $el.html(paginationHTML);
35220    }
35221
35222    if (params.type !== 'custom') {
35223      emit('paginationRender', swiper.pagination.$el[0]);
35224    }
35225  }
35226
35227  function init() {
35228    swiper.params.pagination = Object(_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__["default"])(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
35229      el: 'swiper-pagination'
35230    });
35231    const params = swiper.params.pagination;
35232    if (!params.el) return;
35233    let $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.el);
35234    if ($el.length === 0) return;
35235
35236    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
35237      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper
35238
35239      if ($el.length > 1) {
35240        $el = $el.filter(el => {
35241          if (Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el).parents('.swiper')[0] !== swiper.el) return false;
35242          return true;
35243        });
35244      }
35245    }
35246
35247    if (params.type === 'bullets' && params.clickable) {
35248      $el.addClass(params.clickableClass);
35249    }
35250
35251    $el.addClass(params.modifierClass + params.type);
35252    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
35253
35254    if (params.type === 'bullets' && params.dynamicBullets) {
35255      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);
35256      dynamicBulletIndex = 0;
35257
35258      if (params.dynamicMainBullets < 1) {
35259        params.dynamicMainBullets = 1;
35260      }
35261    }
35262
35263    if (params.type === 'progressbar' && params.progressbarOpposite) {
35264      $el.addClass(params.progressbarOppositeClass);
35265    }
35266
35267    if (params.clickable) {
35268      $el.on('click', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass), function onClick(e) {
35269        e.preventDefault();
35270        let index = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this).index() * swiper.params.slidesPerGroup;
35271        if (swiper.params.loop) index += swiper.loopedSlides;
35272        swiper.slideTo(index);
35273      });
35274    }
35275
35276    Object.assign(swiper.pagination, {
35277      $el,
35278      el: $el[0]
35279    });
35280
35281    if (!swiper.enabled) {
35282      $el.addClass(params.lockClass);
35283    }
35284  }
35285
35286  function destroy() {
35287    const params = swiper.params.pagination;
35288    if (isPaginationDisabled()) return;
35289    const $el = swiper.pagination.$el;
35290    $el.removeClass(params.hiddenClass);
35291    $el.removeClass(params.modifierClass + params.type);
35292    $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
35293    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
35294
35295    if (params.clickable) {
35296      $el.off('click', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass));
35297    }
35298  }
35299
35300  on('init', () => {
35301    if (swiper.params.pagination.enabled === false) {
35302      // eslint-disable-next-line
35303      disable();
35304    } else {
35305      init();
35306      render();
35307      update();
35308    }
35309  });
35310  on('activeIndexChange', () => {
35311    if (swiper.params.loop) {
35312      update();
35313    } else if (typeof swiper.snapIndex === 'undefined') {
35314      update();
35315    }
35316  });
35317  on('snapIndexChange', () => {
35318    if (!swiper.params.loop) {
35319      update();
35320    }
35321  });
35322  on('slidesLengthChange', () => {
35323    if (swiper.params.loop) {
35324      render();
35325      update();
35326    }
35327  });
35328  on('snapGridLengthChange', () => {
35329    if (!swiper.params.loop) {
35330      render();
35331      update();
35332    }
35333  });
35334  on('destroy', () => {
35335    destroy();
35336  });
35337  on('enable disable', () => {
35338    const {
35339      $el
35340    } = swiper.pagination;
35341
35342    if ($el) {
35343      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);
35344    }
35345  });
35346  on('lock unlock', () => {
35347    update();
35348  });
35349  on('click', (_s, e) => {
35350    const targetEl = e.target;
35351    const {
35352      $el
35353    } = swiper.pagination;
35354
35355    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
35356      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
35357      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);
35358
35359      if (isHidden === true) {
35360        emit('paginationShow');
35361      } else {
35362        emit('paginationHide');
35363      }
35364
35365      $el.toggleClass(swiper.params.pagination.hiddenClass);
35366    }
35367  });
35368
35369  const enable = () => {
35370    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
35371
35372    if (swiper.pagination.$el) {
35373      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
35374    }
35375
35376    init();
35377    render();
35378    update();
35379  };
35380
35381  const disable = () => {
35382    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);
35383
35384    if (swiper.pagination.$el) {
35385      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);
35386    }
35387
35388    destroy();
35389  };
35390
35391  Object.assign(swiper.pagination, {
35392    enable,
35393    disable,
35394    render,
35395    update,
35396    init,
35397    destroy
35398  });
35399}
35400
35401/***/ }),
35402
vendor: 4,300 bytes, lines 35403-35530
35403/***/ "./node_modules/swiper/modules/parallax/parallax.js":
35404/*!**********************************************************!*\
35405  !*** ./node_modules/swiper/modules/parallax/parallax.js ***!
35406  \**********************************************************/
35407/*! exports provided: default */
35408/***/ (function(module, __webpack_exports__, __webpack_require__) {
35409
35410"use strict";
35411__webpack_require__.r(__webpack_exports__);
35412/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Parallax; });
35413/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
35414
35415function Parallax({
35416  swiper,
35417  extendParams,
35418  on
35419}) {
35420  extendParams({
35421    parallax: {
35422      enabled: false
35423    }
35424  });
35425
35426  const setTransform = (el, progress) => {
35427    const {
35428      rtl
35429    } = swiper;
35430    const $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el);
35431    const rtlFactor = rtl ? -1 : 1;
35432    const p = $el.attr('data-swiper-parallax') || '0';
35433    let x = $el.attr('data-swiper-parallax-x');
35434    let y = $el.attr('data-swiper-parallax-y');
35435    const scale = $el.attr('data-swiper-parallax-scale');
35436    const opacity = $el.attr('data-swiper-parallax-opacity');
35437
35438    if (x || y) {
35439      x = x || '0';
35440      y = y || '0';
35441    } else if (swiper.isHorizontal()) {
35442      x = p;
35443      y = '0';
35444    } else {
35445      y = p;
35446      x = '0';
35447    }
35448
35449    if (x.indexOf('%') >= 0) {
35450      x = `${parseInt(x, 10) * progress * rtlFactor}%`;
35451    } else {
35452      x = `${x * progress * rtlFactor}px`;
35453    }
35454
35455    if (y.indexOf('%') >= 0) {
35456      y = `${parseInt(y, 10) * progress}%`;
35457    } else {
35458      y = `${y * progress}px`;
35459    }
35460
35461    if (typeof opacity !== 'undefined' && opacity !== null) {
35462      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
35463      $el[0].style.opacity = currentOpacity;
35464    }
35465
35466    if (typeof scale === 'undefined' || scale === null) {
35467      $el.transform(`translate3d(${x}, ${y}, 0px)`);
35468    } else {
35469      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
35470      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
35471    }
35472  };
35473
35474  const setTranslate = () => {
35475    const {
35476      $el,
35477      slides,
35478      progress,
35479      snapGrid
35480    } = swiper;
35481    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {
35482      setTransform(el, progress);
35483    });
35484    slides.each((slideEl, slideIndex) => {
35485      let slideProgress = slideEl.progress;
35486
35487      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
35488        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
35489      }
35490
35491      slideProgress = Math.min(Math.max(slideProgress, -1), 1);
35492      Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {
35493        setTransform(el, slideProgress);
35494      });
35495    });
35496  };
35497
35498  const setTransition = (duration = swiper.params.speed) => {
35499    const {
35500      $el
35501    } = swiper;
35502    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {
35503      const $parallaxEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(parallaxEl);
35504      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
35505      if (duration === 0) parallaxDuration = 0;
35506      $parallaxEl.transition(parallaxDuration);
35507    });
35508  };
35509
35510  on('beforeInit', () => {
35511    if (!swiper.params.parallax.enabled) return;
35512    swiper.params.watchSlidesProgress = true;
35513    swiper.originalParams.watchSlidesProgress = true;
35514  });
35515  on('init', () => {
35516    if (!swiper.params.parallax.enabled) return;
35517    setTranslate();
35518  });
35519  on('setTranslate', () => {
35520    if (!swiper.params.parallax.enabled) return;
35521    setTranslate();
35522  });
35523  on('setTransition', (_swiper, duration) => {
35524    if (!swiper.params.parallax.enabled) return;
35525    setTransition(duration);
35526  });
35527}
35528
35529/***/ }),
35530
vendor: 11,764 bytes, lines 35531-35950
35531/***/ "./node_modules/swiper/modules/scrollbar/scrollbar.js":
35532/*!************************************************************!*\
35533  !*** ./node_modules/swiper/modules/scrollbar/scrollbar.js ***!
35534  \************************************************************/
35535/*! exports provided: default */
35536/***/ (function(module, __webpack_exports__, __webpack_require__) {
35537
35538"use strict";
35539__webpack_require__.r(__webpack_exports__);
35540/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Scrollbar; });
35541/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
35542/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
35543/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
35544/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js");
35545
35546
35547
35548
35549function Scrollbar({
35550  swiper,
35551  extendParams,
35552  on,
35553  emit
35554}) {
35555  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
35556  let isTouched = false;
35557  let timeout = null;
35558  let dragTimeout = null;
35559  let dragStartPos;
35560  let dragSize;
35561  let trackSize;
35562  let divider;
35563  extendParams({
35564    scrollbar: {
35565      el: null,
35566      dragSize: 'auto',
35567      hide: false,
35568      draggable: false,
35569      snapOnRelease: true,
35570      lockClass: 'swiper-scrollbar-lock',
35571      dragClass: 'swiper-scrollbar-drag',
35572      scrollbarDisabledClass: 'swiper-scrollbar-disabled',
35573      horizontalClass: `swiper-scrollbar-horizontal`,
35574      verticalClass: `swiper-scrollbar-vertical`
35575    }
35576  });
35577  swiper.scrollbar = {
35578    el: null,
35579    dragEl: null,
35580    $el: null,
35581    $dragEl: null
35582  };
35583
35584  function setTranslate() {
35585    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
35586    const {
35587      scrollbar,
35588      rtlTranslate: rtl,
35589      progress
35590    } = swiper;
35591    const {
35592      $dragEl,
35593      $el
35594    } = scrollbar;
35595    const params = swiper.params.scrollbar;
35596    let newSize = dragSize;
35597    let newPos = (trackSize - dragSize) * progress;
35598
35599    if (rtl) {
35600      newPos = -newPos;
35601
35602      if (newPos > 0) {
35603        newSize = dragSize - newPos;
35604        newPos = 0;
35605      } else if (-newPos + dragSize > trackSize) {
35606        newSize = trackSize + newPos;
35607      }
35608    } else if (newPos < 0) {
35609      newSize = dragSize + newPos;
35610      newPos = 0;
35611    } else if (newPos + dragSize > trackSize) {
35612      newSize = trackSize - newPos;
35613    }
35614
35615    if (swiper.isHorizontal()) {
35616      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
35617      $dragEl[0].style.width = `${newSize}px`;
35618    } else {
35619      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
35620      $dragEl[0].style.height = `${newSize}px`;
35621    }
35622
35623    if (params.hide) {
35624      clearTimeout(timeout);
35625      $el[0].style.opacity = 1;
35626      timeout = setTimeout(() => {
35627        $el[0].style.opacity = 0;
35628        $el.transition(400);
35629      }, 1000);
35630    }
35631  }
35632
35633  function setTransition(duration) {
35634    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
35635    swiper.scrollbar.$dragEl.transition(duration);
35636  }
35637
35638  function updateSize() {
35639    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
35640    const {
35641      scrollbar
35642    } = swiper;
35643    const {
35644      $dragEl,
35645      $el
35646    } = scrollbar;
35647    $dragEl[0].style.width = '';
35648    $dragEl[0].style.height = '';
35649    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
35650    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));
35651
35652    if (swiper.params.scrollbar.dragSize === 'auto') {
35653      dragSize = trackSize * divider;
35654    } else {
35655      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
35656    }
35657
35658    if (swiper.isHorizontal()) {
35659      $dragEl[0].style.width = `${dragSize}px`;
35660    } else {
35661      $dragEl[0].style.height = `${dragSize}px`;
35662    }
35663
35664    if (divider >= 1) {
35665      $el[0].style.display = 'none';
35666    } else {
35667      $el[0].style.display = '';
35668    }
35669
35670    if (swiper.params.scrollbar.hide) {
35671      $el[0].style.opacity = 0;
35672    }
35673
35674    if (swiper.params.watchOverflow && swiper.enabled) {
35675      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
35676    }
35677  }
35678
35679  function getPointerPosition(e) {
35680    if (swiper.isHorizontal()) {
35681      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
35682    }
35683
35684    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
35685  }
35686
35687  function setDragPosition(e) {
35688    const {
35689      scrollbar,
35690      rtlTranslate: rtl
35691    } = swiper;
35692    const {
35693      $el
35694    } = scrollbar;
35695    let positionRatio;
35696    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
35697    positionRatio = Math.max(Math.min(positionRatio, 1), 0);
35698
35699    if (rtl) {
35700      positionRatio = 1 - positionRatio;
35701    }
35702
35703    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
35704    swiper.updateProgress(position);
35705    swiper.setTranslate(position);
35706    swiper.updateActiveIndex();
35707    swiper.updateSlidesClasses();
35708  }
35709
35710  function onDragStart(e) {
35711    const params = swiper.params.scrollbar;
35712    const {
35713      scrollbar,
35714      $wrapperEl
35715    } = swiper;
35716    const {
35717      $el,
35718      $dragEl
35719    } = scrollbar;
35720    isTouched = true;
35721    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
35722    e.preventDefault();
35723    e.stopPropagation();
35724    $wrapperEl.transition(100);
35725    $dragEl.transition(100);
35726    setDragPosition(e);
35727    clearTimeout(dragTimeout);
35728    $el.transition(0);
35729
35730    if (params.hide) {
35731      $el.css('opacity', 1);
35732    }
35733
35734    if (swiper.params.cssMode) {
35735      swiper.$wrapperEl.css('scroll-snap-type', 'none');
35736    }
35737
35738    emit('scrollbarDragStart', e);
35739  }
35740
35741  function onDragMove(e) {
35742    const {
35743      scrollbar,
35744      $wrapperEl
35745    } = swiper;
35746    const {
35747      $el,
35748      $dragEl
35749    } = scrollbar;
35750    if (!isTouched) return;
35751    if (e.preventDefault) e.preventDefault();else e.returnValue = false;
35752    setDragPosition(e);
35753    $wrapperEl.transition(0);
35754    $el.transition(0);
35755    $dragEl.transition(0);
35756    emit('scrollbarDragMove', e);
35757  }
35758
35759  function onDragEnd(e) {
35760    const params = swiper.params.scrollbar;
35761    const {
35762      scrollbar,
35763      $wrapperEl
35764    } = swiper;
35765    const {
35766      $el
35767    } = scrollbar;
35768    if (!isTouched) return;
35769    isTouched = false;
35770
35771    if (swiper.params.cssMode) {
35772      swiper.$wrapperEl.css('scroll-snap-type', '');
35773      $wrapperEl.transition('');
35774    }
35775
35776    if (params.hide) {
35777      clearTimeout(dragTimeout);
35778      dragTimeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["nextTick"])(() => {
35779        $el.css('opacity', 0);
35780        $el.transition(400);
35781      }, 1000);
35782    }
35783
35784    emit('scrollbarDragEnd', e);
35785
35786    if (params.snapOnRelease) {
35787      swiper.slideToClosest();
35788    }
35789  }
35790
35791  function events(method) {
35792    const {
35793      scrollbar,
35794      touchEventsTouch,
35795      touchEventsDesktop,
35796      params,
35797      support
35798    } = swiper;
35799    const $el = scrollbar.$el;
35800    if (!$el) return;
35801    const target = $el[0];
35802    const activeListener = support.passiveListener && params.passiveListeners ? {
35803      passive: false,
35804      capture: false
35805    } : false;
35806    const passiveListener = support.passiveListener && params.passiveListeners ? {
35807      passive: true,
35808      capture: false
35809    } : false;
35810    if (!target) return;
35811    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';
35812
35813    if (!support.touch) {
35814      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);
35815      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);
35816      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);
35817    } else {
35818      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);
35819      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);
35820      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);
35821    }
35822  }
35823
35824  function enableDraggable() {
35825    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
35826    events('on');
35827  }
35828
35829  function disableDraggable() {
35830    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
35831    events('off');
35832  }
35833
35834  function init() {
35835    const {
35836      scrollbar,
35837      $el: $swiperEl
35838    } = swiper;
35839    swiper.params.scrollbar = Object(_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__["default"])(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
35840      el: 'swiper-scrollbar'
35841    });
35842    const params = swiper.params.scrollbar;
35843    if (!params.el) return;
35844    let $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el);
35845
35846    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
35847      $el = $swiperEl.find(params.el);
35848    }
35849
35850    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
35851    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
35852
35853    if ($dragEl.length === 0) {
35854      $dragEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
35855      $el.append($dragEl);
35856    }
35857
35858    Object.assign(scrollbar, {
35859      $el,
35860      el: $el[0],
35861      $dragEl,
35862      dragEl: $dragEl[0]
35863    });
35864
35865    if (params.draggable) {
35866      enableDraggable();
35867    }
35868
35869    if ($el) {
35870      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
35871    }
35872  }
35873
35874  function destroy() {
35875    const params = swiper.params.scrollbar;
35876    const $el = swiper.scrollbar.$el;
35877
35878    if ($el) {
35879      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
35880    }
35881
35882    disableDraggable();
35883  }
35884
35885  on('init', () => {
35886    if (swiper.params.scrollbar.enabled === false) {
35887      // eslint-disable-next-line
35888      disable();
35889    } else {
35890      init();
35891      updateSize();
35892      setTranslate();
35893    }
35894  });
35895  on('update resize observerUpdate lock unlock', () => {
35896    updateSize();
35897  });
35898  on('setTranslate', () => {
35899    setTranslate();
35900  });
35901  on('setTransition', (_s, duration) => {
35902    setTransition(duration);
35903  });
35904  on('enable disable', () => {
35905    const {
35906      $el
35907    } = swiper.scrollbar;
35908
35909    if ($el) {
35910      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
35911    }
35912  });
35913  on('destroy', () => {
35914    destroy();
35915  });
35916
35917  const enable = () => {
35918    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
35919
35920    if (swiper.scrollbar.$el) {
35921      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
35922    }
35923
35924    init();
35925    updateSize();
35926    setTranslate();
35927  };
35928
35929  const disable = () => {
35930    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
35931
35932    if (swiper.scrollbar.$el) {
35933      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
35934    }
35935
35936    destroy();
35937  };
35938
35939  Object.assign(swiper.scrollbar, {
35940    enable,
35941    disable,
35942    updateSize,
35943    setTranslate,
35944    init,
35945    destroy
35946  });
35947}
35948
35949/***/ }),
35950
vendor: 8,496 bytes, lines 35951-36168
35951/***/ "./node_modules/swiper/modules/thumbs/thumbs.js":
35952/*!******************************************************!*\
35953  !*** ./node_modules/swiper/modules/thumbs/thumbs.js ***!
35954  \******************************************************/
35955/*! exports provided: default */
35956/***/ (function(module, __webpack_exports__, __webpack_require__) {
35957
35958"use strict";
35959__webpack_require__.r(__webpack_exports__);
35960/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Thumb; });
35961/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
35962/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
35963
35964
35965function Thumb({
35966  swiper,
35967  extendParams,
35968  on
35969}) {
35970  extendParams({
35971    thumbs: {
35972      swiper: null,
35973      multipleActiveThumbs: true,
35974      autoScrollOffset: 0,
35975      slideThumbActiveClass: 'swiper-slide-thumb-active',
35976      thumbsContainerClass: 'swiper-thumbs'
35977    }
35978  });
35979  let initialized = false;
35980  let swiperCreated = false;
35981  swiper.thumbs = {
35982    swiper: null
35983  };
35984
35985  function onThumbClick() {
35986    const thumbsSwiper = swiper.thumbs.swiper;
35987    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
35988    const clickedIndex = thumbsSwiper.clickedIndex;
35989    const clickedSlide = thumbsSwiper.clickedSlide;
35990    if (clickedSlide && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
35991    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
35992    let slideToIndex;
35993
35994    if (thumbsSwiper.params.loop) {
35995      slideToIndex = parseInt(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
35996    } else {
35997      slideToIndex = clickedIndex;
35998    }
35999
36000    if (swiper.params.loop) {
36001      let currentIndex = swiper.activeIndex;
36002
36003      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
36004        swiper.loopFix(); // eslint-disable-next-line
36005
36006        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
36007        currentIndex = swiper.activeIndex;
36008      }
36009
36010      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
36011      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
36012      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
36013    }
36014
36015    swiper.slideTo(slideToIndex);
36016  }
36017
36018  function init() {
36019    const {
36020      thumbs: thumbsParams
36021    } = swiper.params;
36022    if (initialized) return false;
36023    initialized = true;
36024    const SwiperClass = swiper.constructor;
36025
36026    if (thumbsParams.swiper instanceof SwiperClass) {
36027      swiper.thumbs.swiper = thumbsParams.swiper;
36028      Object.assign(swiper.thumbs.swiper.originalParams, {
36029        watchSlidesProgress: true,
36030        slideToClickedSlide: false
36031      });
36032      Object.assign(swiper.thumbs.swiper.params, {
36033        watchSlidesProgress: true,
36034        slideToClickedSlide: false
36035      });
36036    } else if (Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(thumbsParams.swiper)) {
36037      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);
36038      Object.assign(thumbsSwiperParams, {
36039        watchSlidesProgress: true,
36040        slideToClickedSlide: false
36041      });
36042      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);
36043      swiperCreated = true;
36044    }
36045
36046    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
36047    swiper.thumbs.swiper.on('tap', onThumbClick);
36048    return true;
36049  }
36050
36051  function update(initial) {
36052    const thumbsSwiper = swiper.thumbs.swiper;
36053    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
36054    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs
36055
36056    let thumbsToActivate = 1;
36057    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
36058
36059    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
36060      thumbsToActivate = swiper.params.slidesPerView;
36061    }
36062
36063    if (!swiper.params.thumbs.multipleActiveThumbs) {
36064      thumbsToActivate = 1;
36065    }
36066
36067    thumbsToActivate = Math.floor(thumbsToActivate);
36068    thumbsSwiper.slides.removeClass(thumbActiveClass);
36069
36070    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
36071      for (let i = 0; i < thumbsToActivate; i += 1) {
36072        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
36073      }
36074    } else {
36075      for (let i = 0; i < thumbsToActivate; i += 1) {
36076        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
36077      }
36078    }
36079
36080    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
36081    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
36082
36083    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
36084      let currentThumbsIndex = thumbsSwiper.activeIndex;
36085      let newThumbsIndex;
36086      let direction;
36087
36088      if (thumbsSwiper.params.loop) {
36089        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
36090          thumbsSwiper.loopFix(); // eslint-disable-next-line
36091
36092          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
36093          currentThumbsIndex = thumbsSwiper.activeIndex;
36094        } // Find actual thumbs index to slide to
36095
36096
36097        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
36098        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
36099
36100        if (typeof prevThumbsIndex === 'undefined') {
36101          newThumbsIndex = nextThumbsIndex;
36102        } else if (typeof nextThumbsIndex === 'undefined') {
36103          newThumbsIndex = prevThumbsIndex;
36104        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {
36105          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;
36106        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {
36107          newThumbsIndex = nextThumbsIndex;
36108        } else {
36109          newThumbsIndex = prevThumbsIndex;
36110        }
36111
36112        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
36113      } else {
36114        newThumbsIndex = swiper.realIndex;
36115        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
36116      }
36117
36118      if (useOffset) {
36119        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
36120      }
36121
36122      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
36123        if (thumbsSwiper.params.centeredSlides) {
36124          if (newThumbsIndex > currentThumbsIndex) {
36125            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
36126          } else {
36127            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
36128          }
36129        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;
36130        }
36131
36132        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
36133      }
36134    }
36135  }
36136
36137  on('beforeInit', () => {
36138    const {
36139      thumbs
36140    } = swiper.params;
36141    if (!thumbs || !thumbs.swiper) return;
36142    init();
36143    update(true);
36144  });
36145  on('slideChange update resize observerUpdate', () => {
36146    update();
36147  });
36148  on('setTransition', (_s, duration) => {
36149    const thumbsSwiper = swiper.thumbs.swiper;
36150    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
36151    thumbsSwiper.setTransition(duration);
36152  });
36153  on('beforeDestroy', () => {
36154    const thumbsSwiper = swiper.thumbs.swiper;
36155    if (!thumbsSwiper || thumbsSwiper.destroyed) return;
36156
36157    if (swiperCreated) {
36158      thumbsSwiper.destroy();
36159    }
36160  });
36161  Object.assign(swiper.thumbs, {
36162    init,
36163    update
36164  });
36165}
36166
36167/***/ }),
36168
vendor: 9,056 bytes, lines 36169-36480
36169/***/ "./node_modules/swiper/modules/virtual/virtual.js":
36170/*!********************************************************!*\
36171  !*** ./node_modules/swiper/modules/virtual/virtual.js ***!
36172  \********************************************************/
36173/*! exports provided: default */
36174/***/ (function(module, __webpack_exports__, __webpack_require__) {
36175
36176"use strict";
36177__webpack_require__.r(__webpack_exports__);
36178/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Virtual; });
36179/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
36180/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
36181
36182
36183function Virtual({
36184  swiper,
36185  extendParams,
36186  on,
36187  emit
36188}) {
36189  extendParams({
36190    virtual: {
36191      enabled: false,
36192      slides: [],
36193      cache: true,
36194      renderSlide: null,
36195      renderExternal: null,
36196      renderExternalUpdate: true,
36197      addSlidesBefore: 0,
36198      addSlidesAfter: 0
36199    }
36200  });
36201  let cssModeTimeout;
36202  swiper.virtual = {
36203    cache: {},
36204    from: undefined,
36205    to: undefined,
36206    slides: [],
36207    offset: 0,
36208    slidesGrid: []
36209  };
36210
36211  function renderSlide(slide, index) {
36212    const params = swiper.params.virtual;
36213
36214    if (params.cache && swiper.virtual.cache[index]) {
36215      return swiper.virtual.cache[index];
36216    }
36217
36218    const $slideEl = params.renderSlide ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.renderSlide.call(swiper, slide, index)) : Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
36219    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
36220    if (params.cache) swiper.virtual.cache[index] = $slideEl;
36221    return $slideEl;
36222  }
36223
36224  function update(force) {
36225    const {
36226      slidesPerView,
36227      slidesPerGroup,
36228      centeredSlides
36229    } = swiper.params;
36230    const {
36231      addSlidesBefore,
36232      addSlidesAfter
36233    } = swiper.params.virtual;
36234    const {
36235      from: previousFrom,
36236      to: previousTo,
36237      slides,
36238      slidesGrid: previousSlidesGrid,
36239      offset: previousOffset
36240    } = swiper.virtual;
36241
36242    if (!swiper.params.cssMode) {
36243      swiper.updateActiveIndex();
36244    }
36245
36246    const activeIndex = swiper.activeIndex || 0;
36247    let offsetProp;
36248    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
36249    let slidesAfter;
36250    let slidesBefore;
36251
36252    if (centeredSlides) {
36253      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
36254      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
36255    } else {
36256      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
36257      slidesBefore = slidesPerGroup + addSlidesBefore;
36258    }
36259
36260    const from = Math.max((activeIndex || 0) - slidesBefore, 0);
36261    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
36262    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
36263    Object.assign(swiper.virtual, {
36264      from,
36265      to,
36266      offset,
36267      slidesGrid: swiper.slidesGrid
36268    });
36269
36270    function onRendered() {
36271      swiper.updateSlides();
36272      swiper.updateProgress();
36273      swiper.updateSlidesClasses();
36274
36275      if (swiper.lazy && swiper.params.lazy.enabled) {
36276        swiper.lazy.load();
36277      }
36278
36279      emit('virtualUpdate');
36280    }
36281
36282    if (previousFrom === from && previousTo === to && !force) {
36283      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
36284        swiper.slides.css(offsetProp, `${offset}px`);
36285      }
36286
36287      swiper.updateProgress();
36288      emit('virtualUpdate');
36289      return;
36290    }
36291
36292    if (swiper.params.virtual.renderExternal) {
36293      swiper.params.virtual.renderExternal.call(swiper, {
36294        offset,
36295        from,
36296        to,
36297        slides: function getSlides() {
36298          const slidesToRender = [];
36299
36300          for (let i = from; i <= to; i += 1) {
36301            slidesToRender.push(slides[i]);
36302          }
36303
36304          return slidesToRender;
36305        }()
36306      });
36307
36308      if (swiper.params.virtual.renderExternalUpdate) {
36309        onRendered();
36310      } else {
36311        emit('virtualUpdate');
36312      }
36313
36314      return;
36315    }
36316
36317    const prependIndexes = [];
36318    const appendIndexes = [];
36319
36320    if (force) {
36321      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
36322    } else {
36323      for (let i = previousFrom; i <= previousTo; i += 1) {
36324        if (i < from || i > to) {
36325          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
36326        }
36327      }
36328    }
36329
36330    for (let i = 0; i < slides.length; i += 1) {
36331      if (i >= from && i <= to) {
36332        if (typeof previousTo === 'undefined' || force) {
36333          appendIndexes.push(i);
36334        } else {
36335          if (i > previousTo) appendIndexes.push(i);
36336          if (i < previousFrom) prependIndexes.push(i);
36337        }
36338      }
36339    }
36340
36341    appendIndexes.forEach(index => {
36342      swiper.$wrapperEl.append(renderSlide(slides[index], index));
36343    });
36344    prependIndexes.sort((a, b) => b - a).forEach(index => {
36345      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
36346    });
36347    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
36348    onRendered();
36349  }
36350
36351  function appendSlide(slides) {
36352    if (typeof slides === 'object' && 'length' in slides) {
36353      for (let i = 0; i < slides.length; i += 1) {
36354        if (slides[i]) swiper.virtual.slides.push(slides[i]);
36355      }
36356    } else {
36357      swiper.virtual.slides.push(slides);
36358    }
36359
36360    update(true);
36361  }
36362
36363  function prependSlide(slides) {
36364    const activeIndex = swiper.activeIndex;
36365    let newActiveIndex = activeIndex + 1;
36366    let numberOfNewSlides = 1;
36367
36368    if (Array.isArray(slides)) {
36369      for (let i = 0; i < slides.length; i += 1) {
36370        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
36371      }
36372
36373      newActiveIndex = activeIndex + slides.length;
36374      numberOfNewSlides = slides.length;
36375    } else {
36376      swiper.virtual.slides.unshift(slides);
36377    }
36378
36379    if (swiper.params.virtual.cache) {
36380      const cache = swiper.virtual.cache;
36381      const newCache = {};
36382      Object.keys(cache).forEach(cachedIndex => {
36383        const $cachedEl = cache[cachedIndex];
36384        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
36385
36386        if (cachedElIndex) {
36387          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
36388        }
36389
36390        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
36391      });
36392      swiper.virtual.cache = newCache;
36393    }
36394
36395    update(true);
36396    swiper.slideTo(newActiveIndex, 0);
36397  }
36398
36399  function removeSlide(slidesIndexes) {
36400    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
36401    let activeIndex = swiper.activeIndex;
36402
36403    if (Array.isArray(slidesIndexes)) {
36404      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {
36405        swiper.virtual.slides.splice(slidesIndexes[i], 1);
36406
36407        if (swiper.params.virtual.cache) {
36408          delete swiper.virtual.cache[slidesIndexes[i]];
36409        }
36410
36411        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
36412        activeIndex = Math.max(activeIndex, 0);
36413      }
36414    } else {
36415      swiper.virtual.slides.splice(slidesIndexes, 1);
36416
36417      if (swiper.params.virtual.cache) {
36418        delete swiper.virtual.cache[slidesIndexes];
36419      }
36420
36421      if (slidesIndexes < activeIndex) activeIndex -= 1;
36422      activeIndex = Math.max(activeIndex, 0);
36423    }
36424
36425    update(true);
36426    swiper.slideTo(activeIndex, 0);
36427  }
36428
36429  function removeAllSlides() {
36430    swiper.virtual.slides = [];
36431
36432    if (swiper.params.virtual.cache) {
36433      swiper.virtual.cache = {};
36434    }
36435
36436    update(true);
36437    swiper.slideTo(0, 0);
36438  }
36439
36440  on('beforeInit', () => {
36441    if (!swiper.params.virtual.enabled) return;
36442    swiper.virtual.slides = swiper.params.virtual.slides;
36443    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
36444    swiper.params.watchSlidesProgress = true;
36445    swiper.originalParams.watchSlidesProgress = true;
36446
36447    if (!swiper.params.initialSlide) {
36448      update();
36449    }
36450  });
36451  on('setTranslate', () => {
36452    if (!swiper.params.virtual.enabled) return;
36453
36454    if (swiper.params.cssMode && !swiper._immediateVirtual) {
36455      clearTimeout(cssModeTimeout);
36456      cssModeTimeout = setTimeout(() => {
36457        update();
36458      }, 100);
36459    } else {
36460      update();
36461    }
36462  });
36463  on('init update resize', () => {
36464    if (!swiper.params.virtual.enabled) return;
36465
36466    if (swiper.params.cssMode) {
36467      Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["setCSSProperty"])(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
36468    }
36469  });
36470  Object.assign(swiper.virtual, {
36471    appendSlide,
36472    prependSlide,
36473    removeSlide,
36474    removeAllSlides,
36475    update
36476  });
36477}
36478
36479/***/ }),
36480
vendor: 21,663 bytes, lines 36481-37108
36481/***/ "./node_modules/swiper/modules/zoom/zoom.js":
36482/*!**************************************************!*\
36483  !*** ./node_modules/swiper/modules/zoom/zoom.js ***!
36484  \**************************************************/
36485/*! exports provided: default */
36486/***/ (function(module, __webpack_exports__, __webpack_require__) {
36487
36488"use strict";
36489__webpack_require__.r(__webpack_exports__);
36490/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Zoom; });
36491/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
36492/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js");
36493/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js");
36494
36495
36496
36497function Zoom({
36498  swiper,
36499  extendParams,
36500  on,
36501  emit
36502}) {
36503  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
36504  extendParams({
36505    zoom: {
36506      enabled: false,
36507      maxRatio: 3,
36508      minRatio: 1,
36509      toggle: true,
36510      containerClass: 'swiper-zoom-container',
36511      zoomedSlideClass: 'swiper-slide-zoomed'
36512    }
36513  });
36514  swiper.zoom = {
36515    enabled: false
36516  };
36517  let currentScale = 1;
36518  let isScaling = false;
36519  let gesturesEnabled;
36520  let fakeGestureTouched;
36521  let fakeGestureMoved;
36522  const gesture = {
36523    $slideEl: undefined,
36524    slideWidth: undefined,
36525    slideHeight: undefined,
36526    $imageEl: undefined,
36527    $imageWrapEl: undefined,
36528    maxRatio: 3
36529  };
36530  const image = {
36531    isTouched: undefined,
36532    isMoved: undefined,
36533    currentX: undefined,
36534    currentY: undefined,
36535    minX: undefined,
36536    minY: undefined,
36537    maxX: undefined,
36538    maxY: undefined,
36539    width: undefined,
36540    height: undefined,
36541    startX: undefined,
36542    startY: undefined,
36543    touchesStart: {},
36544    touchesCurrent: {}
36545  };
36546  const velocity = {
36547    x: undefined,
36548    y: undefined,
36549    prevPositionX: undefined,
36550    prevPositionY: undefined,
36551    prevTime: undefined
36552  };
36553  let scale = 1;
36554  Object.defineProperty(swiper.zoom, 'scale', {
36555    get() {
36556      return scale;
36557    },
36558
36559    set(value) {
36560      if (scale !== value) {
36561        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;
36562        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;
36563        emit('zoomChange', value, imageEl, slideEl);
36564      }
36565
36566      scale = value;
36567    }
36568
36569  });
36570
36571  function getDistanceBetweenTouches(e) {
36572    if (e.targetTouches.length < 2) return 1;
36573    const x1 = e.targetTouches[0].pageX;
36574    const y1 = e.targetTouches[0].pageY;
36575    const x2 = e.targetTouches[1].pageX;
36576    const y2 = e.targetTouches[1].pageY;
36577    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
36578    return distance;
36579  } // Events
36580
36581
36582  function onGestureStart(e) {
36583    const support = swiper.support;
36584    const params = swiper.params.zoom;
36585    fakeGestureTouched = false;
36586    fakeGestureMoved = false;
36587
36588    if (!support.gestures) {
36589      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
36590        return;
36591      }
36592
36593      fakeGestureTouched = true;
36594      gesture.scaleStart = getDistanceBetweenTouches(e);
36595    }
36596
36597    if (!gesture.$slideEl || !gesture.$slideEl.length) {
36598      gesture.$slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`);
36599      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
36600      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
36601      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
36602      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
36603
36604      if (gesture.$imageWrapEl.length === 0) {
36605        gesture.$imageEl = undefined;
36606        return;
36607      }
36608    }
36609
36610    if (gesture.$imageEl) {
36611      gesture.$imageEl.transition(0);
36612    }
36613
36614    isScaling = true;
36615  }
36616
36617  function onGestureChange(e) {
36618    const support = swiper.support;
36619    const params = swiper.params.zoom;
36620    const zoom = swiper.zoom;
36621
36622    if (!support.gestures) {
36623      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
36624        return;
36625      }
36626
36627      fakeGestureMoved = true;
36628      gesture.scaleMove = getDistanceBetweenTouches(e);
36629    }
36630
36631    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
36632      if (e.type === 'gesturechange') onGestureStart(e);
36633      return;
36634    }
36635
36636    if (support.gestures) {
36637      zoom.scale = e.scale * currentScale;
36638    } else {
36639      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
36640    }
36641
36642    if (zoom.scale > gesture.maxRatio) {
36643      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
36644    }
36645
36646    if (zoom.scale < params.minRatio) {
36647      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
36648    }
36649
36650    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
36651  }
36652
36653  function onGestureEnd(e) {
36654    const device = swiper.device;
36655    const support = swiper.support;
36656    const params = swiper.params.zoom;
36657    const zoom = swiper.zoom;
36658
36659    if (!support.gestures) {
36660      if (!fakeGestureTouched || !fakeGestureMoved) {
36661        return;
36662      }
36663
36664      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
36665        return;
36666      }
36667
36668      fakeGestureTouched = false;
36669      fakeGestureMoved = false;
36670    }
36671
36672    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
36673    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
36674    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
36675    currentScale = zoom.scale;
36676    isScaling = false;
36677    if (zoom.scale === 1) gesture.$slideEl = undefined;
36678  }
36679
36680  function onTouchStart(e) {
36681    const device = swiper.device;
36682    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
36683    if (image.isTouched) return;
36684    if (device.android && e.cancelable) e.preventDefault();
36685    image.isTouched = true;
36686    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
36687    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
36688  }
36689
36690  function onTouchMove(e) {
36691    const zoom = swiper.zoom;
36692    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
36693    swiper.allowClick = false;
36694    if (!image.isTouched || !gesture.$slideEl) return;
36695
36696    if (!image.isMoved) {
36697      image.width = gesture.$imageEl[0].offsetWidth;
36698      image.height = gesture.$imageEl[0].offsetHeight;
36699      image.startX = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["getTranslate"])(gesture.$imageWrapEl[0], 'x') || 0;
36700      image.startY = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["getTranslate"])(gesture.$imageWrapEl[0], 'y') || 0;
36701      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
36702      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
36703      gesture.$imageWrapEl.transition(0);
36704    } // Define if we need image drag
36705
36706
36707    const scaledWidth = image.width * zoom.scale;
36708    const scaledHeight = image.height * zoom.scale;
36709    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
36710    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
36711    image.maxX = -image.minX;
36712    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
36713    image.maxY = -image.minY;
36714    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
36715    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
36716
36717    if (!image.isMoved && !isScaling) {
36718      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
36719        image.isTouched = false;
36720        return;
36721      }
36722
36723      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
36724        image.isTouched = false;
36725        return;
36726      }
36727    }
36728
36729    if (e.cancelable) {
36730      e.preventDefault();
36731    }
36732
36733    e.stopPropagation();
36734    image.isMoved = true;
36735    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
36736    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
36737
36738    if (image.currentX < image.minX) {
36739      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
36740    }
36741
36742    if (image.currentX > image.maxX) {
36743      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
36744    }
36745
36746    if (image.currentY < image.minY) {
36747      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
36748    }
36749
36750    if (image.currentY > image.maxY) {
36751      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
36752    } // Velocity
36753
36754
36755    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
36756    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
36757    if (!velocity.prevTime) velocity.prevTime = Date.now();
36758    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
36759    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
36760    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
36761    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
36762    velocity.prevPositionX = image.touchesCurrent.x;
36763    velocity.prevPositionY = image.touchesCurrent.y;
36764    velocity.prevTime = Date.now();
36765    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
36766  }
36767
36768  function onTouchEnd() {
36769    const zoom = swiper.zoom;
36770    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
36771
36772    if (!image.isTouched || !image.isMoved) {
36773      image.isTouched = false;
36774      image.isMoved = false;
36775      return;
36776    }
36777
36778    image.isTouched = false;
36779    image.isMoved = false;
36780    let momentumDurationX = 300;
36781    let momentumDurationY = 300;
36782    const momentumDistanceX = velocity.x * momentumDurationX;
36783    const newPositionX = image.currentX + momentumDistanceX;
36784    const momentumDistanceY = velocity.y * momentumDurationY;
36785    const newPositionY = image.currentY + momentumDistanceY; // Fix duration
36786
36787    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
36788    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
36789    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
36790    image.currentX = newPositionX;
36791    image.currentY = newPositionY; // Define if we need image drag
36792
36793    const scaledWidth = image.width * zoom.scale;
36794    const scaledHeight = image.height * zoom.scale;
36795    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
36796    image.maxX = -image.minX;
36797    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
36798    image.maxY = -image.minY;
36799    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
36800    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
36801    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
36802  }
36803
36804  function onTransitionEnd() {
36805    const zoom = swiper.zoom;
36806
36807    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
36808      if (gesture.$imageEl) {
36809        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
36810      }
36811
36812      if (gesture.$imageWrapEl) {
36813        gesture.$imageWrapEl.transform('translate3d(0,0,0)');
36814      }
36815
36816      zoom.scale = 1;
36817      currentScale = 1;
36818      gesture.$slideEl = undefined;
36819      gesture.$imageEl = undefined;
36820      gesture.$imageWrapEl = undefined;
36821    }
36822  }
36823
36824  function zoomIn(e) {
36825    const zoom = swiper.zoom;
36826    const params = swiper.params.zoom;
36827
36828    if (!gesture.$slideEl) {
36829      if (e && e.target) {
36830        gesture.$slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`);
36831      }
36832
36833      if (!gesture.$slideEl) {
36834        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
36835          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
36836        } else {
36837          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
36838        }
36839      }
36840
36841      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
36842      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
36843    }
36844
36845    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
36846
36847    if (swiper.params.cssMode) {
36848      swiper.wrapperEl.style.overflow = 'hidden';
36849      swiper.wrapperEl.style.touchAction = 'none';
36850    }
36851
36852    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
36853    let touchX;
36854    let touchY;
36855    let offsetX;
36856    let offsetY;
36857    let diffX;
36858    let diffY;
36859    let translateX;
36860    let translateY;
36861    let imageWidth;
36862    let imageHeight;
36863    let scaledWidth;
36864    let scaledHeight;
36865    let translateMinX;
36866    let translateMinY;
36867    let translateMaxX;
36868    let translateMaxY;
36869    let slideWidth;
36870    let slideHeight;
36871
36872    if (typeof image.touchesStart.x === 'undefined' && e) {
36873      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
36874      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
36875    } else {
36876      touchX = image.touchesStart.x;
36877      touchY = image.touchesStart.y;
36878    }
36879
36880    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
36881    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
36882
36883    if (e) {
36884      slideWidth = gesture.$slideEl[0].offsetWidth;
36885      slideHeight = gesture.$slideEl[0].offsetHeight;
36886      offsetX = gesture.$slideEl.offset().left + window.scrollX;
36887      offsetY = gesture.$slideEl.offset().top + window.scrollY;
36888      diffX = offsetX + slideWidth / 2 - touchX;
36889      diffY = offsetY + slideHeight / 2 - touchY;
36890      imageWidth = gesture.$imageEl[0].offsetWidth;
36891      imageHeight = gesture.$imageEl[0].offsetHeight;
36892      scaledWidth = imageWidth * zoom.scale;
36893      scaledHeight = imageHeight * zoom.scale;
36894      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
36895      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
36896      translateMaxX = -translateMinX;
36897      translateMaxY = -translateMinY;
36898      translateX = diffX * zoom.scale;
36899      translateY = diffY * zoom.scale;
36900
36901      if (translateX < translateMinX) {
36902        translateX = translateMinX;
36903      }
36904
36905      if (translateX > translateMaxX) {
36906        translateX = translateMaxX;
36907      }
36908
36909      if (translateY < translateMinY) {
36910        translateY = translateMinY;
36911      }
36912
36913      if (translateY > translateMaxY) {
36914        translateY = translateMaxY;
36915      }
36916    } else {
36917      translateX = 0;
36918      translateY = 0;
36919    }
36920
36921    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
36922    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
36923  }
36924
36925  function zoomOut() {
36926    const zoom = swiper.zoom;
36927    const params = swiper.params.zoom;
36928
36929    if (!gesture.$slideEl) {
36930      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
36931        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
36932      } else {
36933        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
36934      }
36935
36936      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
36937      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);
36938    }
36939
36940    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
36941
36942    if (swiper.params.cssMode) {
36943      swiper.wrapperEl.style.overflow = '';
36944      swiper.wrapperEl.style.touchAction = '';
36945    }
36946
36947    zoom.scale = 1;
36948    currentScale = 1;
36949    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
36950    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
36951    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
36952    gesture.$slideEl = undefined;
36953  } // Toggle Zoom
36954
36955
36956  function zoomToggle(e) {
36957    const zoom = swiper.zoom;
36958
36959    if (zoom.scale && zoom.scale !== 1) {
36960      // Zoom Out
36961      zoomOut();
36962    } else {
36963      // Zoom In
36964      zoomIn(e);
36965    }
36966  }
36967
36968  function getListeners() {
36969    const support = swiper.support;
36970    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
36971      passive: true,
36972      capture: false
36973    } : false;
36974    const activeListenerWithCapture = support.passiveListener ? {
36975      passive: false,
36976      capture: true
36977    } : true;
36978    return {
36979      passiveListener,
36980      activeListenerWithCapture
36981    };
36982  }
36983
36984  function getSlideSelector() {
36985    return `.${swiper.params.slideClass}`;
36986  }
36987
36988  function toggleGestures(method) {
36989    const {
36990      passiveListener
36991    } = getListeners();
36992    const slideSelector = getSlideSelector();
36993    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);
36994    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);
36995    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);
36996  }
36997
36998  function enableGestures() {
36999    if (gesturesEnabled) return;
37000    gesturesEnabled = true;
37001    toggleGestures('on');
37002  }
37003
37004  function disableGestures() {
37005    if (!gesturesEnabled) return;
37006    gesturesEnabled = false;
37007    toggleGestures('off');
37008  } // Attach/Detach Events
37009
37010
37011  function enable() {
37012    const zoom = swiper.zoom;
37013    if (zoom.enabled) return;
37014    zoom.enabled = true;
37015    const support = swiper.support;
37016    const {
37017      passiveListener,
37018      activeListenerWithCapture
37019    } = getListeners();
37020    const slideSelector = getSlideSelector(); // Scale image
37021
37022    if (support.gestures) {
37023      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);
37024      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);
37025    } else if (swiper.touchEvents.start === 'touchstart') {
37026      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
37027      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
37028      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
37029
37030      if (swiper.touchEvents.cancel) {
37031        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
37032      }
37033    } // Move image
37034
37035
37036    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
37037  }
37038
37039  function disable() {
37040    const zoom = swiper.zoom;
37041    if (!zoom.enabled) return;
37042    const support = swiper.support;
37043    zoom.enabled = false;
37044    const {
37045      passiveListener,
37046      activeListenerWithCapture
37047    } = getListeners();
37048    const slideSelector = getSlideSelector(); // Scale image
37049
37050    if (support.gestures) {
37051      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);
37052      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);
37053    } else if (swiper.touchEvents.start === 'touchstart') {
37054      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
37055      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
37056      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
37057
37058      if (swiper.touchEvents.cancel) {
37059        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
37060      }
37061    } // Move image
37062
37063
37064    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
37065  }
37066
37067  on('init', () => {
37068    if (swiper.params.zoom.enabled) {
37069      enable();
37070    }
37071  });
37072  on('destroy', () => {
37073    disable();
37074  });
37075  on('touchStart', (_s, e) => {
37076    if (!swiper.zoom.enabled) return;
37077    onTouchStart(e);
37078  });
37079  on('touchEnd', (_s, e) => {
37080    if (!swiper.zoom.enabled) return;
37081    onTouchEnd(e);
37082  });
37083  on('doubleTap', (_s, e) => {
37084    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
37085      zoomToggle(e);
37086    }
37087  });
37088  on('transitionEnd', () => {
37089    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
37090      onTransitionEnd();
37091    }
37092  });
37093  on('slideChange', () => {
37094    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
37095      onTransitionEnd();
37096    }
37097  });
37098  Object.assign(swiper.zoom, {
37099    enable,
37100    disable,
37101    in: zoomIn,
37102    out: zoomOut,
37103    toggle: zoomToggle
37104  });
37105}
37106
37107/***/ }),
37108
vendor: 707 bytes, lines 37109-37125
37109/***/ "./node_modules/swiper/shared/classes-to-selector.js":
37110/*!***********************************************************!*\
37111  !*** ./node_modules/swiper/shared/classes-to-selector.js ***!
37112  \***********************************************************/
37113/*! exports provided: default */
37114/***/ (function(module, __webpack_exports__, __webpack_require__) {
37115
37116"use strict";
37117__webpack_require__.r(__webpack_exports__);
37118/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return classesToSelector; });
37119function classesToSelector(classes = '') {
37120  return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line
37121  .replace(/ /g, '.')}`;
37122}
37123
37124/***/ }),
37125
vendor: 1,408 bytes, lines 37126-37162
37126/***/ "./node_modules/swiper/shared/create-element-if-not-defined.js":
37127/*!*********************************************************************!*\
37128  !*** ./node_modules/swiper/shared/create-element-if-not-defined.js ***!
37129  \*********************************************************************/
37130/*! exports provided: default */
37131/***/ (function(module, __webpack_exports__, __webpack_require__) {
37132
37133"use strict";
37134__webpack_require__.r(__webpack_exports__);
37135/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createElementIfNotDefined; });
37136/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
37137
37138function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
37139  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
37140
37141  if (swiper.params.createElements) {
37142    Object.keys(checkProps).forEach(key => {
37143      if (!params[key] && params.auto === true) {
37144        let element = swiper.$el.children(`.${checkProps[key]}`)[0];
37145
37146        if (!element) {
37147          element = document.createElement('div');
37148          element.className = checkProps[key];
37149          swiper.$el.append(element);
37150        }
37151
37152        params[key] = element;
37153        originalParams[key] = element;
37154      }
37155    });
37156  }
37157
37158  return params;
37159}
37160
37161/***/ }),
37162
vendor: 1,179 bytes, lines 37163-37189
37163/***/ "./node_modules/swiper/shared/create-shadow.js":
37164/*!*****************************************************!*\
37165  !*** ./node_modules/swiper/shared/create-shadow.js ***!
37166  \*****************************************************/
37167/*! exports provided: default */
37168/***/ (function(module, __webpack_exports__, __webpack_require__) {
37169
37170"use strict";
37171__webpack_require__.r(__webpack_exports__);
37172/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createShadow; });
37173/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ "./node_modules/swiper/shared/dom.js");
37174
37175function createShadow(params, $slideEl, side) {
37176  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;
37177  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;
37178  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);
37179
37180  if (!$shadowEl.length) {
37181    $shadowEl = Object(_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow${side ? `-${side}` : ''}"></div>`);
37182    $shadowContainer.append($shadowEl);
37183  }
37184
37185  return $shadowEl;
37186}
37187
37188/***/ }),
37189
vendor: 2,816 bytes, lines 37190-37248
37190/***/ "./node_modules/swiper/shared/dom.js":
37191/*!*******************************************!*\
37192  !*** ./node_modules/swiper/shared/dom.js ***!
37193  \*******************************************/
37194/*! exports provided: default */
37195/***/ (function(module, __webpack_exports__, __webpack_require__) {
37196
37197"use strict";
37198__webpack_require__.r(__webpack_exports__);
37199/* harmony import */ var dom7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7 */ "./node_modules/dom7/dom7.esm.js");
37200
37201const Methods = {
37202  addClass: dom7__WEBPACK_IMPORTED_MODULE_0__["addClass"],
37203  removeClass: dom7__WEBPACK_IMPORTED_MODULE_0__["removeClass"],
37204  hasClass: dom7__WEBPACK_IMPORTED_MODULE_0__["hasClass"],
37205  toggleClass: dom7__WEBPACK_IMPORTED_MODULE_0__["toggleClass"],
37206  attr: dom7__WEBPACK_IMPORTED_MODULE_0__["attr"],
37207  removeAttr: dom7__WEBPACK_IMPORTED_MODULE_0__["removeAttr"],
37208  transform: dom7__WEBPACK_IMPORTED_MODULE_0__["transform"],
37209  transition: dom7__WEBPACK_IMPORTED_MODULE_0__["transition"],
37210  on: dom7__WEBPACK_IMPORTED_MODULE_0__["on"],
37211  off: dom7__WEBPACK_IMPORTED_MODULE_0__["off"],
37212  trigger: dom7__WEBPACK_IMPORTED_MODULE_0__["trigger"],
37213  transitionEnd: dom7__WEBPACK_IMPORTED_MODULE_0__["transitionEnd"],
37214  outerWidth: dom7__WEBPACK_IMPORTED_MODULE_0__["outerWidth"],
37215  outerHeight: dom7__WEBPACK_IMPORTED_MODULE_0__["outerHeight"],
37216  styles: dom7__WEBPACK_IMPORTED_MODULE_0__["styles"],
37217  offset: dom7__WEBPACK_IMPORTED_MODULE_0__["offset"],
37218  css: dom7__WEBPACK_IMPORTED_MODULE_0__["css"],
37219  each: dom7__WEBPACK_IMPORTED_MODULE_0__["each"],
37220  html: dom7__WEBPACK_IMPORTED_MODULE_0__["html"],
37221  text: dom7__WEBPACK_IMPORTED_MODULE_0__["text"],
37222  is: dom7__WEBPACK_IMPORTED_MODULE_0__["is"],
37223  index: dom7__WEBPACK_IMPORTED_MODULE_0__["index"],
37224  eq: dom7__WEBPACK_IMPORTED_MODULE_0__["eq"],
37225  append: dom7__WEBPACK_IMPORTED_MODULE_0__["append"],
37226  prepend: dom7__WEBPACK_IMPORTED_MODULE_0__["prepend"],
37227  next: dom7__WEBPACK_IMPORTED_MODULE_0__["next"],
37228  nextAll: dom7__WEBPACK_IMPORTED_MODULE_0__["nextAll"],
37229  prev: dom7__WEBPACK_IMPORTED_MODULE_0__["prev"],
37230  prevAll: dom7__WEBPACK_IMPORTED_MODULE_0__["prevAll"],
37231  parent: dom7__WEBPACK_IMPORTED_MODULE_0__["parent"],
37232  parents: dom7__WEBPACK_IMPORTED_MODULE_0__["parents"],
37233  closest: dom7__WEBPACK_IMPORTED_MODULE_0__["closest"],
37234  find: dom7__WEBPACK_IMPORTED_MODULE_0__["find"],
37235  children: dom7__WEBPACK_IMPORTED_MODULE_0__["children"],
37236  filter: dom7__WEBPACK_IMPORTED_MODULE_0__["filter"],
37237  remove: dom7__WEBPACK_IMPORTED_MODULE_0__["remove"]
37238};
37239Object.keys(Methods).forEach(methodName => {
37240  Object.defineProperty(dom7__WEBPACK_IMPORTED_MODULE_0__["$"].fn, methodName, {
37241    value: Methods[methodName],
37242    writable: true
37243  });
37244});
37245/* harmony default export */ __webpack_exports__["default"] = (dom7__WEBPACK_IMPORTED_MODULE_0__["$"]);
37246
37247/***/ }),
37248
vendor: 2,306 bytes, lines 37249-37323
37249/***/ "./node_modules/swiper/shared/effect-init.js":
37250/*!***************************************************!*\
37251  !*** ./node_modules/swiper/shared/effect-init.js ***!
37252  \***************************************************/
37253/*! exports provided: default */
37254/***/ (function(module, __webpack_exports__, __webpack_require__) {
37255
37256"use strict";
37257__webpack_require__.r(__webpack_exports__);
37258/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return effectInit; });
37259function effectInit(params) {
37260  const {
37261    effect,
37262    swiper,
37263    on,
37264    setTranslate,
37265    setTransition,
37266    overwriteParams,
37267    perspective,
37268    recreateShadows,
37269    getEffectParams
37270  } = params;
37271  on('beforeInit', () => {
37272    if (swiper.params.effect !== effect) return;
37273    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
37274
37275    if (perspective && perspective()) {
37276      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
37277    }
37278
37279    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
37280    Object.assign(swiper.params, overwriteParamsResult);
37281    Object.assign(swiper.originalParams, overwriteParamsResult);
37282  });
37283  on('setTranslate', () => {
37284    if (swiper.params.effect !== effect) return;
37285    setTranslate();
37286  });
37287  on('setTransition', (_s, duration) => {
37288    if (swiper.params.effect !== effect) return;
37289    setTransition(duration);
37290  });
37291  on('transitionEnd', () => {
37292    if (swiper.params.effect !== effect) return;
37293
37294    if (recreateShadows) {
37295      if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows
37296
37297      swiper.slides.each(slideEl => {
37298        const $slideEl = swiper.$(slideEl);
37299        $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();
37300      }); // create new one
37301
37302      recreateShadows();
37303    }
37304  });
37305  let requireUpdateOnVirtual;
37306  on('virtualUpdate', () => {
37307    if (swiper.params.effect !== effect) return;
37308
37309    if (!swiper.slides.length) {
37310      requireUpdateOnVirtual = true;
37311    }
37312
37313    requestAnimationFrame(() => {
37314      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
37315        setTranslate();
37316        requireUpdateOnVirtual = false;
37317      }
37318    });
37319  });
37320}
37321
37322/***/ }),
37323
vendor: 784 bytes, lines 37324-37346
37324/***/ "./node_modules/swiper/shared/effect-target.js":
37325/*!*****************************************************!*\
37326  !*** ./node_modules/swiper/shared/effect-target.js ***!
37327  \*****************************************************/
37328/*! exports provided: default */
37329/***/ (function(module, __webpack_exports__, __webpack_require__) {
37330
37331"use strict";
37332__webpack_require__.r(__webpack_exports__);
37333/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return effectTarget; });
37334function effectTarget(effectParams, $slideEl) {
37335  if (effectParams.transformEl) {
37336    return $slideEl.find(effectParams.transformEl).css({
37337      'backface-visibility': 'hidden',
37338      '-webkit-backface-visibility': 'hidden'
37339    });
37340  }
37341
37342  return $slideEl;
37343}
37344
37345/***/ }),
37346
vendor: 1,501 bytes, lines 37347-37394
37347/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.js":
37348/*!*********************************************************************!*\
37349  !*** ./node_modules/swiper/shared/effect-virtual-transition-end.js ***!
37350  \*********************************************************************/
37351/*! exports provided: default */
37352/***/ (function(module, __webpack_exports__, __webpack_require__) {
37353
37354"use strict";
37355__webpack_require__.r(__webpack_exports__);
37356/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return effectVirtualTransitionEnd; });
37357function effectVirtualTransitionEnd({
37358  swiper,
37359  duration,
37360  transformEl,
37361  allSlides
37362}) {
37363  const {
37364    slides,
37365    activeIndex,
37366    $wrapperEl
37367  } = swiper;
37368
37369  if (swiper.params.virtualTranslate && duration !== 0) {
37370    let eventTriggered = false;
37371    let $transitionEndTarget;
37372
37373    if (allSlides) {
37374      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;
37375    } else {
37376      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);
37377    }
37378
37379    $transitionEndTarget.transitionEnd(() => {
37380      if (eventTriggered) return;
37381      if (!swiper || swiper.destroyed) return;
37382      eventTriggered = true;
37383      swiper.animating = false;
37384      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];
37385
37386      for (let i = 0; i < triggerEvents.length; i += 1) {
37387        $wrapperEl.trigger(triggerEvents[i]);
37388      }
37389    });
37390  }
37391}
37392
37393/***/ }),
37394
vendor: 1,216 bytes, lines 37395-37434
37395/***/ "./node_modules/swiper/shared/get-browser.js":
37396/*!***************************************************!*\
37397  !*** ./node_modules/swiper/shared/get-browser.js ***!
37398  \***************************************************/
37399/*! exports provided: getBrowser */
37400/***/ (function(module, __webpack_exports__, __webpack_require__) {
37401
37402"use strict";
37403__webpack_require__.r(__webpack_exports__);
37404/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBrowser", function() { return getBrowser; });
37405/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
37406
37407let browser;
37408
37409function calcBrowser() {
37410  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
37411
37412  function isSafari() {
37413    const ua = window.navigator.userAgent.toLowerCase();
37414    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
37415  }
37416
37417  return {
37418    isSafari: isSafari(),
37419    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
37420  };
37421}
37422
37423function getBrowser() {
37424  if (!browser) {
37425    browser = calcBrowser();
37426  }
37427
37428  return browser;
37429}
37430
37431
37432
37433/***/ }),
37434
vendor: 2,395 bytes, lines 37435-37506
37435/***/ "./node_modules/swiper/shared/get-device.js":
37436/*!**************************************************!*\
37437  !*** ./node_modules/swiper/shared/get-device.js ***!
37438  \**************************************************/
37439/*! exports provided: getDevice */
37440/***/ (function(module, __webpack_exports__, __webpack_require__) {
37441
37442"use strict";
37443__webpack_require__.r(__webpack_exports__);
37444/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDevice", function() { return getDevice; });
37445/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
37446/* harmony import */ var _get_support_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-support.js */ "./node_modules/swiper/shared/get-support.js");
37447
37448
37449let deviceCached;
37450
37451function calcDevice({
37452  userAgent
37453} = {}) {
37454  const support = Object(_get_support_js__WEBPACK_IMPORTED_MODULE_1__["getSupport"])();
37455  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
37456  const platform = window.navigator.platform;
37457  const ua = userAgent || window.navigator.userAgent;
37458  const device = {
37459    ios: false,
37460    android: false
37461  };
37462  const screenWidth = window.screen.width;
37463  const screenHeight = window.screen.height;
37464  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line
37465
37466  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
37467  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
37468  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
37469  const windows = platform === 'Win32';
37470  let macos = platform === 'MacIntel'; // iPadOs 13 fix
37471
37472  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
37473
37474  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
37475    ipad = ua.match(/(Version)\/([\d.]+)/);
37476    if (!ipad) ipad = [0, 1, '13_0_0'];
37477    macos = false;
37478  } // Android
37479
37480
37481  if (android && !windows) {
37482    device.os = 'android';
37483    device.android = true;
37484  }
37485
37486  if (ipad || iphone || ipod) {
37487    device.os = 'ios';
37488    device.ios = true;
37489  } // Export object
37490
37491
37492  return device;
37493}
37494
37495function getDevice(overrides = {}) {
37496  if (!deviceCached) {
37497    deviceCached = calcDevice(overrides);
37498  }
37499
37500  return deviceCached;
37501}
37502
37503
37504
37505/***/ }),
37506
vendor: 1,724 bytes, lines 37507-37561
37507/***/ "./node_modules/swiper/shared/get-support.js":
37508/*!***************************************************!*\
37509  !*** ./node_modules/swiper/shared/get-support.js ***!
37510  \***************************************************/
37511/*! exports provided: getSupport */
37512/***/ (function(module, __webpack_exports__, __webpack_require__) {
37513
37514"use strict";
37515__webpack_require__.r(__webpack_exports__);
37516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSupport", function() { return getSupport; });
37517/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
37518
37519let support;
37520
37521function calcSupport() {
37522  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
37523  const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])();
37524  return {
37525    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,
37526    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
37527    passiveListener: function checkPassiveListener() {
37528      let supportsPassive = false;
37529
37530      try {
37531        const opts = Object.defineProperty({}, 'passive', {
37532          // eslint-disable-next-line
37533          get() {
37534            supportsPassive = true;
37535          }
37536
37537        });
37538        window.addEventListener('testPassiveListener', null, opts);
37539      } catch (e) {// No support
37540      }
37541
37542      return supportsPassive;
37543    }(),
37544    gestures: function checkGestures() {
37545      return 'ongesturestart' in window;
37546    }()
37547  };
37548}
37549
37550function getSupport() {
37551  if (!support) {
37552    support = calcSupport();
37553  }
37554
37555  return support;
37556}
37557
37558
37559
37560/***/ }),
37561
vendor: 7,499 bytes, lines 37562-37780
37562/***/ "./node_modules/swiper/shared/utils.js":
37563/*!*********************************************!*\
37564  !*** ./node_modules/swiper/shared/utils.js ***!
37565  \*********************************************/
37566/*! exports provided: animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty */
37567/***/ (function(module, __webpack_exports__, __webpack_require__) {
37568
37569"use strict";
37570__webpack_require__.r(__webpack_exports__);
37571/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animateCSSModeScroll", function() { return animateCSSModeScroll; });
37572/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteProps", function() { return deleteProps; });
37573/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextTick", function() { return nextTick; });
37574/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "now", function() { return now; });
37575/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTranslate", function() { return getTranslate; });
37576/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });
37577/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; });
37578/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getComputedStyle", function() { return getComputedStyle; });
37579/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setCSSProperty", function() { return setCSSProperty; });
37580/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js");
37581
37582
37583function deleteProps(obj) {
37584  const object = obj;
37585  Object.keys(object).forEach(key => {
37586    try {
37587      object[key] = null;
37588    } catch (e) {// no getter for object
37589    }
37590
37591    try {
37592      delete object[key];
37593    } catch (e) {// something got wrong
37594    }
37595  });
37596}
37597
37598function nextTick(callback, delay = 0) {
37599  return setTimeout(callback, delay);
37600}
37601
37602function now() {
37603  return Date.now();
37604}
37605
37606function getComputedStyle(el) {
37607  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
37608  let style;
37609
37610  if (window.getComputedStyle) {
37611    style = window.getComputedStyle(el, null);
37612  }
37613
37614  if (!style && el.currentStyle) {
37615    style = el.currentStyle;
37616  }
37617
37618  if (!style) {
37619    style = el.style;
37620  }
37621
37622  return style;
37623}
37624
37625function getTranslate(el, axis = 'x') {
37626  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
37627  let matrix;
37628  let curTransform;
37629  let transformMatrix;
37630  const curStyle = getComputedStyle(el, null);
37631
37632  if (window.WebKitCSSMatrix) {
37633    curTransform = curStyle.transform || curStyle.webkitTransform;
37634
37635    if (curTransform.split(',').length > 6) {
37636      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');
37637    } // Some old versions of Webkit choke when 'none' is passed; pass
37638    // empty string instead in this case
37639
37640
37641    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
37642  } else {
37643    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
37644    matrix = transformMatrix.toString().split(',');
37645  }
37646
37647  if (axis === 'x') {
37648    // Latest Chrome and webkits Fix
37649    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix
37650    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers
37651    else curTransform = parseFloat(matrix[4]);
37652  }
37653
37654  if (axis === 'y') {
37655    // Latest Chrome and webkits Fix
37656    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix
37657    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers
37658    else curTransform = parseFloat(matrix[5]);
37659  }
37660
37661  return curTransform || 0;
37662}
37663
37664function isObject(o) {
37665  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
37666}
37667
37668function isNode(node) {
37669  // eslint-disable-next-line
37670  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {
37671    return node instanceof HTMLElement;
37672  }
37673
37674  return node && (node.nodeType === 1 || node.nodeType === 11);
37675}
37676
37677function extend(...args) {
37678  const to = Object(args[0]);
37679  const noExtend = ['__proto__', 'constructor', 'prototype'];
37680
37681  for (let i = 1; i < args.length; i += 1) {
37682    const nextSource = args[i];
37683
37684    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
37685      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
37686
37687      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
37688        const nextKey = keysArray[nextIndex];
37689        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
37690
37691        if (desc !== undefined && desc.enumerable) {
37692          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
37693            if (nextSource[nextKey].__swiper__) {
37694              to[nextKey] = nextSource[nextKey];
37695            } else {
37696              extend(to[nextKey], nextSource[nextKey]);
37697            }
37698          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
37699            to[nextKey] = {};
37700
37701            if (nextSource[nextKey].__swiper__) {
37702              to[nextKey] = nextSource[nextKey];
37703            } else {
37704              extend(to[nextKey], nextSource[nextKey]);
37705            }
37706          } else {
37707            to[nextKey] = nextSource[nextKey];
37708          }
37709        }
37710      }
37711    }
37712  }
37713
37714  return to;
37715}
37716
37717function setCSSProperty(el, varName, varValue) {
37718  el.style.setProperty(varName, varValue);
37719}
37720
37721function animateCSSModeScroll({
37722  swiper,
37723  targetPosition,
37724  side
37725}) {
37726  const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])();
37727  const startPosition = -swiper.translate;
37728  let startTime = null;
37729  let time;
37730  const duration = swiper.params.speed;
37731  swiper.wrapperEl.style.scrollSnapType = 'none';
37732  window.cancelAnimationFrame(swiper.cssModeFrameID);
37733  const dir = targetPosition > startPosition ? 'next' : 'prev';
37734
37735  const isOutOfBound = (current, target) => {
37736    return dir === 'next' && current >= target || dir === 'prev' && current <= target;
37737  };
37738
37739  const animate = () => {
37740    time = new Date().getTime();
37741
37742    if (startTime === null) {
37743      startTime = time;
37744    }
37745
37746    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
37747    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
37748    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
37749
37750    if (isOutOfBound(currentPosition, targetPosition)) {
37751      currentPosition = targetPosition;
37752    }
37753
37754    swiper.wrapperEl.scrollTo({
37755      [side]: currentPosition
37756    });
37757
37758    if (isOutOfBound(currentPosition, targetPosition)) {
37759      swiper.wrapperEl.style.overflow = 'hidden';
37760      swiper.wrapperEl.style.scrollSnapType = '';
37761      setTimeout(() => {
37762        swiper.wrapperEl.style.overflow = '';
37763        swiper.wrapperEl.scrollTo({
37764          [side]: currentPosition
37765        });
37766      });
37767      window.cancelAnimationFrame(swiper.cssModeFrameID);
37768      return;
37769    }
37770
37771    swiper.cssModeFrameID = window.requestAnimationFrame(animate);
37772  };
37773
37774  animate();
37775}
37776
37777
37778
37779/***/ }),
37780
vendor: 10,794 bytes, lines 37781-37906
37781/***/ "./node_modules/swiper/swiper.esm.js":
37782/*!*******************************************!*\
37783  !*** ./node_modules/swiper/swiper.esm.js ***!
37784  \*******************************************/
37785/*! exports provided: Swiper, default, Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards */
37786/***/ (function(module, __webpack_exports__, __webpack_require__) {
37787
37788"use strict";
37789__webpack_require__.r(__webpack_exports__);
37790/* harmony import */ var _core_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/core.js */ "./node_modules/swiper/core/core.js");
37791/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Swiper", function() { return _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
37792
37793/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; });
37794
37795/* harmony import */ var _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual/virtual.js */ "./node_modules/swiper/modules/virtual/virtual.js");
37796/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Virtual", function() { return _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__["default"]; });
37797
37798/* harmony import */ var _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard/keyboard.js */ "./node_modules/swiper/modules/keyboard/keyboard.js");
37799/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__["default"]; });
37800
37801/* harmony import */ var _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel/mousewheel.js */ "./node_modules/swiper/modules/mousewheel/mousewheel.js");
37802/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Mousewheel", function() { return _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__["default"]; });
37803
37804/* harmony import */ var _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation/navigation.js */ "./node_modules/swiper/modules/navigation/navigation.js");
37805/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Navigation", function() { return _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"]; });
37806
37807/* harmony import */ var _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination/pagination.js */ "./node_modules/swiper/modules/pagination/pagination.js");
37808/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Pagination", function() { return _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__["default"]; });
37809
37810/* harmony import */ var _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar/scrollbar.js */ "./node_modules/swiper/modules/scrollbar/scrollbar.js");
37811/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scrollbar", function() { return _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__["default"]; });
37812
37813/* harmony import */ var _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax/parallax.js */ "./node_modules/swiper/modules/parallax/parallax.js");
37814/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Parallax", function() { return _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__["default"]; });
37815
37816/* harmony import */ var _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom/zoom.js */ "./node_modules/swiper/modules/zoom/zoom.js");
37817/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Zoom", function() { return _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__["default"]; });
37818
37819/* harmony import */ var _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/lazy/lazy.js */ "./node_modules/swiper/modules/lazy/lazy.js");
37820/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Lazy", function() { return _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__["default"]; });
37821
37822/* harmony import */ var _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/controller/controller.js */ "./node_modules/swiper/modules/controller/controller.js");
37823/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Controller", function() { return _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__["default"]; });
37824
37825/* harmony import */ var _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/a11y/a11y.js */ "./node_modules/swiper/modules/a11y/a11y.js");
37826/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "A11y", function() { return _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__["default"]; });
37827
37828/* harmony import */ var _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/history/history.js */ "./node_modules/swiper/modules/history/history.js");
37829/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "History", function() { return _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__["default"]; });
37830
37831/* harmony import */ var _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/hash-navigation/hash-navigation.js */ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js");
37832/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HashNavigation", function() { return _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__["default"]; });
37833
37834/* harmony import */ var _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/autoplay/autoplay.js */ "./node_modules/swiper/modules/autoplay/autoplay.js");
37835/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Autoplay", function() { return _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__["default"]; });
37836
37837/* harmony import */ var _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/thumbs/thumbs.js */ "./node_modules/swiper/modules/thumbs/thumbs.js");
37838/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Thumbs", function() { return _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__["default"]; });
37839
37840/* harmony import */ var _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/free-mode/free-mode.js */ "./node_modules/swiper/modules/free-mode/free-mode.js");
37841/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FreeMode", function() { return _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__["default"]; });
37842
37843/* harmony import */ var _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/grid/grid.js */ "./node_modules/swiper/modules/grid/grid.js");
37844/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__["default"]; });
37845
37846/* harmony import */ var _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/manipulation/manipulation.js */ "./node_modules/swiper/modules/manipulation/manipulation.js");
37847/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Manipulation", function() { return _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__["default"]; });
37848
37849/* harmony import */ var _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-fade/effect-fade.js */ "./node_modules/swiper/modules/effect-fade/effect-fade.js");
37850/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectFade", function() { return _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__["default"]; });
37851
37852/* harmony import */ var _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-cube/effect-cube.js */ "./node_modules/swiper/modules/effect-cube/effect-cube.js");
37853/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCube", function() { return _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__["default"]; });
37854
37855/* harmony import */ var _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-flip/effect-flip.js */ "./node_modules/swiper/modules/effect-flip/effect-flip.js");
37856/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectFlip", function() { return _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__["default"]; });
37857
37858/* harmony import */ var _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-coverflow/effect-coverflow.js */ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js");
37859/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCoverflow", function() { return _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__["default"]; });
37860
37861/* harmony import */ var _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-creative/effect-creative.js */ "./node_modules/swiper/modules/effect-creative/effect-creative.js");
37862/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCreative", function() { return _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__["default"]; });
37863
37864/* harmony import */ var _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/effect-cards/effect-cards.js */ "./node_modules/swiper/modules/effect-cards/effect-cards.js");
37865/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCards", function() { return _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__["default"]; });
37866
37867/**
37868 * Swiper 8.4.6
37869 * Most modern mobile touch slider and framework with hardware accelerated transitions
37870 * https://swiperjs.com
37871 *
37872 * Copyright 2014-2023 Vladimir Kharlampidi
37873 *
37874 * Released under the MIT License
37875 *
37876 * Released on: January 17, 2023
37877 */
37878
37879
37880
37881
37882
37883
37884
37885
37886
37887
37888
37889
37890
37891
37892
37893
37894
37895
37896
37897
37898
37899
37900
37901
37902
37903
37904
37905/***/ }),
37906
vendor: 721 bytes, lines 37907-37936
37907/***/ "./node_modules/webpack/buildin/global.js":
37908/*!***********************************!*\
37909  !*** (webpack)/buildin/global.js ***!
37910  \***********************************/
37911/*! no static exports found */
37912/***/ (function(module, exports) {
37913
37914var g;
37915
37916// This works in non-strict mode
37917g = (function() {
37918	return this;
37919})();
37920
37921try {
37922	// This works if eval is allowed (see CSP)
37923	g = g || new Function("return this")();
37924} catch (e) {
37925	// This works if the window reference is available
37926	if (typeof window === "object") g = window;
37927}
37928
37929// g can still be undefined, but nothing to do about it...
37930// We return undefined, instead of nothing here, so it's
37931// easier to handle this case. if(!global) { ...}
37932
37933module.exports = g;
37934
37935
37936/***/ })
37936,
37937
37938/***/ 0:
37939/*!***********************************************************!*\
37940  !*** multi ./assets/js/theme.js ./assets/scss/style.scss ***!
37941  \***********************************************************/
37942/*! no static exports found */
37943/***/ (function(module, exports, __webpack_require__) {
37944
37945__webpack_require__(/*! /app/wp-content/themes/vives/assets/js/theme.js */"./assets/js/theme.js");
37946module.exports = __webpack_require__(/*! /app/wp-content/themes/vives/assets/scss/style.scss */"./assets/scss/style.scss");
37947
37948
37949/***/ })
37950
37951/******/ });
37952//# sourceMappingURL=theme.min.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.